diff options
-rw-r--r-- | plugins/el.sh | 379 |
1 files changed, 189 insertions, 190 deletions
diff --git a/plugins/el.sh b/plugins/el.sh index 87eca03..8bc1e84 100644 --- a/plugins/el.sh +++ b/plugins/el.sh | |||
@@ -6,54 +6,55 @@ | |||
6 | EL_ESCAPE=true | 6 | EL_ESCAPE=true |
7 | 7 | ||
8 | el() { # el NAME ARGS... | 8 | el() { # el NAME ARGS... |
9 | ## Create an HTML element named NAME using ARGS. | 9 | ## Create an HTML element named NAME using ARGS. |
10 | # Any ARGS that contain an equals sign will be made into attributes of the | 10 | # Any ARGS that contain an equals sign will be made into attributes of the |
11 | # element, until the special argument '--' which will stop attribute | 11 | # element, until the special argument '--' which will stop attribute |
12 | # processing. While some nesting is possible with 'el', the way bash | 12 | # processing. While some nesting is possible with 'el', the way bash |
13 | # expansion works it's not great. | 13 | # expansion works it's not great. |
14 | # | 14 | # |
15 | # No validation is done on any arguments in this function. It could create | 15 | # No validation is done on any arguments in this function. It could create |
16 | # something that looks vaguely like an HTML element but isn't valid. | 16 | # something that looks vaguely like an HTML element but isn't valid. |
17 | _name="$1"; shift || return 1 # Require at least an element name | 17 | _name="$1" |
18 | _element="$_name" | 18 | shift || return 1 # Require at least an element name |
19 | _content="" | 19 | _element="$_name" |
20 | _process_args=true | 20 | _content="" |
21 | _process_args=true | ||
21 | 22 | ||
22 | while test -n "$1"; do | 23 | while test -n "$1"; do |
23 | case "$1" in | 24 | case "$1" in |
24 | --) | 25 | --) |
25 | if "$_process_args"; then | 26 | if "$_process_args"; then |
26 | _process_args=false | 27 | _process_args=false |
27 | else | 28 | else |
28 | _content="$_content${_content:+ }$1" | 29 | _content="$_content${_content:+ }$1" |
29 | fi | 30 | fi |
30 | ;; | 31 | ;; |
31 | '\<'*) | 32 | '\<'*) |
32 | _process_args=false | 33 | _process_args=false |
33 | _content="$_content${_content:+ }$1" | 34 | _content="$_content${_content:+ }$1" |
34 | ;; | 35 | ;; |
35 | *=*) | 36 | *=*) |
36 | if "$_process_args"; then | 37 | if "$_process_args"; then |
37 | _element="$_element ${1%%=*}=\"${1#*=}\"" | 38 | _element="$_element ${1%%=*}=\"${1#*=}\"" |
38 | else | 39 | else |
39 | _content="$_content${_content:+ }$1" | 40 | _content="$_content${_content:+ }$1" |
40 | fi | 41 | fi |
41 | ;; | 42 | ;; |
42 | *) | 43 | *) |
43 | if "$_process_args"; then | 44 | if "$_process_args"; then |
44 | _process_args=false | 45 | _process_args=false |
45 | fi | 46 | fi |
46 | _content="$_content${_content:+ }$1" | 47 | _content="$_content${_content:+ }$1" |
47 | ;; | 48 | ;; |
48 | esac | 49 | esac |
49 | shift | 50 | shift |
50 | done | 51 | done |
51 | if $EL_ESCAPE; then | 52 | if $EL_ESCAPE; then |
52 | fmt='\<%s\>%s\</%s\>\n' | 53 | fmt='\<%s\>%s\</%s\>\n' |
53 | else | 54 | else |
54 | fmt='<%s>%s</%s>\n' | 55 | fmt='<%s>%s</%s>\n' |
55 | fi | 56 | fi |
56 | printf "$fmt" "$_element" "$_content" "$_name" | 57 | printf "$fmt" "$_element" "$_content" "$_name" |
57 | } | 58 | } |
58 | 59 | ||
59 | ### HTML5 element aliases | 60 | ### HTML5 element aliases |
@@ -66,149 +67,147 @@ el() { # el NAME ARGS... | |||
66 | : "${EL_PREFIX:=_}" | 67 | : "${EL_PREFIX:=_}" |
67 | 68 | ||
68 | for e in \ | 69 | for e in \ |
69 | html \ | 70 | html \ |
70 | base \ | 71 | base \ |
71 | head \ | 72 | head \ |
72 | link \ | 73 | link \ |
73 | meta \ | 74 | meta \ |
74 | style \ | 75 | style \ |
75 | title \ | 76 | title \ |
76 | body \ | 77 | body \ |
77 | address \ | 78 | address \ |
78 | article \ | 79 | article \ |
79 | aside \ | 80 | aside \ |
80 | footer \ | 81 | footer \ |
81 | header \ | 82 | header \ |
82 | h1 \ | 83 | h1 \ |
83 | h2 \ | 84 | h2 \ |
84 | h3 \ | 85 | h3 \ |
85 | h4 \ | 86 | h4 \ |
86 | h5 \ | 87 | h5 \ |
87 | h6 \ | 88 | h6 \ |
88 | main \ | 89 | main \ |
89 | nav \ | 90 | nav \ |
90 | section \ | 91 | section \ |
91 | blockquote \ | 92 | blockquote \ |
92 | dd \ | 93 | dd \ |
93 | div \ | 94 | div \ |
94 | dl \ | 95 | dl \ |
95 | dt \ | 96 | dt \ |
96 | figcaption \ | 97 | figcaption \ |
97 | figure \ | 98 | figure \ |
98 | hr \ | 99 | hr \ |
99 | li \ | 100 | li \ |
100 | menu \ | 101 | menu \ |
101 | ol \ | 102 | ol \ |
102 | p \ | 103 | p \ |
103 | pre \ | 104 | pre \ |
104 | ul \ | 105 | ul \ |
105 | a \ | 106 | a \ |
106 | abbr \ | 107 | abbr \ |
107 | b \ | 108 | b \ |
108 | bdi \ | 109 | bdi \ |
109 | bdo \ | 110 | bdo \ |
110 | br \ | 111 | br \ |
111 | cite \ | 112 | cite \ |
112 | code \ | 113 | code \ |
113 | data \ | 114 | data \ |
114 | dfn \ | 115 | dfn \ |
115 | em \ | 116 | em \ |
116 | i \ | 117 | i \ |
117 | kbd \ | 118 | kbd \ |
118 | mark \ | 119 | mark \ |
119 | q \ | 120 | q \ |
120 | rp \ | 121 | rp \ |
121 | rt \ | 122 | rt \ |
122 | ruby \ | 123 | ruby \ |
123 | s \ | 124 | s \ |
124 | samp \ | 125 | samp \ |
125 | small \ | 126 | small \ |
126 | span \ | 127 | span \ |
127 | strong \ | 128 | strong \ |
128 | sub \ | 129 | sub \ |
129 | sup \ | 130 | sup \ |
130 | time \ | 131 | time \ |
131 | u \ | 132 | u \ |
132 | var \ | 133 | var \ |
133 | wbr \ | 134 | wbr \ |
134 | area \ | 135 | area \ |
135 | audio \ | 136 | audio \ |
136 | img \ | 137 | img \ |
137 | map \ | 138 | map \ |
138 | track \ | 139 | track \ |
139 | video \ | 140 | video \ |
140 | embed \ | 141 | embed \ |
141 | iframe \ | 142 | iframe \ |
142 | object \ | 143 | object \ |
143 | picture \ | 144 | picture \ |
144 | portal \ | 145 | portal \ |
145 | source \ | 146 | source \ |
146 | svg \ | 147 | svg \ |
147 | math \ | 148 | math \ |
148 | canvas \ | 149 | canvas \ |
149 | noscript \ | 150 | noscript \ |
150 | script \ | 151 | script \ |
151 | del \ | 152 | del \ |
152 | ins \ | 153 | ins \ |
153 | caption \ | 154 | caption \ |
154 | col \ | 155 | col \ |
155 | colgroup \ | 156 | colgroup \ |
156 | table \ | 157 | table \ |
157 | tbody \ | 158 | tbody \ |
158 | td \ | 159 | td \ |
159 | tfoot \ | 160 | tfoot \ |
160 | th \ | 161 | th \ |
161 | thead \ | 162 | thead \ |
162 | tr \ | 163 | tr \ |
163 | button \ | 164 | button \ |
164 | datalist \ | 165 | datalist \ |
165 | fieldset \ | 166 | fieldset \ |
166 | form \ | 167 | form \ |
167 | input \ | 168 | input \ |
168 | label \ | 169 | label \ |
169 | legend \ | 170 | legend \ |
170 | meter \ | 171 | meter \ |
171 | optgroup \ | 172 | optgroup \ |
172 | option \ | 173 | option \ |
173 | output \ | 174 | output \ |
174 | progress \ | 175 | progress \ |
175 | select \ | 176 | select \ |
176 | textarea \ | 177 | textarea \ |
177 | details \ | 178 | details \ |
178 | dialog \ | 179 | dialog \ |
179 | summary \ | 180 | summary \ |
180 | slot \ | 181 | slot \ |
181 | template \ | 182 | template \ |
182 | acronym \ | 183 | acronym \ |
183 | applet \ | 184 | applet \ |
184 | bgsound \ | 185 | bgsound \ |
185 | big \ | 186 | big \ |
186 | blink \ | 187 | blink \ |
187 | center \ | 188 | center \ |
188 | content \ | 189 | content \ |
189 | dir \ | 190 | dir \ |
190 | font \ | 191 | font \ |
191 | frame \ | 192 | frame \ |
192 | frameset \ | 193 | frameset \ |
193 | image \ | 194 | image \ |
194 | keygen \ | 195 | keygen \ |
195 | marquee \ | 196 | marquee \ |
196 | menuitem \ | 197 | menuitem \ |
197 | nobr \ | 198 | nobr \ |
198 | noembed \ | 199 | noembed \ |
199 | noframes \ | 200 | noframes \ |
200 | param \ | 201 | param \ |
201 | plaintext \ | 202 | plaintext \ |
202 | rb \ | 203 | rb \ |
203 | rtc \ | 204 | rtc \ |
204 | shadow \ | 205 | shadow \ |
205 | spacer \ | 206 | spacer \ |
206 | strike \ | 207 | strike \ |
207 | tt \ | 208 | tt \ |
208 | xmp \ | 209 | xmp; do |
209 | ; do | 210 | eval "alias $EL_PREFIX$e='el $e'" |
210 | eval "alias $EL_PREFIX$e='el $e'" | ||
211 | done | 211 | done |
212 | 212 | ||
213 | |||
214 | # el.sh ends here | 213 | # el.sh ends here |