mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-10-30 18:07:42 +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
 | |
|     ]
 | |
|   };
 | |
| }
 |