bash top-level property

Mode bash
final

Implementation

final bash = Mode(
    refs: {
      '~contains~7':
          Mode(className: "string", begin: "\"", end: "\"", contains: [
        BACKSLASH_ESCAPE,
        Mode(ref: '~contains~3~contains~2'),
        Mode(
            className: "subst",
            begin: "\\\$\\(",
            end: "\\)",
            contains: [BACKSLASH_ESCAPE, Mode(ref: '~contains~7')])
      ]),
      '~contains~3~contains~2': Mode(className: "variable", variants: [
        Mode(begin: "\\\$[\\w\\d#@][\\w\\d_]*(?![\\w\\d])(?![\$])"),
        Mode(begin: "\\\$\\{", end: "\\}", contains: [
          Mode(self: true),
          Mode(begin: ":-", contains: [Mode(ref: '~contains~3~contains~2')])
        ])
      ]),
    },
    name: "Bash",
    aliases: ["sh"],
    keywords: {
      "\$pattern": "\\b[a-z][a-z0-9._-]+\\b",
      "keyword": [
        "if",
        "then",
        "else",
        "elif",
        "fi",
        "for",
        "while",
        "in",
        "do",
        "done",
        "case",
        "esac",
        "function"
      ],
      "literal": ["true", "false"],
      "built_in": [
        "break",
        "cd",
        "continue",
        "eval",
        "exec",
        "exit",
        "export",
        "getopts",
        "hash",
        "pwd",
        "readonly",
        "return",
        "shift",
        "test",
        "times",
        "trap",
        "umask",
        "unset",
        "alias",
        "bind",
        "builtin",
        "caller",
        "command",
        "declare",
        "echo",
        "enable",
        "help",
        "let",
        "local",
        "logout",
        "mapfile",
        "printf",
        "read",
        "readarray",
        "source",
        "type",
        "typeset",
        "ulimit",
        "unalias",
        "set",
        "shopt",
        "autoload",
        "bg",
        "bindkey",
        "bye",
        "cap",
        "chdir",
        "clone",
        "comparguments",
        "compcall",
        "compctl",
        "compdescribe",
        "compfiles",
        "compgroups",
        "compquote",
        "comptags",
        "comptry",
        "compvalues",
        "dirs",
        "disable",
        "disown",
        "echotc",
        "echoti",
        "emulate",
        "fc",
        "fg",
        "float",
        "functions",
        "getcap",
        "getln",
        "history",
        "integer",
        "jobs",
        "kill",
        "limit",
        "log",
        "noglob",
        "popd",
        "print",
        "pushd",
        "pushln",
        "rehash",
        "sched",
        "setcap",
        "setopt",
        "stat",
        "suspend",
        "ttyctl",
        "unfunction",
        "unhash",
        "unlimit",
        "unsetopt",
        "vared",
        "wait",
        "whence",
        "where",
        "which",
        "zcompile",
        "zformat",
        "zftp",
        "zle",
        "zmodload",
        "zparseopts",
        "zprof",
        "zpty",
        "zregexparse",
        "zsocket",
        "zstyle",
        "ztcp",
        "chcon",
        "chgrp",
        "chown",
        "chmod",
        "cp",
        "dd",
        "df",
        "dir",
        "dircolors",
        "ln",
        "ls",
        "mkdir",
        "mkfifo",
        "mknod",
        "mktemp",
        "mv",
        "realpath",
        "rm",
        "rmdir",
        "shred",
        "sync",
        "touch",
        "truncate",
        "vdir",
        "b2sum",
        "base32",
        "base64",
        "cat",
        "cksum",
        "comm",
        "csplit",
        "cut",
        "expand",
        "fmt",
        "fold",
        "head",
        "join",
        "md5sum",
        "nl",
        "numfmt",
        "od",
        "paste",
        "ptx",
        "pr",
        "sha1sum",
        "sha224sum",
        "sha256sum",
        "sha384sum",
        "sha512sum",
        "shuf",
        "sort",
        "split",
        "sum",
        "tac",
        "tail",
        "tr",
        "tsort",
        "unexpand",
        "uniq",
        "wc",
        "arch",
        "basename",
        "chroot",
        "date",
        "dirname",
        "du",
        "echo",
        "env",
        "expr",
        "factor",
        "groups",
        "hostid",
        "id",
        "link",
        "logname",
        "nice",
        "nohup",
        "nproc",
        "pathchk",
        "pinky",
        "printenv",
        "printf",
        "pwd",
        "readlink",
        "runcon",
        "seq",
        "sleep",
        "stat",
        "stdbuf",
        "stty",
        "tee",
        "test",
        "timeout",
        "tty",
        "uname",
        "unlink",
        "uptime",
        "users",
        "who",
        "whoami",
        "yes"
      ]
    },
    contains: [
      Mode(
          scope: "meta",
          begin:
              "^#![ ]*\\/.*\\b(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)\\b.*",
          end: "\$",
          relevance: 10,
          onBegin: shebangOnBegin,
          binary: "(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)"),
      Mode(
          scope: "meta",
          begin: "^#![ ]*\\/",
          end: "\$",
          relevance: 0,
          onBegin: shebangOnBegin),
      Mode(
          className: "function",
          begin: "\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{",
          returnBegin: true,
          contains: [
            Mode(scope: "title", begin: "\\w[\\w\\d_]*", relevance: 0)
          ],
          relevance: 0),
      Mode(begin: "\\\$?\\(\\(", end: "\\)\\)", contains: [
        Mode(begin: "\\d+#[0-9a-f]+", className: "number"),
        NUMBER_MODE,
        Mode(ref: '~contains~3~contains~2')
      ]),
      HASH_COMMENT_MODE,
      Mode(
          begin: "<<-?\\s*(?=\\w+)",
          starts: Mode(contains: [
            Mode(
                begin: "(\\w+)",
                end: "(\\w+)",
                className: "string",
                onBegin: endSameAsBeginOnBegin,
                onEnd: endSameAsBeginOnEnd)
          ])),
      Mode(match: "(\\/[a-z._-]+)+"),
      Mode(ref: '~contains~7'),
      Mode(className: overwritingNullString, begin: "\\\\\""),
      Mode(className: "string", begin: "'", end: "'"),
      Mode(ref: '~contains~3~contains~2')
    ]);