mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-11-03 20:07:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
Language: Bash
 | 
						|
Author: vah <vahtenberg@gmail.com>
 | 
						|
Contributrors: Benjamin Pannell <contact@sierrasoftworks.com>
 | 
						|
Website: https://www.gnu.org/software/bash/
 | 
						|
Category: common
 | 
						|
*/
 | 
						|
 | 
						|
export default function(hljs) {
 | 
						|
  const VAR = {};
 | 
						|
  const BRACED_VAR = {
 | 
						|
    begin: /\$\{/, end:/\}/,
 | 
						|
    contains: [
 | 
						|
      { begin: /:-/, contains: [VAR] } // default values
 | 
						|
    ]
 | 
						|
  };
 | 
						|
  Object.assign(VAR,{
 | 
						|
    className: 'variable',
 | 
						|
    variants: [
 | 
						|
      {begin: /\$[\w\d#@][\w\d_]*/},
 | 
						|
      BRACED_VAR
 | 
						|
    ]
 | 
						|
  });
 | 
						|
 | 
						|
  const SUBST = {
 | 
						|
    className: 'subst',
 | 
						|
    begin: /\$\(/, end: /\)/,
 | 
						|
    contains: [hljs.BACKSLASH_ESCAPE]
 | 
						|
  };
 | 
						|
  const QUOTE_STRING = {
 | 
						|
    className: 'string',
 | 
						|
    begin: /"/, end: /"/,
 | 
						|
    contains: [
 | 
						|
      hljs.BACKSLASH_ESCAPE,
 | 
						|
      VAR,
 | 
						|
      SUBST
 | 
						|
    ]
 | 
						|
  };
 | 
						|
  SUBST.contains.push(QUOTE_STRING);
 | 
						|
  const ESCAPED_QUOTE = {
 | 
						|
    className: '',
 | 
						|
    begin: /\\"/
 | 
						|
 | 
						|
  };
 | 
						|
  const APOS_STRING = {
 | 
						|
    className: 'string',
 | 
						|
    begin: /'/, end: /'/
 | 
						|
  };
 | 
						|
  const ARITHMETIC = {
 | 
						|
    begin: /\$\(\(/,
 | 
						|
    end: /\)\)/,
 | 
						|
    contains: [
 | 
						|
      { begin: /\d+#[0-9a-f]+/, className: "number" },
 | 
						|
      hljs.NUMBER_MODE,
 | 
						|
      VAR
 | 
						|
    ]
 | 
						|
  };
 | 
						|
  const SH_LIKE_SHELLS = [
 | 
						|
    "fish",
 | 
						|
    "bash",
 | 
						|
    "zsh",
 | 
						|
    "sh",
 | 
						|
    "csh",
 | 
						|
    "ksh",
 | 
						|
    "tcsh",
 | 
						|
    "dash",
 | 
						|
    "scsh",
 | 
						|
  ];
 | 
						|
  const KNOWN_SHEBANG = hljs.SHEBANG({
 | 
						|
    binary: `(${SH_LIKE_SHELLS.join("|")})`,
 | 
						|
    relevance: 10
 | 
						|
  });
 | 
						|
  const FUNCTION = {
 | 
						|
    className: 'function',
 | 
						|
    begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
 | 
						|
    returnBegin: true,
 | 
						|
    contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\w[\w\d_]*/})],
 | 
						|
    relevance: 0
 | 
						|
  };
 | 
						|
 | 
						|
  return {
 | 
						|
    name: 'Bash',
 | 
						|
    aliases: ['sh', 'zsh'],
 | 
						|
    keywords: {
 | 
						|
      $pattern: /\b-?[a-z\._]+\b/,
 | 
						|
      keyword:
 | 
						|
        'if then else elif fi for while in do done case esac function',
 | 
						|
      literal:
 | 
						|
        'true false',
 | 
						|
      built_in:
 | 
						|
        // Shell built-ins
 | 
						|
        // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html
 | 
						|
        'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +
 | 
						|
        'trap umask unset ' +
 | 
						|
        // Bash built-ins
 | 
						|
        'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +
 | 
						|
        'read readarray source type typeset ulimit unalias ' +
 | 
						|
        // Shell modifiers
 | 
						|
        'set shopt ' +
 | 
						|
        // Zsh built-ins
 | 
						|
        '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',
 | 
						|
      _:
 | 
						|
        '-ne -eq -lt -gt -f -d -e -s -l -a' // relevance booster
 | 
						|
    },
 | 
						|
    contains: [
 | 
						|
      KNOWN_SHEBANG, // to catch known shells and boost relevancy
 | 
						|
      hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang
 | 
						|
      FUNCTION,
 | 
						|
      ARITHMETIC,
 | 
						|
      hljs.HASH_COMMENT_MODE,
 | 
						|
      QUOTE_STRING,
 | 
						|
      ESCAPED_QUOTE,
 | 
						|
      APOS_STRING,
 | 
						|
      VAR
 | 
						|
    ]
 | 
						|
  };
 | 
						|
}
 |