htmlcom 0.2.6 → 0.3.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/htmlcom.rb +284 -53
- data.tar.gz.sig +0 -0
- metadata +35 -55
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5c56bbfd02df1b1aa0af4dd6408b34301964015bcefed1a8a6a88b89c98d42d
|
4
|
+
data.tar.gz: 6dee7c3818848ce0428cfb5b3df0a2c7cf79b5b4139d22fde8389212dd6e7694
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31bdddd64984e4a344436918bb09e1a79acc0bb58d15a6878f8a0c28afa30da1b3486c7d68bf3464b4288faec8a7c55351f5f6bc33037dd7186bf0deb8be4c92
|
7
|
+
data.tar.gz: 46dfd28e68b5f40cabfbde02c854b2bfefaf1fbca2b7455945822b5b9635ea0f8ff45bb538130ecc987ae6e80137ab87b4b7f7c3d2dec4910fe37946a0e314ee
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/htmlcom.rb
CHANGED
@@ -9,73 +9,86 @@ require 'xml_to_sliml'
|
|
9
9
|
require 'jsajax_wizard'
|
10
10
|
require 'jsmenubuilder'
|
11
11
|
require 'jstreebuilder'
|
12
|
+
require 'rexle'
|
13
|
+
require 'rexle-builder'
|
12
14
|
|
15
|
+
# classes:
|
16
|
+
|
17
|
+
# Accordion
|
18
|
+
# Tabs (:tabs, :full_page_tabs)
|
19
|
+
# Tree
|
20
|
+
# Menu (:vertical_menu, :fixed_menu, sticky_nav, breadcrumb)
|
21
|
+
# Element # used by the HTML element
|
22
|
+
# InputElement # used by the HTML input element
|
23
|
+
# Dropdown # an HTML element
|
24
|
+
# Textarea # an HTML element
|
25
|
+
# FormBuilder
|
26
|
+
|
27
|
+
module HtmlCom
|
13
28
|
|
14
|
-
module HtmlCom
|
15
|
-
|
16
29
|
class Accordion
|
17
|
-
|
30
|
+
|
18
31
|
attr_reader :to_html, :to_css, :to_js, :to_tags
|
19
|
-
|
32
|
+
|
20
33
|
def initialize(xml, debug: false)
|
21
|
-
|
34
|
+
|
22
35
|
xml, @debug = xml, debug
|
23
|
-
|
36
|
+
|
24
37
|
# transform the accordion XML to tags XML
|
25
38
|
tags = Nokogiri::XSLT(xsl()).transform(Nokogiri::XML(xml))\
|
26
39
|
.to_xhtml(indent: 0)
|
27
|
-
|
40
|
+
|
28
41
|
@to_tags = tags # used for debugging the structure
|
29
|
-
|
42
|
+
|
30
43
|
jmb = JsMenuBuilder.new(tags, debug: debug)
|
31
|
-
|
44
|
+
|
32
45
|
pg = if Rexle.new(xml).root.attributes[:navbar] then
|
33
46
|
|
34
47
|
a = jmb.to_h.keys.sort.map {|key, _| [key, '#' + key.downcase]}
|
35
48
|
|
36
|
-
navbar = JsMenuBuilder.new(:sticky_navbar, {sticky_navbar: a,
|
49
|
+
navbar = JsMenuBuilder.new(:sticky_navbar, {sticky_navbar: a,
|
37
50
|
debug: debug})
|
38
|
-
|
51
|
+
|
39
52
|
@to_css = navbar.to_css + "\n" + jmb.to_css
|
40
53
|
@to_js = navbar.to_js + "\n" + jmb.to_js
|
41
54
|
|
42
55
|
|
43
56
|
jmb.to_webpage do |css, html, js|
|
44
|
-
|
57
|
+
|
45
58
|
[
|
46
|
-
navbar.to_css + "\n" + css,
|
47
|
-
navbar.to_html + "\n" + html,
|
59
|
+
navbar.to_css + "\n" + css,
|
60
|
+
navbar.to_html + "\n" + html,
|
48
61
|
navbar.to_js + "\n" + js
|
49
62
|
]
|
50
|
-
|
63
|
+
|
51
64
|
end
|
52
|
-
|
65
|
+
|
53
66
|
else
|
54
|
-
|
67
|
+
|
55
68
|
@to_css = jmb.to_css
|
56
69
|
@to_js = jmb.to_js
|
57
|
-
|
70
|
+
|
58
71
|
jmb.to_webpage
|
59
|
-
|
72
|
+
|
60
73
|
end
|
61
74
|
|
62
75
|
# apply the AJAX
|
63
|
-
@to_html = JsAjaxWizard.new(pg).to_html
|
76
|
+
@to_html = JsAjaxWizard.new(pg).to_html
|
64
77
|
|
65
78
|
end
|
66
|
-
|
67
|
-
|
79
|
+
|
80
|
+
|
68
81
|
private
|
69
82
|
|
70
83
|
def xsl()
|
71
|
-
|
84
|
+
|
72
85
|
xsl= %q(
|
73
86
|
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
|
74
87
|
|
75
88
|
<xsl:template match='accordion'>
|
76
89
|
|
77
90
|
<xsl:element name='tags'>
|
78
|
-
<xsl:attribute name='mode'>accordion</xsl:attribute>
|
91
|
+
<xsl:attribute name='mode'>accordion</xsl:attribute>
|
79
92
|
<xsl:apply-templates select='panel' />
|
80
93
|
</xsl:element>
|
81
94
|
|
@@ -87,10 +100,10 @@ xsl= %q(
|
|
87
100
|
<xsl:attribute name='title'>
|
88
101
|
<xsl:value-of select='@title'/>
|
89
102
|
</xsl:attribute>
|
90
|
-
|
103
|
+
|
91
104
|
<xsl:attribute name='class'>
|
92
105
|
<xsl:value-of select='@class'/>
|
93
|
-
</xsl:attribute>
|
106
|
+
</xsl:attribute>
|
94
107
|
|
95
108
|
<xsl:element name="input">
|
96
109
|
<xsl:attribute name="type">hidden</xsl:attribute>
|
@@ -117,7 +130,7 @@ xsl= %q(
|
|
117
130
|
)
|
118
131
|
|
119
132
|
end
|
120
|
-
|
133
|
+
|
121
134
|
end
|
122
135
|
|
123
136
|
class Tabs
|
@@ -155,16 +168,16 @@ xsl= %q(
|
|
155
168
|
|
156
169
|
# current options for type:
|
157
170
|
# :tabs, :full_page_tabs
|
158
|
-
|
171
|
+
|
159
172
|
def initialize(type=:tabs, headings: [], xml: nil, debug: false)
|
160
173
|
|
161
174
|
@type, @debug = type, debug
|
162
175
|
@build = JsMenuBuilder.new(type, headings: headings)
|
163
|
-
|
176
|
+
|
164
177
|
@active_tab = 1
|
165
178
|
|
166
179
|
@tab = headings.map do |heading|
|
167
|
-
Tab.new heading, content: "<h3>#{heading}</h3>",
|
180
|
+
Tab.new heading, content: "<h3>#{heading}</h3>",
|
168
181
|
callback: self, debug: debug
|
169
182
|
end
|
170
183
|
|
@@ -203,19 +216,19 @@ xsl= %q(
|
|
203
216
|
tabs = @tab.map do |tab|
|
204
217
|
tab.title ? tab.to_a : nil
|
205
218
|
end.compact.to_h
|
206
|
-
|
219
|
+
|
207
220
|
if @debug then
|
208
|
-
puts 'inside ping; tabs: ' + tabs.inspect
|
221
|
+
puts 'inside ping; tabs: ' + tabs.inspect
|
209
222
|
puts '@active_tab: ' + @active_tab.inspect
|
210
223
|
end
|
211
|
-
|
212
|
-
@build = JsMenuBuilder.new(@type, tabs: tabs,
|
224
|
+
|
225
|
+
@build = JsMenuBuilder.new(@type, tabs: tabs,
|
213
226
|
active: @active_tab, debug: @debug)
|
214
227
|
|
215
228
|
end
|
216
229
|
|
217
230
|
alias refresh ping
|
218
|
-
|
231
|
+
|
219
232
|
def to_css()
|
220
233
|
@build.to_css
|
221
234
|
end
|
@@ -239,42 +252,260 @@ xsl= %q(
|
|
239
252
|
end
|
240
253
|
|
241
254
|
end
|
242
|
-
|
255
|
+
|
243
256
|
class Tree
|
244
|
-
|
257
|
+
|
258
|
+
# hn = heading number
|
245
259
|
def initialize(s, debug: false, hn: 2)
|
246
260
|
jtb = JsTreeBuilder.new(:sidebar, {src: s, hn: hn, debug: debug})
|
247
|
-
@html = jtb.to_webpage
|
261
|
+
@html = jtb.to_webpage
|
248
262
|
end
|
249
|
-
|
263
|
+
|
250
264
|
def to_webpage()
|
251
265
|
@html
|
252
266
|
end
|
253
|
-
|
267
|
+
|
254
268
|
end
|
255
|
-
|
256
|
-
class
|
257
|
-
|
258
|
-
|
259
|
-
|
269
|
+
|
270
|
+
class Menu
|
271
|
+
|
272
|
+
# current options
|
273
|
+
# :vertical_menu, :fixed_menu, sticky_nav, breadcrumb
|
274
|
+
#
|
275
|
+
def initialize(type=:vertical_menu, links, debug: false)
|
276
|
+
@jtb = JsMenuBuilder.new(type, {items: links, debug: debug})
|
260
277
|
end
|
261
|
-
|
278
|
+
|
262
279
|
def to_css()
|
263
280
|
@jtb.to_css
|
264
|
-
end
|
265
|
-
|
281
|
+
end
|
282
|
+
|
266
283
|
def to_html()
|
267
284
|
@jtb.to_html
|
268
|
-
end
|
269
|
-
|
285
|
+
end
|
286
|
+
|
270
287
|
def to_js()
|
271
288
|
@jtb.to_js
|
272
289
|
end
|
273
|
-
|
290
|
+
|
274
291
|
def to_webpage()
|
275
292
|
@jtb.to_webpage
|
276
293
|
end
|
277
|
-
|
278
|
-
end
|
294
|
+
|
295
|
+
end
|
296
|
+
|
297
|
+
class MindWordsWidget
|
298
|
+
|
299
|
+
def initialize(attributes)
|
300
|
+
|
301
|
+
@attributes = {
|
302
|
+
content: '',
|
303
|
+
action: 'mwupdate',
|
304
|
+
target: 'icontent'
|
305
|
+
}.merge(attributes)
|
306
|
+
|
307
|
+
end
|
308
|
+
|
309
|
+
def input(params={})
|
310
|
+
|
311
|
+
h = @attributes.merge(params)
|
312
|
+
content = h[:content]
|
313
|
+
action = h[:action]
|
314
|
+
target = h[:target]
|
315
|
+
|
316
|
+
@html =<<EOF
|
317
|
+
<form action='#{action}' method='post' target='#{target}'>
|
318
|
+
<textarea name='content' cols='30' rows='19'>
|
319
|
+
#{content}
|
320
|
+
</textarea>
|
321
|
+
<input type='submit' value='Submit'/>
|
322
|
+
</form>
|
323
|
+
EOF
|
324
|
+
self
|
325
|
+
|
326
|
+
end
|
327
|
+
|
328
|
+
def to_html()
|
329
|
+
@html
|
330
|
+
end
|
331
|
+
|
332
|
+
end
|
333
|
+
|
334
|
+
class Element
|
335
|
+
|
336
|
+
def initialize(obj)
|
337
|
+
|
338
|
+
@doc = build(obj)
|
339
|
+
puts '@doc.xml : ' + @doc.xml.inspect
|
340
|
+
if @id then
|
341
|
+
elem = @doc.root.element(@tag + '/' + @htmltag)
|
342
|
+
puts 'elem: ' +elem.inspect
|
343
|
+
elem.attributes[:name] = @id
|
344
|
+
elem.attributes[:id] = @id
|
345
|
+
end
|
346
|
+
|
347
|
+
end
|
348
|
+
|
349
|
+
def html_element()
|
350
|
+
@doc.root.element(@tag + '/' + @htmltag)
|
351
|
+
end
|
352
|
+
|
353
|
+
def to_doc()
|
354
|
+
@doc
|
355
|
+
end
|
356
|
+
|
357
|
+
def build(rawobj)
|
358
|
+
obj = rawobj.is_a?(Hash) ? RexleBuilder.new(rawobj).to_a : rawobj
|
359
|
+
Rexle.new(obj)
|
360
|
+
end
|
361
|
+
|
362
|
+
end
|
363
|
+
|
364
|
+
class InputElement < Element
|
365
|
+
|
366
|
+
def initialize(rawobj)
|
367
|
+
|
368
|
+
if @label then
|
369
|
+
|
370
|
+
obj = [{label: @label}, rawobj]
|
371
|
+
super({@tag.to_sym => obj})
|
372
|
+
@doc.root.element(@tag + '/label').attributes[:for] = @id
|
373
|
+
|
374
|
+
else
|
375
|
+
super({@tag.to_sym => rawobj})
|
376
|
+
end
|
377
|
+
|
378
|
+
end
|
379
|
+
|
380
|
+
end
|
381
|
+
|
382
|
+
class Dropdown < InputElement
|
383
|
+
|
384
|
+
def initialize(rawoptions=[], options: rawoptions, label: nil, id: nil)
|
385
|
+
|
386
|
+
@tag = 'dropdown'
|
387
|
+
@htmltag = 'select'
|
388
|
+
@id = id
|
389
|
+
@label = label
|
390
|
+
|
391
|
+
if options.is_a? Array then
|
392
|
+
|
393
|
+
list = options.map {|option| {option: option}}
|
394
|
+
super({_select: list})
|
395
|
+
|
396
|
+
values = options.map(&:downcase)
|
397
|
+
@doc.root.xpath('dropdown/select/option').each.with_index do |e,i|
|
398
|
+
e.attributes[:value] = values[i]
|
399
|
+
end
|
400
|
+
|
401
|
+
elsif options.is_a? Hash then
|
402
|
+
|
403
|
+
list = options.values.map {|option| {option: option}}
|
404
|
+
values = options.keys
|
405
|
+
super({_select: list})
|
406
|
+
|
407
|
+
@doc.root.xpath('dropdown/select/option').each.with_index do |e,i|
|
408
|
+
e.attributes[:value] = values[i]
|
409
|
+
end
|
410
|
+
|
411
|
+
|
412
|
+
end
|
413
|
+
end
|
414
|
+
end
|
415
|
+
|
416
|
+
class Textarea < InputElement
|
417
|
+
|
418
|
+
def initialize(value='', text: value, label: nil, id: nil)
|
419
|
+
|
420
|
+
@tag = 'textarea'
|
421
|
+
@htmltag = 'textarea'
|
422
|
+
@id = id
|
423
|
+
@label = label
|
424
|
+
super({@tag.to_sym => text})
|
425
|
+
|
426
|
+
end
|
427
|
+
|
428
|
+
end
|
429
|
+
|
430
|
+
class Form < Element
|
431
|
+
|
432
|
+
def initialize(inputs=nil, id: nil, method: :get, action: '')
|
433
|
+
|
434
|
+
@tag = 'form'
|
435
|
+
@htmltag = 'form'
|
436
|
+
@id = id
|
437
|
+
|
438
|
+
super([:root, {}, [@tag,{}, [@htmltag, {}]]])
|
439
|
+
form = @doc.root.element(@tag + '/' + @htmltag)
|
440
|
+
form.add inputs if inputs
|
441
|
+
form.attributes[:method] = method.to_s
|
442
|
+
form.attributes[:action] = action
|
443
|
+
|
444
|
+
end
|
445
|
+
|
446
|
+
end
|
447
|
+
|
448
|
+
|
449
|
+
# e.g. inputs = {txt: [:textarea], audiotype: [:dropdown, 'gsm'], voice: [:dropdown, 'Stuart']}
|
450
|
+
# options = {audiotype: ['gsm', 'wav'], voice: %w(Stuart Kirsty Andrew)}
|
451
|
+
#
|
452
|
+
# fb = HtmlCom::FormBuilder.new(inputs: inputs, options: options)
|
453
|
+
# puts fb.to_html
|
454
|
+
|
455
|
+
class FormBuilder
|
456
|
+
|
457
|
+
|
458
|
+
|
459
|
+
def initialize(inputs: {}, options: {}, id: 'form1', method: :get, action: '', debug: false)
|
460
|
+
|
461
|
+
@debug = debug
|
462
|
+
|
463
|
+
h = inputs.map do |key, value|
|
464
|
+
|
465
|
+
if debug then
|
466
|
+
puts 'id: ' + key.inspect
|
467
|
+
puts 'klass: ' + value.first.inspect
|
468
|
+
end
|
469
|
+
|
470
|
+
[key, [value.first]]
|
471
|
+
end.to_h
|
472
|
+
|
473
|
+
options.each do |key, value|
|
474
|
+
h[key] << value
|
475
|
+
end
|
476
|
+
|
477
|
+
klass = {dropdown: HtmlCom::Dropdown, textarea: HtmlCom::Textarea}
|
478
|
+
|
479
|
+
@form = HtmlCom::Form.new(id: id, method: method, action: action)
|
480
|
+
|
481
|
+
h.each do |key, value|
|
482
|
+
|
483
|
+
id = key
|
484
|
+
type, content = value
|
485
|
+
action = case type
|
486
|
+
when :dropdown
|
487
|
+
'Select'
|
488
|
+
else
|
489
|
+
'Enter'
|
490
|
+
end
|
491
|
+
|
492
|
+
obj = klass[type].new content, id: id, label: action + ' ' + id.to_s
|
493
|
+
|
494
|
+
obj.to_doc.root.element(type.to_s).elements.each do |e|
|
495
|
+
@form.html_element.add e
|
496
|
+
end
|
497
|
+
|
498
|
+
end
|
499
|
+
end
|
500
|
+
|
501
|
+
def to_doc()
|
502
|
+
@form.to_doc
|
503
|
+
end
|
504
|
+
|
505
|
+
def to_html()
|
506
|
+
@form.to_doc.root.xml pretty: true
|
507
|
+
end
|
508
|
+
|
509
|
+
end
|
279
510
|
|
280
511
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: htmlcom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,32 +10,33 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
+
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
13
|
+
MIIEljCCAv6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTIyMDcwNTE5MzkxNVoXDTIzMDcwNTE5MzkxNVowSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
|
18
|
+
ggGBAOmLrkZ4OBa23h4YUN8bv+VT9sZQCQf3xe0mUExHDJko8bjOx8ziw1KQl1tn
|
19
|
+
NSmAFTX+gyRX1n9P/9SgNfr3ZA0DIemn3p9apzFJdWajwpr4lqCpsPSbBCX/FdLQ
|
20
|
+
S1Wu77ILm58XBAA3mXOndYPhqsCtuuGUcNqdqrE0YeDkZio7f560sYT5daggM4q0
|
21
|
+
qK6lpvZJWjOm3dcZj8HUcf6uKSiZu3RAvABBE4qQ9890R1QNNFPgnjijBjG2k20J
|
22
|
+
fAVbHJOr5vIbmC0FJOF/VzmvSGdI8rRgzgcOlAsWYTWMvXxMF3AhH8qy/Q+GuxG8
|
23
|
+
YHkArheKw/m9+3ln5FwLhcfcEnDHCCqJrqyBErg1lbZCeeJR3+WfRQ3CmFCKbcUE
|
24
|
+
3RJdIGPtl1MvwicA4+hwQa5/AOSvPl0pw9CmY0taJPRjQ6fFLyepNFRGVuTrnDcq
|
25
|
+
1IAGs5NBJ34OD32aHitxrw/9XIWYzBH9cyRZF9hwYZY2kB2JHuSMl6Dz0g9ukBp4
|
26
|
+
b8g7cwIDAQABo4GKMIGHMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
27
|
+
BBSHDg8sYrd0BuKg+J9GCeDrgCZXsTAmBgNVHREEHzAdgRtnZW1tYXN0ZXJAamFt
|
28
|
+
ZXNyb2JlcnRzb24uZXUwJgYDVR0SBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
29
|
+
c29uLmV1MA0GCSqGSIb3DQEBCwUAA4IBgQAylxVngOZIAZ7MLLozAgOnFOf7s4/p
|
30
|
+
syqjV46C2FYJaMSyPjh2FpuGGoWorT6snGAR3V0xJhwg7/NWoLqfMM/XzeKLx8ni
|
31
|
+
+yxPmNFdAoTCA+NtY/hK6QWHNKd9NamAVVlZeccVn5MPPU3rXfR95+bB6Nhn+wbh
|
32
|
+
6WTQc/GXDluzOMLoPHyE61J5tFBYSsA6BJZI5mOMBHP3UpJsuHTl2CHmHGjj4twk
|
33
|
+
IBxUACAF1vCdlWkL053BQttlZB5Pwb0U/tqclBwiNvx+lgKmz7ET1Jozhc5MinMk
|
34
|
+
aYiDsjEUsuY+OedqmF5uCi5smx9JJRDOBTNwJbHBWvPRMYI2Ll0a2lROWM4kxEeg
|
35
|
+
uI6GFPYf4z/KAOyF8W2uHSc7Hyt8ZB4BK7QLKo2PqdGlFsXk9r+LEMFuK3e8zEbF
|
36
|
+
JNdZs/7/k4vQlgqYQ3HnoA6GgIanmCgNkediqllxv/epLyIkW2DSJGcYXM8QjSEk
|
37
|
+
+4RQ8UHDCOWHpFPlT5Pgc0wPc7KyXosRYHg=
|
37
38
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
39
|
+
date: 2022-07-06 00:00:00.000000000 Z
|
39
40
|
dependencies:
|
40
41
|
- !ruby/object:Gem::Dependency
|
41
42
|
name: jsmenubuilder
|
@@ -46,7 +47,7 @@ dependencies:
|
|
46
47
|
version: '0.3'
|
47
48
|
- - ">="
|
48
49
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.3.
|
50
|
+
version: 0.3.6
|
50
51
|
type: :runtime
|
51
52
|
prerelease: false
|
52
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -56,27 +57,27 @@ dependencies:
|
|
56
57
|
version: '0.3'
|
57
58
|
- - ">="
|
58
59
|
- !ruby/object:Gem::Version
|
59
|
-
version: 0.3.
|
60
|
+
version: 0.3.6
|
60
61
|
- !ruby/object:Gem::Dependency
|
61
62
|
name: jstreebuilder
|
62
63
|
requirement: !ruby/object:Gem::Requirement
|
63
64
|
requirements:
|
64
65
|
- - "~>"
|
65
66
|
- !ruby/object:Gem::Version
|
66
|
-
version: '0.
|
67
|
+
version: '0.3'
|
67
68
|
- - ">="
|
68
69
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.2
|
70
|
+
version: 0.3.2
|
70
71
|
type: :runtime
|
71
72
|
prerelease: false
|
72
73
|
version_requirements: !ruby/object:Gem::Requirement
|
73
74
|
requirements:
|
74
75
|
- - "~>"
|
75
76
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0.
|
77
|
+
version: '0.3'
|
77
78
|
- - ">="
|
78
79
|
- !ruby/object:Gem::Version
|
79
|
-
version: 0.2
|
80
|
+
version: 0.3.2
|
80
81
|
- !ruby/object:Gem::Dependency
|
81
82
|
name: jsajax_wizard
|
82
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,28 +118,8 @@ dependencies:
|
|
117
118
|
- - ">="
|
118
119
|
- !ruby/object:Gem::Version
|
119
120
|
version: 0.1.2
|
120
|
-
- !ruby/object:Gem::Dependency
|
121
|
-
name: nokogiri
|
122
|
-
requirement: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - "~>"
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '1.11'
|
127
|
-
- - ">="
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: 1.11.1
|
130
|
-
type: :runtime
|
131
|
-
prerelease: false
|
132
|
-
version_requirements: !ruby/object:Gem::Requirement
|
133
|
-
requirements:
|
134
|
-
- - "~>"
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: '1.11'
|
137
|
-
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: 1.11.1
|
140
121
|
description:
|
141
|
-
email:
|
122
|
+
email: digital.robertson@gmail.com
|
142
123
|
executables: []
|
143
124
|
extensions: []
|
144
125
|
extra_rdoc_files: []
|
@@ -163,8 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
144
|
- !ruby/object:Gem::Version
|
164
145
|
version: '0'
|
165
146
|
requirements: []
|
166
|
-
|
167
|
-
rubygems_version: 2.7.10
|
147
|
+
rubygems_version: 3.3.7
|
168
148
|
signing_key:
|
169
149
|
specification_version: 4
|
170
150
|
summary: Generates HTML components and is designed for rendering dynamic web pages
|
metadata.gz.sig
CHANGED
Binary file
|