markaby 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/markaby/tags.rb DELETED
@@ -1,310 +0,0 @@
1
- module Markaby
2
- FORM_TAGS = [ :form, :input, :select, :textarea ]
3
- SELF_CLOSING_TAGS = [:area, :base, :br, :col, :command, :embed, :frame, :hr,
4
- :img, :input, :keygen, :link, :meta, :param, :source,
5
- :track, :wbr]
6
-
7
- # Common sets of attributes.
8
- AttrCore = [:id, :class, :style, :title]
9
- AttrI18n = [:lang, 'xml:lang'.intern, :dir]
10
- AttrEvents = [:onclick,
11
- :ondblclick,
12
- :onmousedown,
13
- :onmouseup,
14
- :onmouseover,
15
- :onmousemove,
16
- :onmouseout,
17
- :onkeypress,
18
- :onkeydown,
19
- :onkeyup]
20
- AttrFocus = [:accesskey, :tabindex, :onfocus, :onblur]
21
- AttrHAlign = [:align, :char, :charoff]
22
- AttrVAlign = [:valign]
23
- Attrs = AttrCore + AttrI18n + AttrEvents
24
-
25
- AttrsBoolean = [
26
- :checked, :disabled, :multiple, :readonly, :selected, # standard forms
27
- :autofocus, :required, :novalidate, :formnovalidate, # HTML5 forms
28
- :defer, :ismap, # <script defer>, <img ismap>
29
- :compact, :declare, :noresize, :noshade, :nowrap # deprecated or unused
30
- ]
31
-
32
- class Tagset
33
- class << self
34
- attr_accessor :tags, :tagset, :forms, :self_closing, :doctype
35
-
36
- def default_options
37
- {
38
- :tagset => self
39
- }
40
- end
41
- end
42
- end
43
-
44
- class XmlTagset < Tagset
45
- class << self
46
- def default_options
47
- super.merge({
48
- :output_xml_instruction => true,
49
- :output_meta_tag => 'xhtml',
50
- :root_attributes => {
51
- :xmlns => 'http://www.w3.org/1999/xhtml',
52
- :'xml:lang' => 'en',
53
- :lang => 'en'
54
- }
55
- })
56
- end
57
- end
58
- end
59
-
60
- # All the tags and attributes from XHTML 1.0 Strict
61
- class XHTMLStrict < XmlTagset
62
- @doctype = ['-//W3C//DTD XHTML 1.0 Strict//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd']
63
- @tagset = {
64
- :html => AttrI18n + [:id, :xmlns],
65
- :head => AttrI18n + [:id, :profile],
66
- :title => AttrI18n + [:id],
67
- :base => [:href, :id],
68
- :meta => AttrI18n + [:id, :http, :name, :content, :scheme, 'http-equiv'.intern],
69
- :link => Attrs + [:charset, :href, :hreflang, :type, :rel, :rev, :media],
70
- :style => AttrI18n + [:id, :type, :media, :title, 'xml:space'.intern],
71
- :script => [:id, :charset, :type, :src, :defer, 'xml:space'.intern],
72
- :noscript => Attrs,
73
- :body => Attrs + [:onload, :onunload],
74
- :div => Attrs,
75
- :p => Attrs,
76
- :ul => Attrs,
77
- :ol => Attrs,
78
- :li => Attrs,
79
- :dl => Attrs,
80
- :dt => Attrs,
81
- :dd => Attrs,
82
- :address => Attrs,
83
- :hr => Attrs,
84
- :pre => Attrs + ['xml:space'.intern],
85
- :blockquote => Attrs + [:cite],
86
- :ins => Attrs + [:cite, :datetime],
87
- :del => Attrs + [:cite, :datetime],
88
- :a => Attrs + AttrFocus + [:charset, :type, :name, :href, :hreflang, :rel, :rev, :shape, :coords],
89
- :span => Attrs,
90
- :bdo => AttrCore + AttrEvents + [:lang, 'xml:lang'.intern, :dir],
91
- :br => AttrCore,
92
- :em => Attrs,
93
- :strong => Attrs,
94
- :dfn => Attrs,
95
- :code => Attrs,
96
- :samp => Attrs,
97
- :kbd => Attrs,
98
- :var => Attrs,
99
- :cite => Attrs,
100
- :abbr => Attrs,
101
- :acronym => Attrs,
102
- :q => Attrs + [:cite],
103
- :sub => Attrs,
104
- :sup => Attrs,
105
- :tt => Attrs,
106
- :i => Attrs,
107
- :b => Attrs,
108
- :big => Attrs,
109
- :small => Attrs,
110
- :object => Attrs + [:declare, :classid, :codebase, :data, :type, :codetype, :archive, :standby, :height, :width, :usemap, :name, :tabindex],
111
- :param => [:id, :name, :value, :valuetype, :type],
112
- :img => Attrs + [:src, :alt, :longdesc, :height, :width, :usemap, :ismap],
113
- :map => AttrI18n + AttrEvents + [:id, :class, :style, :title, :name],
114
- :area => Attrs + AttrFocus + [:shape, :coords, :href, :nohref, :alt],
115
- :form => Attrs + [:action, :method, :enctype, :onsubmit, :onreset, :accept, :accept],
116
- :label => Attrs + [:for, :accesskey, :onfocus, :onblur],
117
- :input => Attrs + AttrFocus + [:type, :name, :value, :checked, :disabled, :readonly, :size, :maxlength, :src, :alt, :usemap, :onselect, :onchange, :accept],
118
- :select => Attrs + [:name, :size, :multiple, :disabled, :tabindex, :onfocus, :onblur, :onchange],
119
- :optgroup => Attrs + [:disabled, :label],
120
- :option => Attrs + [:selected, :disabled, :label, :value],
121
- :textarea => Attrs + AttrFocus + [:name, :rows, :cols, :disabled, :readonly, :onselect, :onchange],
122
- :fieldset => Attrs,
123
- :legend => Attrs + [:accesskey],
124
- :button => Attrs + AttrFocus + [:name, :value, :type, :disabled],
125
- :table => Attrs + [:summary, :width, :border, :frame, :rules, :cellspacing, :cellpadding],
126
- :caption => Attrs,
127
- :colgroup => Attrs + AttrHAlign + AttrVAlign + [:span, :width],
128
- :col => Attrs + AttrHAlign + AttrVAlign + [:span, :width],
129
- :thead => Attrs + AttrHAlign + AttrVAlign,
130
- :tfoot => Attrs + AttrHAlign + AttrVAlign,
131
- :tbody => Attrs + AttrHAlign + AttrVAlign,
132
- :tr => Attrs + AttrHAlign + AttrVAlign,
133
- :th => Attrs + AttrHAlign + AttrVAlign + [:abbr, :axis, :headers, :scope, :rowspan, :colspan],
134
- :td => Attrs + AttrHAlign + AttrVAlign + [:abbr, :axis, :headers, :scope, :rowspan, :colspan],
135
- :h1 => Attrs,
136
- :h2 => Attrs,
137
- :h3 => Attrs,
138
- :h4 => Attrs,
139
- :h5 => Attrs,
140
- :h6 => Attrs
141
- }
142
-
143
- @tags = @tagset.keys
144
- @forms = @tags & FORM_TAGS
145
- @self_closing = @tags & SELF_CLOSING_TAGS
146
- end
147
-
148
- # Additional tags found in XHTML 1.0 Transitional
149
- class XHTMLTransitional < XmlTagset
150
- @doctype = ['-//W3C//DTD XHTML 1.0 Transitional//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd']
151
- @tagset = XHTMLStrict.tagset.merge({
152
- :strike => Attrs,
153
- :center => Attrs,
154
- :dir => Attrs + [:compact],
155
- :noframes => Attrs,
156
- :basefont => [:id, :size, :color, :face],
157
- :u => Attrs,
158
- :menu => Attrs + [:compact],
159
- :iframe => AttrCore + [:longdesc, :name, :src, :frameborder, :marginwidth, :marginheight, :scrolling, :align, :height, :width],
160
- :font => AttrCore + AttrI18n + [:size, :color, :face],
161
- :s => Attrs,
162
- :applet => AttrCore + [:codebase, :archive, :code, :object, :alt, :name, :width, :height, :align, :hspace, :vspace],
163
- :isindex => AttrCore + AttrI18n + [:prompt]
164
- })
165
-
166
- # Additional attributes found in XHTML 1.0 Transitional
167
- additional_tags = {
168
- :script => [:language],
169
- :a => [:target],
170
- :td => [:bgcolor, :nowrap, :width, :height],
171
- :p => [:align],
172
- :h5 => [:align],
173
- :h3 => [:align],
174
- :li => [:type, :value],
175
- :div => [:align],
176
- :pre => [:width],
177
- :body => [:background, :bgcolor, :text, :link, :vlink, :alink],
178
- :ol => [:type, :compact, :start],
179
- :h4 => [:align],
180
- :h2 => [:align],
181
- :object => [:align, :border, :hspace, :vspace],
182
- :img => [:name, :align, :border, :hspace, :vspace],
183
- :link => [:target],
184
- :legend => [:align],
185
- :dl => [:compact],
186
- :input => [:align],
187
- :h6 => [:align],
188
- :hr => [:align, :noshade, :size, :width],
189
- :base => [:target],
190
- :ul => [:type, :compact],
191
- :br => [:clear],
192
- :form => [:name, :target],
193
- :area => [:target],
194
- :h1 => [:align]
195
- }
196
-
197
- additional_tags.each do |k, v|
198
- @tagset[k] += v
199
- end
200
-
201
- @tags = @tagset.keys
202
- @forms = @tags & FORM_TAGS
203
- @self_closing = @tags & SELF_CLOSING_TAGS
204
- end
205
-
206
- # Additional tags found in XHTML 1.0 Frameset
207
- class XHTMLFrameset < XmlTagset
208
- @doctype = ['-//W3C//DTD XHTML 1.0 Frameset//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd']
209
- @tagset = XHTMLTransitional.tagset.merge({
210
- :frameset => AttrCore + [:rows, :cols, :onload, :onunload],
211
- :frame => AttrCore + [:longdesc, :name, :src, :frameborder, :marginwidth, :marginheight, :noresize, :scrolling]
212
- })
213
-
214
- @tags = @tagset.keys
215
- @forms = @tags & FORM_TAGS
216
- @self_closing = @tags & SELF_CLOSING_TAGS
217
- end
218
-
219
- class HTML5 < Tagset
220
- class << self
221
- def default_options
222
- super.merge({
223
- :output_xml_instruction => false,
224
- :output_meta_tag => 'html5',
225
- :root_attributes => {}
226
- })
227
- end
228
- end
229
-
230
- @doctype = ['html']
231
- @tagset = XHTMLTransitional.tagset.merge({
232
- :abbr => Attrs,
233
- :article => Attrs,
234
- :aside => Attrs,
235
- :audio => Attrs,
236
- :bdi => Attrs,
237
- :canvas => Attrs,
238
- :command => Attrs,
239
- :datalist => Attrs,
240
- :details => Attrs,
241
- :embed => Attrs,
242
- :figure => Attrs,
243
- :figcaption => Attrs,
244
- :footer => Attrs,
245
- :header => Attrs,
246
- :hgroup => Attrs,
247
- :keygen => Attrs,
248
- :mark => Attrs,
249
- :menu => Attrs,
250
- :meter => Attrs,
251
- :nav => Attrs,
252
- :output => Attrs,
253
- :progress => Attrs,
254
- :rp => Attrs,
255
- :rt => Attrs,
256
- :ruby => Attrs,
257
- :section => Attrs,
258
- :source => Attrs,
259
- :time => Attrs,
260
- :track => Attrs,
261
- :video => Attrs,
262
- :wbr => Attrs
263
- })
264
-
265
- # Additional attributes found in HTML5
266
- additional_tags = {
267
- :a => [:media, :download, :ping],
268
- :area => [:media, :download, :ping, :hreflang, :rel, :type],
269
- :base => [:target],
270
- :button => [:autofocus, :form, :formaction, :formenctype, :formmethod,
271
- :formnovalidate, :formtarget],
272
- :fieldset => [:form, :disabled, :name],
273
- :form => [:novalidate],
274
- :label => [:form],
275
- :html => [:manifest],
276
- :iframe => [:sandbox, :seamless, :srcdoc],
277
- :img => [:crossorigin],
278
- :input => [:autofocus, :placeholder, :form, :required, :autocomplete,
279
- :min, :max, :multiple, :pattern, :step, :list, :width, :height,
280
- :dirname, :formaction, :formenctype, :formmethod,
281
- :formnovalidate, :formtarget],
282
- :link => [:sizes],
283
- :meta => [:charset],
284
- :menu => [:type, :label],
285
- :object => [:form, :typemustmatch],
286
- :ol => [:reversed],
287
- :output => [:form],
288
- :script => [:async],
289
- :select => [:autofocus, :form, :required],
290
- :style => [:scoped],
291
- :textarea => [:autofocus, :placeholder, :form, :required, :dirname,
292
- :maxlength, :wrap],
293
- }
294
-
295
- AttrsHTML5 = [:contenteditable, :contextmentu, :draggable, :dropzone,
296
- :hidden, :role, :spellcheck, :translate]
297
-
298
- additional_tags.each do |k, v|
299
- @tagset[k] += v
300
- end
301
-
302
- @tagset.each do |k, v|
303
- @tagset[k] += AttrsHTML5
304
- end
305
-
306
- @tags = @tagset.keys
307
- @forms = @tags & FORM_TAGS
308
- @self_closing = @tags & SELF_CLOSING_TAGS
309
- end
310
- end