mirror of
https://github.com/neocities/neocities.git
synced 2025-05-13 16:07:19 +02:00
start on the coding assistant
This commit is contained in:
parent
8f6a85d81d
commit
8ba6005c67
546 changed files with 54575 additions and 12 deletions
413
public/js/highlight/languages/bash.js
Normal file
413
public/js/highlight/languages/bash.js
Normal file
|
@ -0,0 +1,413 @@
|
|||
/*! `bash` grammar compiled for Highlight.js 11.9.0 */
|
||||
(function(){
|
||||
var hljsGrammar = (function () {
|
||||
'use strict';
|
||||
|
||||
/*
|
||||
Language: Bash
|
||||
Author: vah <vahtenberg@gmail.com>
|
||||
Contributrors: Benjamin Pannell <contact@sierrasoftworks.com>
|
||||
Website: https://www.gnu.org/software/bash/
|
||||
Category: common, scripting
|
||||
*/
|
||||
|
||||
/** @type LanguageFn */
|
||||
function bash(hljs) {
|
||||
const regex = hljs.regex;
|
||||
const VAR = {};
|
||||
const BRACED_VAR = {
|
||||
begin: /\$\{/,
|
||||
end: /\}/,
|
||||
contains: [
|
||||
"self",
|
||||
{
|
||||
begin: /:-/,
|
||||
contains: [ VAR ]
|
||||
} // default values
|
||||
]
|
||||
};
|
||||
Object.assign(VAR, {
|
||||
className: 'variable',
|
||||
variants: [
|
||||
{ begin: regex.concat(/\$[\w\d#@][\w\d_]*/,
|
||||
// negative look-ahead tries to avoid matching patterns that are not
|
||||
// Perl at all like $ident$, @ident@, etc.
|
||||
`(?![\\w\\d])(?![$])`) },
|
||||
BRACED_VAR
|
||||
]
|
||||
});
|
||||
|
||||
const SUBST = {
|
||||
className: 'subst',
|
||||
begin: /\$\(/,
|
||||
end: /\)/,
|
||||
contains: [ hljs.BACKSLASH_ESCAPE ]
|
||||
};
|
||||
const COMMENT = hljs.inherit(
|
||||
hljs.COMMENT(),
|
||||
{
|
||||
match: [
|
||||
/(^|\s)/,
|
||||
/#.*$/
|
||||
],
|
||||
scope: {
|
||||
2: 'comment'
|
||||
}
|
||||
}
|
||||
);
|
||||
const HERE_DOC = {
|
||||
begin: /<<-?\s*(?=\w+)/,
|
||||
starts: { contains: [
|
||||
hljs.END_SAME_AS_BEGIN({
|
||||
begin: /(\w+)/,
|
||||
end: /(\w+)/,
|
||||
className: 'string'
|
||||
})
|
||||
] }
|
||||
};
|
||||
const QUOTE_STRING = {
|
||||
className: 'string',
|
||||
begin: /"/,
|
||||
end: /"/,
|
||||
contains: [
|
||||
hljs.BACKSLASH_ESCAPE,
|
||||
VAR,
|
||||
SUBST
|
||||
]
|
||||
};
|
||||
SUBST.contains.push(QUOTE_STRING);
|
||||
const ESCAPED_QUOTE = {
|
||||
match: /\\"/
|
||||
};
|
||||
const APOS_STRING = {
|
||||
className: 'string',
|
||||
begin: /'/,
|
||||
end: /'/
|
||||
};
|
||||
const ESCAPED_APOS = {
|
||||
match: /\\'/
|
||||
};
|
||||
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
|
||||
};
|
||||
|
||||
const KEYWORDS = [
|
||||
"if",
|
||||
"then",
|
||||
"else",
|
||||
"elif",
|
||||
"fi",
|
||||
"for",
|
||||
"while",
|
||||
"until",
|
||||
"in",
|
||||
"do",
|
||||
"done",
|
||||
"case",
|
||||
"esac",
|
||||
"function",
|
||||
"select"
|
||||
];
|
||||
|
||||
const LITERALS = [
|
||||
"true",
|
||||
"false"
|
||||
];
|
||||
|
||||
// to consume paths to prevent keyword matches inside them
|
||||
const PATH_MODE = { match: /(\/[a-z._-]+)+/ };
|
||||
|
||||
// http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html
|
||||
const SHELL_BUILT_INS = [
|
||||
"break",
|
||||
"cd",
|
||||
"continue",
|
||||
"eval",
|
||||
"exec",
|
||||
"exit",
|
||||
"export",
|
||||
"getopts",
|
||||
"hash",
|
||||
"pwd",
|
||||
"readonly",
|
||||
"return",
|
||||
"shift",
|
||||
"test",
|
||||
"times",
|
||||
"trap",
|
||||
"umask",
|
||||
"unset"
|
||||
];
|
||||
|
||||
const BASH_BUILT_INS = [
|
||||
"alias",
|
||||
"bind",
|
||||
"builtin",
|
||||
"caller",
|
||||
"command",
|
||||
"declare",
|
||||
"echo",
|
||||
"enable",
|
||||
"help",
|
||||
"let",
|
||||
"local",
|
||||
"logout",
|
||||
"mapfile",
|
||||
"printf",
|
||||
"read",
|
||||
"readarray",
|
||||
"source",
|
||||
"type",
|
||||
"typeset",
|
||||
"ulimit",
|
||||
"unalias"
|
||||
];
|
||||
|
||||
const 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"
|
||||
];
|
||||
|
||||
const GNU_CORE_UTILS = [
|
||||
"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",
|
||||
// "false", // keyword literal already
|
||||
"groups",
|
||||
"hostid",
|
||||
"id",
|
||||
"link",
|
||||
"logname",
|
||||
"nice",
|
||||
"nohup",
|
||||
"nproc",
|
||||
"pathchk",
|
||||
"pinky",
|
||||
"printenv",
|
||||
"printf",
|
||||
"pwd",
|
||||
"readlink",
|
||||
"runcon",
|
||||
"seq",
|
||||
"sleep",
|
||||
"stat",
|
||||
"stdbuf",
|
||||
"stty",
|
||||
"tee",
|
||||
"test",
|
||||
"timeout",
|
||||
// "true", // keyword literal already
|
||||
"tty",
|
||||
"uname",
|
||||
"unlink",
|
||||
"uptime",
|
||||
"users",
|
||||
"who",
|
||||
"whoami",
|
||||
"yes"
|
||||
];
|
||||
|
||||
return {
|
||||
name: 'Bash',
|
||||
aliases: [ 'sh' ],
|
||||
keywords: {
|
||||
$pattern: /\b[a-z][a-z0-9._-]+\b/,
|
||||
keyword: KEYWORDS,
|
||||
literal: LITERALS,
|
||||
built_in: [
|
||||
...SHELL_BUILT_INS,
|
||||
...BASH_BUILT_INS,
|
||||
// Shell modifiers
|
||||
"set",
|
||||
"shopt",
|
||||
...ZSH_BUILT_INS,
|
||||
...GNU_CORE_UTILS
|
||||
]
|
||||
},
|
||||
contains: [
|
||||
KNOWN_SHEBANG, // to catch known shells and boost relevancy
|
||||
hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang
|
||||
FUNCTION,
|
||||
ARITHMETIC,
|
||||
COMMENT,
|
||||
HERE_DOC,
|
||||
PATH_MODE,
|
||||
QUOTE_STRING,
|
||||
ESCAPED_QUOTE,
|
||||
APOS_STRING,
|
||||
ESCAPED_APOS,
|
||||
VAR
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
return bash;
|
||||
|
||||
})();
|
||||
|
||||
hljs.registerLanguage('bash', hljsGrammar);
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue