From 3625e8683c9204f8207e5849a5a99b60109f7347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 12:18:55 +0800 Subject: [PATCH 01/18] prism-bash.js: add more functions 1. `|sysctl|` 2. the docker functions: `|docker|` -> `docker(\s+(run|start|stop|restart|kill|rm|pause|unpause|create|exec|ps|inspect|top|attach|events|logs|wait|export|port|commit|cp|diff|login|pull|push|search|images|rmi|tag|build|history|save|load|import|info|version))?|` --- components/prism-bash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 8d7460c634..d619bb51db 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -160,7 +160,7 @@ }, 'variable': insideString.variable, 'function': { - pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, + pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker(\s+(run|start|stop|restart|kill|rm|pause|unpause|create|exec|ps|inspect|top|attach|events|logs|wait|export|port|commit|cp|diff|login|pull|push|search|images|rmi|tag|build|history|save|load|import|info|version))?|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sysctl|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, lookbehind: true }, 'keyword': { From 0041b34f626cd1847fe32a11bf69ce5327231335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 12:35:52 +0800 Subject: [PATCH 02/18] Update prism-bash.js --- components/prism-bash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index d619bb51db..6474fadcf3 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -102,7 +102,7 @@ // Highlight variable names as variables in the left-hand part // of assignments (“=” and “+=”). 'assign-left': { - pattern: /(^|[\s;|&]|[<>]\()\w+(?=\+?=)/, + pattern: /(^|[\s;|&]|[<>]\()(\w+\.)*\w+(?=\+?=)|(-{1,2})\w+(?=(\+?=|\s+|$))/, inside: { 'environment': { pattern: RegExp('(^|[\\s;|&]|[<>]\\()' + envVars), From cc1c38c3ea5d674ffaa7e78f6787de93f4cbd2e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 16:39:39 +0800 Subject: [PATCH 03/18] Update components/prism-bash.js Suggested change. Co-authored-by: Michael Schmidt --- components/prism-bash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 6474fadcf3..ed915034b3 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -102,7 +102,7 @@ // Highlight variable names as variables in the left-hand part // of assignments (“=” and “+=”). 'assign-left': { - pattern: /(^|[\s;|&]|[<>]\()(\w+\.)*\w+(?=\+?=)|(-{1,2})\w+(?=(\+?=|\s+|$))/, + pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)|-{1,2}\w+(?:-\w+)*(?=\+?=|\s+|$)/, inside: { 'environment': { pattern: RegExp('(^|[\\s;|&]|[<>]\\()' + envVars), From c0dabc69de773b43a8315c81b205edc29ae1f4c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 16:40:35 +0800 Subject: [PATCH 04/18] Update prism-bash.js remove docker commands. --- components/prism-bash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index ed915034b3..94e1b01308 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -160,7 +160,7 @@ }, 'variable': insideString.variable, 'function': { - pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker(\s+(run|start|stop|restart|kill|rm|pause|unpause|create|exec|ps|inspect|top|attach|events|logs|wait|export|port|commit|cp|diff|login|pull|push|search|images|rmi|tag|build|history|save|load|import|info|version))?|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sysctl|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, + pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sysctl|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, lookbehind: true }, 'keyword': { From 4aaf78660e7ea6520b13165c3505dabba27206ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 18:12:15 +0800 Subject: [PATCH 05/18] add function `java`, support `parameter` --- components/prism-bash.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 94e1b01308..a90cb6e120 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -102,7 +102,7 @@ // Highlight variable names as variables in the left-hand part // of assignments (“=” and “+=”). 'assign-left': { - pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)|-{1,2}\w+(?:-\w+)*(?=\+?=|\s+|$)/, + pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/, inside: { 'environment': { pattern: RegExp('(^|[\\s;|&]|[<>]\\()' + envVars), @@ -113,6 +113,12 @@ alias: 'variable', lookbehind: true }, + // Highlight parameter names as variables + // of assignments (“=”, “:”, “:+”, “:-”). + 'parameter': { + pattern: /-{1,2}(\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, + alias: 'variable' + }, 'string': [ // Support for Here-documents https://en.wikipedia.org/wiki/Here_document { @@ -160,7 +166,7 @@ }, 'variable': insideString.variable, 'function': { - pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sysctl|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, + pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, lookbehind: true }, 'keyword': { @@ -207,6 +213,7 @@ 'function-name', 'for-or-select', 'assign-left', + 'parameter', 'string', 'environment', 'function', From 6e2c923c7c0d83cacdc81416aa5ad2028b7d5214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 18:17:11 +0800 Subject: [PATCH 06/18] optimize --- components/prism-bash.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index a90cb6e120..f7d4ce96cf 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -3,16 +3,16 @@ // + LC_ALL, RANDOM, REPLY, SECONDS. // + make sure PS1..4 are here as they are not always set, // - some useless things. - var envVars = '\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b'; + const envVars = '\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b'; - var commandAfterHeredoc = { + const commandAfterHeredoc = { pattern: /(^(["']?)\w+\2)[ \t]+\S.*/, lookbehind: true, alias: 'punctuation', // this looks reasonably well in all themes inside: null // see below }; - var insideString = { + const insideString = { 'bash': commandAfterHeredoc, 'environment': { pattern: RegExp('\\$' + envVars), @@ -208,7 +208,7 @@ commandAfterHeredoc.inside = Prism.languages.bash; /* Patterns in command substitution. */ - var toBeCopied = [ + const toBeCopied = [ 'comment', 'function-name', 'for-or-select', @@ -225,8 +225,8 @@ 'punctuation', 'number' ]; - var inside = insideString.variable[1].inside; - for (var i = 0; i < toBeCopied.length; i++) { + const inside = insideString.variable[1].inside; + for (let i = 0; i < toBeCopied.length; i++) { inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]]; } From 819740810db812718421cca8f276a0d8a7e23018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 18:27:59 +0800 Subject: [PATCH 07/18] optimize --- components/prism-bash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index f7d4ce96cf..763263b683 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -116,7 +116,7 @@ // Highlight parameter names as variables // of assignments (“=”, “:”, “:+”, “:-”). 'parameter': { - pattern: /-{1,2}(\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, + pattern: /[^|\s]-{1,2}(\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, alias: 'variable' }, 'string': [ From 410106551c4a4667f4208e6567928f29513717a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 18:30:08 +0800 Subject: [PATCH 08/18] remove comment --- components/prism-bash.js | 1 - 1 file changed, 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 763263b683..85ae4f7ad0 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -114,7 +114,6 @@ lookbehind: true }, // Highlight parameter names as variables - // of assignments (“=”, “:”, “:+”, “:-”). 'parameter': { pattern: /[^|\s]-{1,2}(\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, alias: 'variable' From d356d910af6cf137241eed01db2528613eb76d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 18:39:10 +0800 Subject: [PATCH 09/18] fix --- components/prism-bash.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 85ae4f7ad0..67785d92e0 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -115,8 +115,9 @@ }, // Highlight parameter names as variables 'parameter': { - pattern: /[^|\s]-{1,2}(\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, - alias: 'variable' + pattern: /(^|\s)-{1,2}(\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, + alias: 'variable', + lookbehind: true }, 'string': [ // Support for Here-documents https://en.wikipedia.org/wiki/Here_document From 78a25babb8490039f31a1c69f77629feda40e275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 19:04:57 +0800 Subject: [PATCH 10/18] add test `parameter_feature.test` --- tests/languages/bash/function_feature.test | 6 ++-- tests/languages/bash/parameter_feature.test | 34 +++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tests/languages/bash/parameter_feature.test diff --git a/tests/languages/bash/function_feature.test b/tests/languages/bash/function_feature.test index 16471489b6..3243942d99 100644 --- a/tests/languages/bash/function_feature.test +++ b/tests/languages/bash/function_feature.test @@ -93,6 +93,7 @@ ifup import install ip +java jobs join kill @@ -198,6 +199,7 @@ sum suspend swapon sync +sysctl tac tail tar @@ -283,7 +285,7 @@ zypper ["function", "host"], ["function", "hostname"], ["function", "htop"], ["function", "iconv"], ["function", "id"], ["function", "ifconfig"], ["function", "ifdown"], ["function", "ifup"], ["function", "import"], - ["function", "install"], ["function", "ip"], ["function", "jobs"], + ["function", "install"], ["function", "ip"], ["function", "java"], ["function", "jobs"], ["function", "join"], ["function", "kill"], ["function", "killall"], ["function", "less"], ["function", "link"], ["function", "ln"], ["function", "locate"], ["function", "logname"], ["function", "logrotate"], @@ -317,7 +319,7 @@ zypper ["function", "slocate"], ["function", "sort"], ["function", "split"], ["function", "ssh"], ["function", "stat"], ["function", "strace"], ["function", "su"], ["function", "sudo"], ["function", "sum"], ["function", - "suspend"], ["function", "swapon"], ["function", "sync"], ["function", + "suspend"], ["function", "swapon"], ["function", "sync"], ["function", "sysctl"], ["function", "tac"], ["function", "tail"], ["function", "tar"], ["function", "tee"], ["function", "time"], ["function", "timeout"], ["function", "top"], ["function", "touch"], ["function", "tr"], ["function", "traceroute"], diff --git a/tests/languages/bash/parameter_feature.test b/tests/languages/bash/parameter_feature.test new file mode 100644 index 0000000000..a9f3ea3524 --- /dev/null +++ b/tests/languages/bash/parameter_feature.test @@ -0,0 +1,34 @@ +docker run +--name elk \ +-p 5601:5601 \ +--restart=always \ +--privileged \ +-dit \ +easyj/elk:7.12.1 + +---------------------------------------------------- + +[ + ["function", ["docker"]], + + ["parameter", ["-name"]], + ["punctuation", ["\"]], + + ["parameter", ["-p"]], + ["number", ["5601"]], + ["punctuation", ["\"]], + + ["parameter", ["--restart"]], + ["operator", ["="]], + ["punctuation", ["\"]], + + ["parameter", ["--privileged"]], + ["punctuation", ["\"]], + + ["parameter", ["--dit"]], + ["punctuation", ["\"]] +] + +---------------------------------------------------- + +Checks for variable assignments. From 16aece8d6f0641be983bc3d9f1133dcd44b18904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 19:20:46 +0800 Subject: [PATCH 11/18] update test --- components/prism-bash.js | 2 +- .../arturo!+shell/sh-string_feature.test | 5 ++- tests/languages/bash/parameter_feature.test | 30 +++++++++------ tests/languages/markdown/url_feature.test | 4 +- tests/languages/mata/operator_feature.test | 2 +- tests/languages/oz/operator_feature.test | 37 +++++++++++++++---- .../shell-session/command_string_feature.test | 4 +- .../languages/shell-session/info_feature.test | 12 +++--- tests/languages/shell-session/issue2644.test | 3 +- tests/languages/shell-session/issue2871.test | 3 +- 10 files changed, 67 insertions(+), 35 deletions(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 67785d92e0..45edbddd3d 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -190,7 +190,7 @@ }, 'operator': { // Lots of redirections here, but not just that. - pattern: /\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/, + pattern: /\d?<>|>\||\+=|==|=~|=|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|\||\|&|\|/, inside: { 'file-descriptor': { pattern: /^\d/, diff --git a/tests/languages/arturo!+shell/sh-string_feature.test b/tests/languages/arturo!+shell/sh-string_feature.test index 1289e65e0b..977357cf55 100644 --- a/tests/languages/arturo!+shell/sh-string_feature.test +++ b/tests/languages/arturo!+shell/sh-string_feature.test @@ -9,7 +9,8 @@ ["string", "{!sh"], ["embedded", [ ["function", "ls"], - " -la test/*x\r\n" + ["parameter", "-la"], + " test/*x\r\n" ]], ["string", "}"] ]] @@ -17,4 +18,4 @@ ---------------------------------------------------- -Checks for string literals with embedded Shell script. \ No newline at end of file +Checks for string literals with embedded Shell script. diff --git a/tests/languages/bash/parameter_feature.test b/tests/languages/bash/parameter_feature.test index a9f3ea3524..000a040703 100644 --- a/tests/languages/bash/parameter_feature.test +++ b/tests/languages/bash/parameter_feature.test @@ -9,24 +9,30 @@ easyj/elk:7.12.1 ---------------------------------------------------- [ - ["function", ["docker"]], + ["function", "docker"], + " run\r\n", - ["parameter", ["-name"]], - ["punctuation", ["\"]], + ["parameter", "--name"], + " elk ", + ["punctuation", "\\"], - ["parameter", ["-p"]], - ["number", ["5601"]], - ["punctuation", ["\"]], + ["parameter", "-p"], + ["number", "5601"], + ":5601 ", + ["punctuation", "\\"], - ["parameter", ["--restart"]], + ["parameter", "--restart"], ["operator", ["="]], - ["punctuation", ["\"]], + "always ", + ["punctuation", "\\"], - ["parameter", ["--privileged"]], - ["punctuation", ["\"]], + ["parameter", "--privileged"], + ["punctuation", "\\"], - ["parameter", ["--dit"]], - ["punctuation", ["\"]] + ["parameter", "-dit"], + ["punctuation", "\\"], + + "\r\neasyj/elk:7.12.1" ] ---------------------------------------------------- diff --git a/tests/languages/markdown/url_feature.test b/tests/languages/markdown/url_feature.test index bc72965bcd..f0d42ff68b 100644 --- a/tests/languages/markdown/url_feature.test +++ b/tests/languages/markdown/url_feature.test @@ -108,8 +108,8 @@ bar](http://prismjs.com) "foo ", ["bold", [ ["punctuation", "__"], - ["content", ["bar"]], - ["punctuation", "__"] + ["content", ["bar_"]], + "_" ]], " baz" ]], diff --git a/tests/languages/mata/operator_feature.test b/tests/languages/mata/operator_feature.test index 0177e68dda..3b23761a1e 100644 --- a/tests/languages/mata/operator_feature.test +++ b/tests/languages/mata/operator_feature.test @@ -35,7 +35,7 @@ a’ a` a' ["operator", "\\"], ["operator", "::"], ["operator", ".."], ["operator", ":|"], ["operator", "|"], ["operator", ":&"], ["operator", "&"], - ["operator", "!"], ["operator", "&&"], ["operator", "||"], + ["operator", "!"], ["operator", "&&"], ["operator", "|"], ["operator", "|"], ["operator", "=="], ["operator", "!="], diff --git a/tests/languages/oz/operator_feature.test b/tests/languages/oz/operator_feature.test index b1baf3711e..76db45d738 100644 --- a/tests/languages/oz/operator_feature.test +++ b/tests/languages/oz/operator_feature.test @@ -17,19 +17,40 @@ orelse [ ["operator", ":="], ["operator", "::"], ["operator", ":::"], ["operator", "<"], ["operator", "<-"], ["operator", "<:"], ["operator", "<="], - ["operator", "="], ["operator", "=="], ["operator", "=:"], ["operator", "=<"], ["operator", "=<:"], - ["operator", ">"], ["operator", ">="], ["operator", ">:"], ["operator", ">=:"], - ["operator", "\\="], ["operator", "\\=:"], - ["operator", "!"], ["operator", "!!"], - ["operator", "|"], ["operator", "#"], ["operator", "+"], ["operator", "-"], - ["operator", "*"], ["operator", "/"], ["operator", ","], ["operator", "~"], - ["operator", "^"], ["operator", "@"], + ["operator", "="], ["operator", "="], ["operator", "="], ["operator", "=:"], ["operator", "=<"], ["operator", "=<:"], + ["operator", ">"], + ["operator", ">="], + ["operator", ">:"], + ["operator", ">=:"], + + ["operator", "\\="], + ["operator", "\\=:"], + + ["operator", "!"], + ["operator", "!!"], + + ["operator", "|"], + ["operator", "#"], + ["operator", "+"], + ["operator", "-"], + + ["operator", "*"], + ["operator", "/"], + ["operator", ","], + ["operator", "~"], + + ["operator", "^"], + ["operator", "@"], + ["operator", "andthen"], + ["operator", "div"], + ["operator", "mod"], + ["operator", "orelse"] ] ---------------------------------------------------- -Checks for operators. \ No newline at end of file +Checks for operators. diff --git a/tests/languages/shell-session/command_string_feature.test b/tests/languages/shell-session/command_string_feature.test index 930d0b62ca..f1ddd20871 100644 --- a/tests/languages/shell-session/command_string_feature.test +++ b/tests/languages/shell-session/command_string_feature.test @@ -97,13 +97,13 @@ y_#!$U48 ["operator", ["="]], "C ", ["function", "tr"], - " -cd ", + ["parameter", "-cd"], ["string", "'a-zA-Z0-9_-;:!?.@\\\\*/#%$'"], ["operator", ["<"]], " /dev/random ", ["operator", ["|"]], ["function", "head"], - " -c ", + ["parameter", "-c"], ["number", "8"] ]] ]], diff --git a/tests/languages/shell-session/info_feature.test b/tests/languages/shell-session/info_feature.test index f8cf93d500..f2e240d3ed 100644 --- a/tests/languages/shell-session/info_feature.test +++ b/tests/languages/shell-session/info_feature.test @@ -22,6 +22,7 @@ foo@bar% exit " ~" ]] ]], + ["command", [ ["info", [ ["user", "foo@bar"], @@ -31,9 +32,10 @@ foo@bar% exit ["shell-symbol", "$"], ["bash", [ ["function", "sudo"], - " -i" + ["parameter", "-i"] ]] ]], + ["output", "[sudo] password for foo:\r\n"], ["command", [ ["info", [ @@ -44,11 +46,10 @@ foo@bar% exit ["shell-symbol", "#"], ["bash", [ ["builtin", "echo"], - ["string", [ - "\"hello!\"" - ]] + ["string", ["\"hello!\""]] ]] ]], + ["output", "hello!\r\n\r\n"], ["command", [ ["info", [ @@ -59,6 +60,7 @@ foo@bar% exit ["function", "zsh"] ]] ]], + ["command", [ ["info", [ ["user", "foo@bar"] @@ -72,4 +74,4 @@ foo@bar% exit ---------------------------------------------------- -Checks for the info bash outputs. \ No newline at end of file +Checks for the info bash outputs. diff --git a/tests/languages/shell-session/issue2644.test b/tests/languages/shell-session/issue2644.test index a066583735..495624fd90 100644 --- a/tests/languages/shell-session/issue2644.test +++ b/tests/languages/shell-session/issue2644.test @@ -44,7 +44,8 @@ Write down the passphrase. Store both at safe place(s). ["command", [ ["shell-symbol", "$"], ["bash", [ - "borg init --encryption", + "borg init ", + ["parameter", "--encryption"], ["operator", ["="]], "keyfile-blake2 ", ["string", ["\"borg@1.2.3.4:backup\""]] diff --git a/tests/languages/shell-session/issue2871.test b/tests/languages/shell-session/issue2871.test index 3446a14d09..fd84b5419b 100644 --- a/tests/languages/shell-session/issue2871.test +++ b/tests/languages/shell-session/issue2871.test @@ -15,7 +15,8 @@ hello ["bash", [ ["function", "sudo"], ["function", "ls"], - " -l ~/.config ", + ["parameter", "-l"], + " ~/.config ", ["string", "'s'"], ["operator", ["&&"]], ["punctuation", "\\"], From f0c0da81efa7e2458b2360ceaf82fedaab08c084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 19:26:34 +0800 Subject: [PATCH 12/18] revert operator --- components/prism-bash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 45edbddd3d..67785d92e0 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -190,7 +190,7 @@ }, 'operator': { // Lots of redirections here, but not just that. - pattern: /\d?<>|>\||\+=|==|=~|=|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|\||\|&|\|/, + pattern: /\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/, inside: { 'file-descriptor': { pattern: /^\d/, From 7efe8823e9b94bf715250bcadcf069727ab4e378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 19:30:53 +0800 Subject: [PATCH 13/18] revert `const` and `let` --- components/prism-bash.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 67785d92e0..05895c421e 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -3,16 +3,16 @@ // + LC_ALL, RANDOM, REPLY, SECONDS. // + make sure PS1..4 are here as they are not always set, // - some useless things. - const envVars = '\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b'; + var envVars = '\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b'; - const commandAfterHeredoc = { + var commandAfterHeredoc = { pattern: /(^(["']?)\w+\2)[ \t]+\S.*/, lookbehind: true, alias: 'punctuation', // this looks reasonably well in all themes inside: null // see below }; - const insideString = { + var insideString = { 'bash': commandAfterHeredoc, 'environment': { pattern: RegExp('\\$' + envVars), @@ -208,7 +208,7 @@ commandAfterHeredoc.inside = Prism.languages.bash; /* Patterns in command substitution. */ - const toBeCopied = [ + var toBeCopied = [ 'comment', 'function-name', 'for-or-select', @@ -225,8 +225,8 @@ 'punctuation', 'number' ]; - const inside = insideString.variable[1].inside; - for (let i = 0; i < toBeCopied.length; i++) { + var inside = insideString.variable[1].inside; + for (var i = 0; i < toBeCopied.length; i++) { inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]]; } From 4fae764565be63c90805335fd780858e7d2f8b05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 19:36:29 +0800 Subject: [PATCH 14/18] fix style --- .../arturo!+shell/sh-string_feature.test | 2 +- tests/languages/oz/operator_feature.test | 35 ++++--------------- .../languages/shell-session/info_feature.test | 2 +- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/tests/languages/arturo!+shell/sh-string_feature.test b/tests/languages/arturo!+shell/sh-string_feature.test index 977357cf55..357cb43632 100644 --- a/tests/languages/arturo!+shell/sh-string_feature.test +++ b/tests/languages/arturo!+shell/sh-string_feature.test @@ -18,4 +18,4 @@ ---------------------------------------------------- -Checks for string literals with embedded Shell script. +Checks for string literals with embedded Shell script. \ No newline at end of file diff --git a/tests/languages/oz/operator_feature.test b/tests/languages/oz/operator_feature.test index 76db45d738..899fa3bac1 100644 --- a/tests/languages/oz/operator_feature.test +++ b/tests/languages/oz/operator_feature.test @@ -18,39 +18,18 @@ orelse ["operator", ":="], ["operator", "::"], ["operator", ":::"], ["operator", "<"], ["operator", "<-"], ["operator", "<:"], ["operator", "<="], ["operator", "="], ["operator", "="], ["operator", "="], ["operator", "=:"], ["operator", "=<"], ["operator", "=<:"], - ["operator", ">"], - ["operator", ">="], - ["operator", ">:"], - ["operator", ">=:"], - - ["operator", "\\="], - ["operator", "\\=:"], - - ["operator", "!"], - ["operator", "!!"], - - ["operator", "|"], - ["operator", "#"], - ["operator", "+"], - ["operator", "-"], - - ["operator", "*"], - ["operator", "/"], - ["operator", ","], - ["operator", "~"], - - ["operator", "^"], - ["operator", "@"], - + ["operator", ">"], ["operator", ">="], ["operator", ">:"], ["operator", ">=:"], + ["operator", "\\="], ["operator", "\\=:"], + ["operator", "!"], ["operator", "!!"], + ["operator", "|"], ["operator", "#"], ["operator", "+"], ["operator", "-"], + ["operator", "*"], ["operator", "/"], ["operator", ","], ["operator", "~"], + ["operator", "^"], ["operator", "@"], ["operator", "andthen"], - ["operator", "div"], - ["operator", "mod"], - ["operator", "orelse"] ] ---------------------------------------------------- -Checks for operators. +Checks for operators. \ No newline at end of file diff --git a/tests/languages/shell-session/info_feature.test b/tests/languages/shell-session/info_feature.test index f2e240d3ed..5c3a9bc0ff 100644 --- a/tests/languages/shell-session/info_feature.test +++ b/tests/languages/shell-session/info_feature.test @@ -74,4 +74,4 @@ foo@bar% exit ---------------------------------------------------- -Checks for the info bash outputs. +Checks for the info bash outputs. \ No newline at end of file From f7525564dae0ad7996af7bec83d847793436bd12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 19:41:36 +0800 Subject: [PATCH 15/18] revert test --- tests/languages/markdown/url_feature.test | 4 ++-- tests/languages/mata/operator_feature.test | 2 +- tests/languages/oz/operator_feature.test | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/languages/markdown/url_feature.test b/tests/languages/markdown/url_feature.test index f0d42ff68b..bc72965bcd 100644 --- a/tests/languages/markdown/url_feature.test +++ b/tests/languages/markdown/url_feature.test @@ -108,8 +108,8 @@ bar](http://prismjs.com) "foo ", ["bold", [ ["punctuation", "__"], - ["content", ["bar_"]], - "_" + ["content", ["bar"]], + ["punctuation", "__"] ]], " baz" ]], diff --git a/tests/languages/mata/operator_feature.test b/tests/languages/mata/operator_feature.test index 3b23761a1e..0177e68dda 100644 --- a/tests/languages/mata/operator_feature.test +++ b/tests/languages/mata/operator_feature.test @@ -35,7 +35,7 @@ a’ a` a' ["operator", "\\"], ["operator", "::"], ["operator", ".."], ["operator", ":|"], ["operator", "|"], ["operator", ":&"], ["operator", "&"], - ["operator", "!"], ["operator", "&&"], ["operator", "|"], ["operator", "|"], + ["operator", "!"], ["operator", "&&"], ["operator", "||"], ["operator", "=="], ["operator", "!="], diff --git a/tests/languages/oz/operator_feature.test b/tests/languages/oz/operator_feature.test index 899fa3bac1..b1baf3711e 100644 --- a/tests/languages/oz/operator_feature.test +++ b/tests/languages/oz/operator_feature.test @@ -17,7 +17,7 @@ orelse [ ["operator", ":="], ["operator", "::"], ["operator", ":::"], ["operator", "<"], ["operator", "<-"], ["operator", "<:"], ["operator", "<="], - ["operator", "="], ["operator", "="], ["operator", "="], ["operator", "=:"], ["operator", "=<"], ["operator", "=<:"], + ["operator", "="], ["operator", "=="], ["operator", "=:"], ["operator", "=<"], ["operator", "=<:"], ["operator", ">"], ["operator", ">="], ["operator", ">:"], ["operator", ">=:"], ["operator", "\\="], ["operator", "\\=:"], ["operator", "!"], ["operator", "!!"], From 1997f43d2de53584fcd5ce4656000919f7225d75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?WangLiang/=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 19:45:45 +0800 Subject: [PATCH 16/18] Update components/prism-bash.js Suggested change. Co-authored-by: Michael Schmidt --- components/prism-bash.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.js b/components/prism-bash.js index 05895c421e..b431d9473d 100644 --- a/components/prism-bash.js +++ b/components/prism-bash.js @@ -115,7 +115,7 @@ }, // Highlight parameter names as variables 'parameter': { - pattern: /(^|\s)-{1,2}(\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, + pattern: /(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, alias: 'variable', lookbehind: true }, From 1408c06ec96144cda8d15e627a37c9200c15e2f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Mon, 25 Jul 2022 20:22:07 +0800 Subject: [PATCH 17/18] update prism-bash.min.js --- components/prism-bash.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.min.js b/components/prism-bash.min.js index 8ff5f7a8fb..3e0b982c1b 100644 --- a/components/prism-bash.min.js +++ b/components/prism-bash.min.js @@ -1 +1 @@ -!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},"parameter":{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i Date: Mon, 25 Jul 2022 21:16:32 +0800 Subject: [PATCH 18/18] update prism-bash.min.js --- components/prism-bash.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-bash.min.js b/components/prism-bash.min.js index 3e0b982c1b..40151efb60 100644 --- a/components/prism-bash.min.js +++ b/components/prism-bash.min.js @@ -1 +1 @@ -!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},"parameter":{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=a.variable[1].inside,i=0;i