aboutsummaryrefslogtreecommitdiff
path: root/.config/shell/zsh-fast-syntax-highlighting/test/parse.zsh
diff options
context:
space:
mode:
Diffstat (limited to '.config/shell/zsh-fast-syntax-highlighting/test/parse.zsh')
-rwxr-xr-x.config/shell/zsh-fast-syntax-highlighting/test/parse.zsh220
1 files changed, 220 insertions, 0 deletions
diff --git a/.config/shell/zsh-fast-syntax-highlighting/test/parse.zsh b/.config/shell/zsh-fast-syntax-highlighting/test/parse.zsh
new file mode 100755
index 0000000..53dec62
--- /dev/null
+++ b/.config/shell/zsh-fast-syntax-highlighting/test/parse.zsh
@@ -0,0 +1,220 @@
+#!/bin/sh
+
+#
+# This file runs the highlighter on a specified file
+# i.e. parses the file with the highlighter. Outputs
+# running time (stderr) and resulting region_highlight
+# (file parse.out, or $2 if given).
+#
+# Can be also run in line-wise mode on own input (-o
+# option in $1), no region_highlight file then.
+#
+
+[[ -z "$ZSH_VERSION" ]] && exec /usr/bin/env /usr/local/bin/zsh-5.5.1 -f -c "source \"$0\" \"$1\" \"$2\" \"$3\""
+
+ZERO="${(%):-%N}"
+
+if [[ -e "${ZERO}/../fast-highlight" ]]; then
+ source "${ZERO}/../fast-highlight"
+ source "${ZERO}/../fast-string-highlight"
+ fpath+=( "${ZERO}/.." )
+elif [[ -e "../fast-highlight" ]]; then
+ source "../fast-highlight"
+ source "../fast-string-highlight"
+ fpath+=( "$PWD/.." )
+elif [[ -e "${ZERO}/fast-highlight" ]]; then
+ source "${ZERO}/fast-highlight"
+ source "${ZERO}/fast-string-highlight"
+ fpath+=( "${ZERO}" )
+elif [[ -e "./fast-highlight" ]]; then
+ source "./fast-highlight"
+ source "./fast-string-highlight"
+ fpath+=( "./" )
+else
+ print -u2 "Could not find fast-highlight, aborting"
+ exit 1
+fi
+
+zmodload zsh/zprof
+autoload is-at-least chroma/-git.ch
+
+setopt interactive_comments extendedglob
+
+# Own input?
+if [[ "$1" = "-o" || "$1" = "-oo" || "$1" = "-ooo" || "$1" = "-git" || "$1" = "-hue" || "$1" = "-hol" ]]; then
+ typeset -a input
+ input=()
+ if [[ "$1" = "-o" ]]; then
+ input+=( "./parse.zsh ../fast-highlight parse2.out" )
+ input+=( "rm -f parse*.out" )
+ input+=( "./mh-parse.zsh ../fast-highlight > out" )
+ input+=( "if [[ -o multibyte ]]; then echo multibyte is set; fi" )
+ input+=( "[[ \"a\" = *[[:alpha:]_-][[:alpha:]]# ]] && echo yes" )
+ input+=( 'git tag -a v0.98 -m "Syntax highlighting of the history entries"' )
+ input+=( 'func() { echo "a" >! phist2.db; echo "b" >>! phist2.db; fc -Rap "phist2.db"; list=( ${history[@]} ); echo "${history[1]}"; }' )
+ (( ${+ZSH_EXECUTION_STRING} == 0 )) && { print -zr "${(F)input}"; return 0; }
+ elif [[ "$1" = "-oo" ]]; then
+ input+=( 'typeset -a list\n() {\necho "a" >! phist2.db\necho "b" >>! phist2.db\nfc -Rap "phist2.db"\nlist=( ${history[@]} )\necho "${history[2]}"\necho "${history[1]}"\necho "${#history}";\ninteger size="${#history}"\nsize+=1\necho "$size" / "${history[$size]}"\nlist=( "${history[$size]}" ${history[@]} )\n}' )
+ input+=( 'typeset -a list\n() {\necho "a" >! phist2.db\necho "b" >>! phist2.db\nfc -Rap "phist2.db"\nlist=( ${history[@]} )\necho "${history[2]}"\necho "${history[1]}"\necho "${#history}";\ninteger size="${#history}"\nsize+=1\necho "$size" / "${history[$size]}"\nlist=( "${history[$size]}" ${history[@]} )\n}' )
+ input+=( 'typeset -a list\n() {\necho "a" >! phist2.db\necho "b" >>! phist2.db\nfc -Rap "phist2.db"\nlist=( ${history[@]} )\necho "${history[2]}"\necho "${history[1]}"\necho "${#history}";\ninteger size="${#history}"\nsize+=1\necho "$size" / "${history[$size]}"\nlist=( "${history[$size]}" ${history[@]} )\n}' )
+ input+=( 'typeset -a list\n() {\necho "a" >! phist2.db\necho "b" >>! phist2.db\nfc -Rap "phist2.db"\nlist=( ${history[@]} )\necho "${history[2]}"\necho "${history[1]}"\necho "${#history}";\ninteger size="${#history}"\nsize+=1\necho "$size" / "${history[$size]}"\nlist=( "${history[$size]}" ${history[@]} )\n}' )
+ input+=( 'typeset -a list\n() {\necho "a" >! phist2.db\necho "b" >>! phist2.db\nfc -Rap "phist2.db"\nlist=( ${history[@]} )\necho "${history[2]}"\necho "${history[1]}"\necho "${#history}";\ninteger size="${#history}"\nsize+=1\necho "$size" / "${history[$size]}"\nlist=( "${history[$size]}" ${history[@]} )\n}' )
+ input+=( 'typeset -a list\n() {\necho "a" >! phist2.db\necho "b" >>! phist2.db\nfc -Rap "phist2.db"\nlist=( ${history[@]} )\necho "${history[2]}"\necho "${history[1]}"\necho "${#history}";\ninteger size="${#history}"\nsize+=1\necho "$size" / "${history[$size]}"\nlist=( "${history[$size]}" ${history[@]} )\n}' )
+ input+=( 'typeset -a list\n() {\necho "a" >! phist2.db\necho "b" >>! phist2.db\nfc -Rap "phist2.db"\nlist=( ${history[@]} )\necho "${history[2]}"\necho "${history[1]}"\necho "${#history}";\ninteger size="${#history}"\nsize+=1\necho "$size" / "${history[$size]}"\nlist=( "${history[$size]}" ${history[@]} )\n}' )
+ (( ${+ZSH_EXECUTION_STRING} == 0 )) && { print -zr "${(F)input}"; return 0; }
+ elif [[ "$1" = "-ooo" ]]; then
+ local in='
+# This is an example code that is diverse and allows to test a theme
+text="An example quite long string $with variable in it"
+local param1="text $variable" param2='"'"'other $variable'"'"'
+math=$(( 10 + HISTSIZ + HISTSIZE + $SAVEHIST )) size=$(( 0 ))
+
+for (( ii = 1; ii <= size; ++ ii )); do
+ if [[ "${cmds[ii]} string" = "| string" ]]
+ then
+ sidx=${buffer[(in:ii:)\$\(?#[^\\\\]\)]} # find opening $(
+ (( sidx <= len )) && {
+ eidx=${buffer[(b:sidx:ii)[^\\\\]\)]} # find closing )
+ }
+ fi
+done'
+ (( ${+ZSH_EXECUTION_STRING} == 0 )) && { print -zr "$in"; return 0; }
+ input+=( "$in" )
+ input+=( "$in" )
+ elif [[ "$1" = "-git" ]]; then
+ local in="git lp
+git push origin master
+ git commit
+git add safari.ini zdharma.ini
+git st .
+git diff --cached
+git commit --allow-empty
+git checkout themes/zdharma.ini
+git commit --amend
+git commit -m \"Example commit message\"
+git tag -a 'v1.18' -m 'Here-string is highlighted, descriptor-variables passed to exec are correctly highlighted'
+git tag -l -n9
+git checkout cb66b11
+"
+ (( ${+ZSH_EXECUTION_STRING} == 0 )) && { print -zr "$in"; return 0; }
+ input+=( "$in" )
+ input+=( "$in" )
+ elif [[ "$1" = "-hue" ]]; then
+ local in="var=\$other; local var=\$other
+ () { eval \"\$var\"; }
+ case \$other in
+ \$var)
+ ( echo OK; )
+ ;;
+ esac
+ sudo -i -s ls -1 /var/log
+ () { ( eval \"command ls -1\" ); } argument"
+
+ (( ${+ZSH_EXECUTION_STRING} == 0 )) && { print -zr "$in"; return 0; }
+
+ input+=( "$in" "$in" )
+ elif [[ "$1" = "-hol" ]]; then
+ local in="var=\$( other )
+local var2=\$(( other + 1 ))
+() { eval \"\$var\"; }
+sudo -i -s ls -1 >/tmp/ls-log.txt /var/log
+IFS=\$'\\n' print -rl -- \$(command ls -1 | tee -a /tmp/ls-1.txt)
+var3=\$(( HISTSIZE + 10 + \$var ))
+local var4=\$( other command )
+touch \$(( HISTSIZE + \$SAVEHIST + 10 ))
+case \$other in
+ \$var)
+ ( echo OK; )
+ ;;
+ \$var3)
+ ( if { true } { noglob echo yes } )
+esac
+( builtin cd /var/log; ls -1; noglob cd \"/var/log\" 'log' )
+noglob cat <<<\"\$PATH\" | tr : \"\\n\"
+if [[ \"\$var\" -gt 10 ]]; then
+ (( var = HISTSIZE + \$SAVEHIST ))
+fi
+/var/log
+sidx=\${buffer[(in:ii:)\\\$\\(?#[^\\\\\\\\]\\)]} # find opening cmd-subst
+{
+ exec {MYFD}<&0 {MYFD2}>&1
+ ( read <&\$MYFD line; echo \$line >&\$MYFD2 && { builtin print \${match[1]}Written. } )
+} always {
+ (( MYFD > 0 )) && { print -rl -- -myfd:\$MYFD >&\$MYFD2 && print \"Sent.\" '(to filedescriptor)'; }
+}
+command sleep \"\$(( \$a + b + \${cde} + \${(s::)fgh[ijk]} + \\\$l + \\m + \\\" ))\"
+for (( i = 0; i <= 2; ++ i )) { print \$i; }
+"
+
+ (( ${+ZSH_EXECUTION_STRING} == 0 )) && { print -zr "$in"; return 0; }
+
+ input+=( "$in" )
+ fi
+
+ typeset -a long_input
+ integer i
+ for (( i=1; i<= 50; i ++ )); do
+ long_input+=( "${input[@]}" )
+ done
+
+ typeset -F SECONDS
+ SECONDS=0
+
+ local right_brace_is_recognised_everywhere
+ integer path_dirs_was_set multi_func_def ointeractive_comments
+ -fast-highlight-fill-option-variables
+
+ local BUFFER
+ for BUFFER in "${long_input[@]}"; do
+ reply=( )
+ () {
+ -fast-highlight-init
+ -fast-highlight-process "" "$BUFFER" "0"
+ -fast-highlight-string-process "" "$BUFFER"
+ }
+ done
+
+ print "Running time: $SECONDS"
+ zprof | head
+# File input?
+elif [[ -r "$1" ]]; then
+ # Load from given file
+ local BUFFER="$(<$1)"
+
+ typeset -F SECONDS
+ SECONDS=0
+
+ reply=( )
+ -fast-highlight-init
+
+ local right_brace_is_recognised_everywhere
+ integer path_dirs_was_set multi_func_def ointeractive_comments
+ -fast-highlight-fill-option-variables
+
+ () {
+ -fast-highlight-process "" "$BUFFER" "0"
+ -fast-highlight-string-process "" "$BUFFER"
+ }
+
+ print "Running time: $SECONDS"
+ zprof | head
+
+ # This output can be diffed to detect changes in operation
+ if [[ -z "$2" ]]; then
+ print -rl -- "${reply[@]}" >! out.parse
+ else
+ print -rl -- "${reply[@]}" >! "$2"
+ fi
+else
+ if [[ -z "$1" ]]; then
+ print -u2 "Usage: ./parse.zsh {to-parse file} [region_highlight output file]"
+ exit 2
+ else
+ print -u2 "Unreadable to-parse file \`$1', aborting"
+ exit 3
+ fi
+fi
+
+exit 0
+
+# vim:ft=zsh