blob: dcfa553547f25158ce4f83f585dd9fd150683f9d [file] [log] [blame]
Aliaksei Budavei48fa3192024-12-30 10:23:50 +01001#!/bin/bash
2# VIM_TEST_SETUP highlight link shArrayValue Identifier
3# VIM_TEST_SETUP highlight link shBracketExprDelim Structure
4# VIM_TEST_SETUP highlight link shCharClass Todo
5# VIM_TEST_SETUP highlight link shRange CursorLine
6
7
8
9
10[[ ( "$1" == ?(-)+([0-9]) && "$1" =~ ^-?[[:digit:]]+$ &&
11'^?(-)+([[:digit:]])$' == "$2" && ! "^-?[0-9]+$" =~ "$2" ) ]] || :
12
13[ \( "$1" != "?(-)+([0-9])" -a "$1" != '?(-)+([[:digit:]])' \) ] &&
14[ \( "?(-)+([[:digit:]])" != "$2" -a '?(-)+([0-9])' != "$2" \) ] || :
15
16# Match "\[0\]\[0\]", "{0}{0}", etc.
17: [[{][0-9]*[]}][[{][[:digit:]]*[]}]
18: [\
19[{][0-9]*[]}][[{][[:digit:]]*[]}]
20: [[\
21{][0-9]*[]}][[{][[:digit:]]*[]}]
22: [[{\
23][0-9]*[]}][[{][[:digit:]]*[]}]
24: [[{]\
25[0-9]*[]}][[{][[:digit:]]*[]}]
26: [[{][\
270-9]*[]}][[{][[:digit:]]*[]}]
28: [[{][0-9\
29]*[]}][[{][[:digit:]]*[]}]
30: [[{][0-9]\
31*[]}][[{][[:digit:]]*[]}]
32: [[{][0-9]*\
33[]}][[{][[:digit:]]*[]}]
34: [[{][0-9]*[]\
35}][[{][[:digit:]]*[]}]
36: [[{][0-9]*[]}\
37][[{][[:digit:]]*[]}]
38: [[{][0-9]*[]}]\
39[[{][[:digit:]]*[]}]
40: [[{][0-9]*[]}][\
41[{][[:digit:]]*[]}]
42: [[{][0-9]*[]}][[\
43{][[:digit:]]*[]}]
44: [[{][0-9]*[]}][[{\
45][[:digit:]]*[]}]
46: [[{][0-9]*[]}][[{]\
47[[:digit:]]*[]}]
48: [[{][0-9]*[]}][[{][\
49[:digit:]]*[]}]
50: [[{][0-9]*[]}][[{][[:digit:]\
51]*[]}]
52: [[{][0-9]*[]}][[{][[:digit:]]\
53*[]}]
54: [[{][0-9]*[]}][[{][[:digit:]]*\
55[]}]
56: [[{][0-9]*[]}][[{][[:digit:]]*[]\
57}]
58: [[{][0-9]*[]}][[{][[:digit:]]*[]}\
59]
60: [[{][0-9]*[]}][[{][[:digit:]]*[[.].]}]
61: [[{][0-9]*[]}][[{][[:digit:]]*[\
62[.].]}]
63: [[{][0-9]*[]}][[{][[:digit:]]*[[.].]\
64}]
65: [[{][0-9]*[]}][[{][[:digit:]]*[[.].]}\
66]
67
68# Match "\[0\]\[0\]", "{0}{0}", etc.
69case "$1" in
70[[{][0-9]*[]}][[{][[:digit:]]*[]}]*) : [0-9]; : [!0-9]; : [^0-9];;
71[\
72[{][0-9]*[]}][[{][[:digit:]]*[]}]*) : [0123]; : [!0123]; : [^0123];;
73[[\
74{][0-9]*[]}][[{][[:digit:]]*[]}]*) : [1[.0.]]; : [![.0.]]; : [^[.0.]^];;
75[[{\
76][0-9]*[]}][[{][[:digit:]]*[]}]*) : [1[=0=]]; : [![=0=]!]; : [^[=0=]];;
77[[{]\
78[0-9]*[]}][[{][[:digit:]]*[]}]*) ;;
79[[{][\
800-9]*[]}][[{][[:digit:]]*[]}]*) ;;
81[[{][0-9\
82]*[]}][[{][[:digit:]]*[]}]*) : ?[[:foo:]]?; : [![:foo:]]?; : ?[^[:foo:]];;
83[[{][0-9]\
84*[]}][[{][[:digit:]]*[]}]*) : [[:digit:]]; : [![:digit:]]; : [^[:digit:]];;
85[[{][0-9]*\
86[]}][[{][[:digit:]]*[]}]*) : "${1^[[:lower:]]}"; : "${1^^[a-z]}";;
87[[{][0-9]*[]\
88}][[{][[:digit:]]*[]}]*) : "${1,[[:upper:]]}"; : "${1,,[A-Z]}";;
89[[{][0-9]*[]}\
90][[{][[:digit:]]*[]}]*) ;;
91[[{][0-9]*[]}]\
92[[{][[:digit:]]*[]}]*) ;;
93[[{][0-9]*[]}][\
94[{][[:digit:]]*[]}]*) : "${1#[[:digit:]]}"; : "${1##[0-9]}";;
95[[{][0-9]*[]}][[\
96{][[:digit:]]*[]}]*) : "${1%[[:digit:]]}"; : "${1%%[0-9]}";;
97[[{][0-9]*[]}][[{\
98][[:digit:]]*[]}]*) : "${1/[][:digit:][]/[0-9]}"; : "${1//[]0-9[]/[0-9]}";;
99[[{][0-9]*[]}][[{]\
100[[:digit:]]*[]}]*) : "${1/#[][:digit:][]/[0-9]}"; : "${1/%[]0-9[]/[0-9]}";;
101[[{][0-9]*[]}][[{][\
102[:digit:]]*[]}]*) ;;
103[[{][0-9]*[]}][[{][[:digit:]\
104]*[]}]*) ;;
105[[{][0-9]*[]}][[{][[:digit:]]\
106*[]}]*) : "${1#*[[.[.][.].]]}"; : "${1%[[.].][.[.]]*}"; : "${1#*" "[][]}";;
107[[{][0-9]*[]}][[{][[:digit:]]*\
108[]}]*) : "${1#*[[=[=][=]=]]}"; : "${1%[[=]=][=[=]]*}"; : "${1#*\ [!][]}";;
109[[{][0-9]*[]}][[{][[:digit:]]*[]\
110}]*) : "${1#*[!]]}"; : "${1#*[^]]}"; : "${1%[![]*}"; : "${1%[^[]*}";;
111[[{][0-9]*[]}][[{][[:digit:]]*[]}\
112]*) : "${1#*[!\]]}"; : "${1#*[^\]]}"; : "${1%[!\[]*}"; : "${1%[^\[]*}";;
113[[{][0-9]*[]}][[{][[:digit:]]*[]}]\
114*) ;;
115[[{][0-9]*[]}][[{][[:digit:]]*[[.].]}]\
116*) ;;
117[[{][0-9]*[]}][[{][[:digit:]]*[\
118[.].]}]*) ;;
119[[{][0-9]*[]}][[{][[:digit:]]*[[.].]\
120}]*) ;;
121[[{][0-9]*[]}][[{][[:digit:]]*[[.].]}\
122]*) ;;
123[!][:digit:][:xdigit:]\ [^[:lower:]![:upper:]]*) ;;
124[^][:digit:]0-9a-fA-F\ [![:lower:]^[:upper:]]*) ;;
125[!!] | [!![] | [!]!] | [!^] | [!^[] | [!]^]) ;;
126[^!] | [^![] | [^]!] | [^^] | [^^[] | [^]^]) ;;
127esac
128
129# Match "\[0\]\[0\]", "{0}{0}", etc.
130: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]}]}"
131: "${1#*\
132[[{][0-9]*[]}][[{][[:digit:]]*[]}]}"
133: "${1#*[\
134[{][0-9]*[]}][[{][[:digit:]]*[]}]}"
135: "${1#*[[\
136{][0-9]*[]}][[{][[:digit:]]*[]}]}"
137: "${1#*[[{\
138][0-9]*[]}][[{][[:digit:]]*[]}]}"
139: "${1#*[[{]\
140[0-9]*[]}][[{][[:digit:]]*[]}]}"
141: "${1#*[[{][\
1420-9]*[]}][[{][[:digit:]]*[]}]}"
143: "${1#*[[{][0-9\
144]*[]}][[{][[:digit:]]*[]}]}"
145: "${1#*[[{][0-9]\
146*[]}][[{][[:digit:]]*[]}]}"
147: "${1#*[[{][0-9]*\
148[]}][[{][[:digit:]]*[]}]}"
149: "${1#*[[{][0-9]*[]\
150}][[{][[:digit:]]*[]}]}"
151: "${1#*[[{][0-9]*[]}\
152][[{][[:digit:]]*[]}]}"
153: "${1#*[[{][0-9]*[]}]\
154[[{][[:digit:]]*[]}]}"
155: "${1#*[[{][0-9]*[]}][\
156[{][[:digit:]]*[]}]}"
157: "${1#*[[{][0-9]*[]}][[\
158{][[:digit:]]*[]}]}"
159: "${1#*[[{][0-9]*[]}][[{\
160][[:digit:]]*[]}]}"
161: "${1#*[[{][0-9]*[]}][[{]\
162[[:digit:]]*[]}]}"
163: "${1#*[[{][0-9]*[]}][[{][\
164[:digit:]]*[]}]}"
165: "${1#*[[{][0-9]*[]}][[{][[:digit:]\
166]*[]}]}"
167: "${1#*[[{][0-9]*[]}][[{][[:digit:]]\
168*[]}]}"
169: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*\
170[]}]}"
171: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]\
172}]}"
173: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]}\
174]}"
175: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]}]\
176}"
177: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[[.].]}]}"
178: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[\
179[.].]}]}"
180: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[[.].]\
181}]}"
182: "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[[.].]}]\
183}"
184
185: *[x[=[=][=]=]]; : [x[=]=][=[=]]*; : *[x[.[.][.].]]; : [x[.].][.[.]]*
186: *[[=[=]x[=]=]]; : [[=]=]x[=[=]]*; : *[[.[.]x[.].]]; : [[.].]x[.[.]]*
187: *[[=[=][=]=]x]; : [[=]=][=[=]x]*; : *[[.[.][.].]x]; : [[.].][.[.]x]*
188: [!]]; : [^]]; : [![]; : [^[]; : [!\]]; : [^\]]; : [!\[]; : [^\[]
189: [$'\x5b']; : [$'\x5d']; : []]; : [[]; : [\]]; : [\[]
190: [$'\x20'[]; : [" "[]; : [' '[]; : [\ []; : [\ \[]; : "${1#[ ]}"
191: [[$'\x20']; : [[" "]; : [[' ']; : [[\ ]; : [\[\ ]; : "${1#[ ]}"
192: [^$'\x20'[]; : [!" "[]; : [^' '[]; : [!\ []; : "${1#[^ ]}"
193: [![$'\x20']; : [^[" "]; : [![' ']; : [^[\ ]; : "${1#[! ]}"
194
195nl='
196'
197echo "${1#${1%%[!"${nl}"]*}}"; echo "${1#${1%%[!'${nl}']*}}"
198echo "${1#${1%%[!\"${nl}]*}}"; echo "${1#${1%%[!\'${nl}]*}}"
199echo "${1#${1%%[!${nl}\"]*}}"; echo "${1#${1%%[!${nl}\']*}}"
200
201bins=(); bins=(0 1); eval bins+=({0..1})
202bins[0]=0; bins[1]=1; eval bins+=(\${bins[{1..0}]}); unset bins[3] bins[2]
203bins=([8#0]=$((2#100)) [$((8#1))]=$((2#10)) [3]=${bins[2#1]} ${bins[0]})
204(echo sum[$((bins[16#3] + bins[8#2] + bins[2#1] + bins[0]))])
205eval unset bins[{0..$((${#bins[*]} - 1))}]
206: