CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
bash.js410 linesDownload Raw Back to languages
1/*2Language: Bash3Author: vah <vahtenberg@gmail.com>4Contributrors: Benjamin Pannell <contact@sierrasoftworks.com>5Website: https://www.gnu.org/software/bash/6Category: common, scripting7*/8 9/** @type LanguageFn */10function bash(hljs) {11  const regex = hljs.regex;12  const VAR = {};13  const BRACED_VAR = {14    begin: /\$\{/,15    end: /\}/,16    contains: [17      "self",18      {19        begin: /:-/,20        contains: [ VAR ]21      } // default values22    ]23  };24  Object.assign(VAR, {25    className: 'variable',26    variants: [27      { begin: regex.concat(/\$[\w\d#@][\w\d_]*/,28        // negative look-ahead tries to avoid matching patterns that are not29        // Perl at all like $ident$, @ident@, etc.30        `(?![\\w\\d])(?![$])`) },31      BRACED_VAR32    ]33  });34 35  const SUBST = {36    className: 'subst',37    begin: /\$\(/,38    end: /\)/,39    contains: [ hljs.BACKSLASH_ESCAPE ]40  };41  const COMMENT = hljs.inherit(42    hljs.COMMENT(),43    {44      match: [45        /(^|\s)/,46        /#.*$/47      ],48      scope: {49        2: 'comment'50      }51    }52  );53  const HERE_DOC = {54    begin: /<<-?\s*(?=\w+)/,55    starts: { contains: [56      hljs.END_SAME_AS_BEGIN({57        begin: /(\w+)/,58        end: /(\w+)/,59        className: 'string'60      })61    ] }62  };63  const QUOTE_STRING = {64    className: 'string',65    begin: /"/,66    end: /"/,67    contains: [68      hljs.BACKSLASH_ESCAPE,69      VAR,70      SUBST71    ]72  };73  SUBST.contains.push(QUOTE_STRING);74  const ESCAPED_QUOTE = {75    match: /\\"/76  };77  const APOS_STRING = {78    className: 'string',79    begin: /'/,80    end: /'/81  };82  const ESCAPED_APOS = {83    match: /\\'/84  };85  const ARITHMETIC = {86    begin: /\$?\(\(/,87    end: /\)\)/,88    contains: [89      {90        begin: /\d+#[0-9a-f]+/,91        className: "number"92      },93      hljs.NUMBER_MODE,94      VAR95    ]96  };97  const SH_LIKE_SHELLS = [98    "fish",99    "bash",100    "zsh",101    "sh",102    "csh",103    "ksh",104    "tcsh",105    "dash",106    "scsh",107  ];108  const KNOWN_SHEBANG = hljs.SHEBANG({109    binary: `(${SH_LIKE_SHELLS.join("|")})`,110    relevance: 10111  });112  const FUNCTION = {113    className: 'function',114    begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,115    returnBegin: true,116    contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\w[\w\d_]*/ }) ],117    relevance: 0118  };119 120  const KEYWORDS = [121    "if",122    "then",123    "else",124    "elif",125    "fi",126    "time",127    "for",128    "while",129    "until",130    "in",131    "do",132    "done",133    "case",134    "esac",135    "coproc",136    "function",137    "select"138  ];139 140  const LITERALS = [141    "true",142    "false"143  ];144 145  // to consume paths to prevent keyword matches inside them146  const PATH_MODE = { match: /(\/[a-z._-]+)+/ };147 148  // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html149  const SHELL_BUILT_INS = [150    "break",151    "cd",152    "continue",153    "eval",154    "exec",155    "exit",156    "export",157    "getopts",158    "hash",159    "pwd",160    "readonly",161    "return",162    "shift",163    "test",164    "times",165    "trap",166    "umask",167    "unset"168  ];169 170  const BASH_BUILT_INS = [171    "alias",172    "bind",173    "builtin",174    "caller",175    "command",176    "declare",177    "echo",178    "enable",179    "help",180    "let",181    "local",182    "logout",183    "mapfile",184    "printf",185    "read",186    "readarray",187    "source",188    "sudo",189    "type",190    "typeset",191    "ulimit",192    "unalias"193  ];194 195  const ZSH_BUILT_INS = [196    "autoload",197    "bg",198    "bindkey",199    "bye",200    "cap",201    "chdir",202    "clone",203    "comparguments",204    "compcall",205    "compctl",206    "compdescribe",207    "compfiles",208    "compgroups",209    "compquote",210    "comptags",211    "comptry",212    "compvalues",213    "dirs",214    "disable",215    "disown",216    "echotc",217    "echoti",218    "emulate",219    "fc",220    "fg",221    "float",222    "functions",223    "getcap",224    "getln",225    "history",226    "integer",227    "jobs",228    "kill",229    "limit",230    "log",231    "noglob",232    "popd",233    "print",234    "pushd",235    "pushln",236    "rehash",237    "sched",238    "setcap",239    "setopt",240    "stat",241    "suspend",242    "ttyctl",243    "unfunction",244    "unhash",245    "unlimit",246    "unsetopt",247    "vared",248    "wait",249    "whence",250    "where",251    "which",252    "zcompile",253    "zformat",254    "zftp",255    "zle",256    "zmodload",257    "zparseopts",258    "zprof",259    "zpty",260    "zregexparse",261    "zsocket",262    "zstyle",263    "ztcp"264  ];265 266  const GNU_CORE_UTILS = [267    "chcon",268    "chgrp",269    "chown",270    "chmod",271    "cp",272    "dd",273    "df",274    "dir",275    "dircolors",276    "ln",277    "ls",278    "mkdir",279    "mkfifo",280    "mknod",281    "mktemp",282    "mv",283    "realpath",284    "rm",285    "rmdir",286    "shred",287    "sync",288    "touch",289    "truncate",290    "vdir",291    "b2sum",292    "base32",293    "base64",294    "cat",295    "cksum",296    "comm",297    "csplit",298    "cut",299    "expand",300    "fmt",301    "fold",302    "head",303    "join",304    "md5sum",305    "nl",306    "numfmt",307    "od",308    "paste",309    "ptx",310    "pr",311    "sha1sum",312    "sha224sum",313    "sha256sum",314    "sha384sum",315    "sha512sum",316    "shuf",317    "sort",318    "split",319    "sum",320    "tac",321    "tail",322    "tr",323    "tsort",324    "unexpand",325    "uniq",326    "wc",327    "arch",328    "basename",329    "chroot",330    "date",331    "dirname",332    "du",333    "echo",334    "env",335    "expr",336    "factor",337    // "false", // keyword literal already338    "groups",339    "hostid",340    "id",341    "link",342    "logname",343    "nice",344    "nohup",345    "nproc",346    "pathchk",347    "pinky",348    "printenv",349    "printf",350    "pwd",351    "readlink",352    "runcon",353    "seq",354    "sleep",355    "stat",356    "stdbuf",357    "stty",358    "tee",359    "test",360    "timeout",361    // "true", // keyword literal already362    "tty",363    "uname",364    "unlink",365    "uptime",366    "users",367    "who",368    "whoami",369    "yes"370  ];371 372  return {373    name: 'Bash',374    aliases: [375      'sh',376      'zsh'377    ],378    keywords: {379      $pattern: /\b[a-z][a-z0-9._-]+\b/,380      keyword: KEYWORDS,381      literal: LITERALS,382      built_in: [383        ...SHELL_BUILT_INS,384        ...BASH_BUILT_INS,385        // Shell modifiers386        "set",387        "shopt",388        ...ZSH_BUILT_INS,389        ...GNU_CORE_UTILS390      ]391    },392    contains: [393      KNOWN_SHEBANG, // to catch known shells and boost relevancy394      hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang395      FUNCTION,396      ARITHMETIC,397      COMMENT,398      HERE_DOC,399      PATH_MODE,400      QUOTE_STRING,401      ESCAPED_QUOTE,402      APOS_STRING,403      ESCAPED_APOS,404      VAR405    ]406  };407}408 409export { bash as default };410 
basant307/AI_Governance_Project · CoolFace