Text art renderer for the terminal.
Tip
See your art rendered on the web at tart.sh
Follow the instructions at rustup.rs to install Rust.
Then, you can install tart using Cargo:
cargo install --git https://github.com/ScriptSmith/tart.gitCreate a TOML file with the following structure:
cat <<EOF > art.toml
design = '''
abc
def
ghi
'''
styles = '''
rgb
RGB
YPO
'''
[style_map]
[style_map.r]
foreground = "Red"
[style_map.g]
foreground = "Green"
[style_map.b]
foreground = "Blue"
[style_map.R]
foreground = "Red"
styles = ["Bold"]
[style_map.G]
foreground = "Green"
styles = ["Bold"]
[style_map.B]
foreground = "Blue"
styles = ["Bold"]
[style_map.Y]
foreground.RGB = [255, 255, 0]
styles = ["Italic"]
[style_map.P]
foreground.RGB = [255, 0, 255]
styles = ["Italic"]
[style_map.O]
foreground.RGB = [255, 165, 0]
styles = ["Italic"]
EOFThen run the following command to render the text art:
tart render art.tomlThe output should look like this:
See the help message for more information:
$ tart --help
Usage: tart <COMMAND>
Commands:
  render    Render the input file
  validate  Validate the input file
  schema    Print the JSON schema for the input file
  help      Print this message or the help of the given subcommand(s)
Options:
  -h, --help     Print help
  -V, --version  Print version
$ tart render --help
Render the input file
Usage: tart render [OPTIONS] <FILE>
Arguments:
<FILE>  Path to the input file
Options:
-t, --type <INPUT_TYPE>  Input file type [possible values: toml, json]
-h, --help Print help
The input file schema is as follows:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Input",
  "type": "object",
  "required": [
    "design",
    "style_map",
    "styles"
  ],
  "properties": {
    "design": {
      "type": "string"
    },
    "style_map": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/InputStyles"
      }
    },
    "styles": {
      "type": "string"
    }
  },
  "definitions": {
    "InputColor": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "Black",
            "Red",
            "Green",
            "Yellow",
            "Blue",
            "Purple",
            "Cyan",
            "White"
          ]
        },
        {
          "type": "object",
          "required": [
            "Fixed"
          ],
          "properties": {
            "Fixed": {
              "type": "integer",
              "format": "uint8",
              "minimum": 0.0
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "RGB"
          ],
          "properties": {
            "RGB": {
              "type": "array",
              "items": [
                {
                  "type": "integer",
                  "format": "uint8",
                  "minimum": 0.0
                },
                {
                  "type": "integer",
                  "format": "uint8",
                  "minimum": 0.0
                },
                {
                  "type": "integer",
                  "format": "uint8",
                  "minimum": 0.0
                }
              ],
              "maxItems": 3,
              "minItems": 3
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "InputStyle": {
      "type": "string",
      "enum": [
        "Bold",
        "Dimmed",
        "Italic",
        "Underlined",
        "Blink",
        "Reverse",
        "Hidden",
        "Strikethrough"
      ]
    },
    "InputStyles": {
      "type": "object",
      "properties": {
        "background": {
          "anyOf": [
            {
              "$ref": "#/definitions/InputColor"
            },
            {
              "type": "null"
            }
          ]
        },
        "foreground": {
          "anyOf": [
            {
              "$ref": "#/definitions/InputColor"
            },
            {
              "type": "null"
            }
          ]
        },
        "styles": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/definitions/InputStyle"
          }
        }
      }
    }
  }
}
