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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/htmlcom.rb +284 -53
  4. data.tar.gz.sig +0 -0
  5. metadata +35 -55
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10e65ec30c633da273e20802b6fc81ad1a4c4f4506f33425439f1073829098e9
4
- data.tar.gz: ef59c86481a1081f6b5eb1ddb6fe272f9177cd16e22cba454945a28427853a03
3
+ metadata.gz: c5c56bbfd02df1b1aa0af4dd6408b34301964015bcefed1a8a6a88b89c98d42d
4
+ data.tar.gz: 6dee7c3818848ce0428cfb5b3df0a2c7cf79b5b4139d22fde8389212dd6e7694
5
5
  SHA512:
6
- metadata.gz: 9d1f6037e43eed61531cbfbfe92ea8d95b0b620dbd9a786d679135c9d22c0c3988bcc2df3c3a85fd48b4354dc1278094053ae3575b62b65bedca6017a3c0d479
7
- data.tar.gz: 17bbb185d6ac10e162c9a9e2dfd17239a5b79283992ca1df02265277693e478e600506f8b39a52ca0b169d59609772f80fbcfc3363f098fdd4deb16de8cbdd51
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 VerticalMenu
257
-
258
- def initialize(links, debug: false)
259
- @jtb = JsMenuBuilder.new(:vertical_menu, {items: links, debug: debug})
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.2.6
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
- MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwMTE3MTUzNjE1WhcN
15
- MjIwMTE3MTUzNjE1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDTZ8f6
17
- 3hCg1WPZPVRqvFupR3GrNpUVmE7ly6PnuoAGxvAr5QrGUy4mcy3NRYaExgE2sPMv
18
- zesDm3LVRvSLKoXThlbkNf/c2P4X2RXQzdNTuRY4hp77B9/a0+gWeFwX+K8dB27e
19
- foPBNLGwzlXl28b18cm+ik5CFwQiLtDYZUJIo6XMjpIOZX6r3ppdjX6zhxP83SJR
20
- DNcXYesJS2CW/Jr1nXA2VtW454tZT/G1My7OROMb13tyNeLvrBFnq+x5/qBzMTn5
21
- RSy3V/n1Q0acNgepEGTEF26bPz+KQi+IYUR+0SR4NlQvxFI3s/EwhGREs7ebb2n4
22
- y5z1O4BQU1CTNTEBVPErYe40rCbPx2tl7UFjeMREynyxdSqIgpuu5QDw+oGIA/G5
23
- +6n7+MSCiuK3aPweVRG+Cdx6bYJBgzR2oBTpOSnQBGuPJIYZsHbmxdlKl6IfoHV6
24
- YzOeCcZg7hO1LKZzk1tJhce60uC2CjNeBn8Qv4ZNr28jdV/xzuzoLTCT4FkCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUP5ZhNl+m
26
- fMETZog0vtUzDL9O7BkwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
- c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAAoxegKwCmU/XAf+rPvvgIXNHaHXNUrvz0UY35Fld
29
- UAUAT5VtRdMl1fOsF20D1ZvB8EvgcO5R9sZOh2zdyjCmn/XT6VIyQXMZ3pBEFoCX
30
- JyShDdKobcYKlMrb9Nr9+Mn4J4vfOQcB2NFYwonaDLPQ9AjXwit7rhuOsbDAPnHt
31
- WXQfhCZCk5CoVQeDAuzpnCJm55chl07x+VQYBDedjbHCevrleL6REiRQ0LhkEpPi
32
- 6beXYDQ6kQfSx368fAS8NLwNuozMTcRgRUl7xqP0+ul8nSJZLLWIXmsrs6cyHnw9
33
- HwdPlwmYQHY1xkBxGI9yW8rB4FrO3JUOgLgDnMZ57q9iNKMS9uIqXaWEm0MQLY6m
34
- 0KaSzHUAYca+U2kPPE5/bYl/PRm6PEwzKh9gvxP9DfOsvMo5zx6nIwTk7q9OBGVh
35
- Y7ogWFuR7xV5C2r4jFG/ETJJx68h+Dq4axa5mkEdMQz1iBbVr7SAq4Uoad0IbYtV
36
- 9JH57w1VS3ePSOlwBmm2yWGh
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: 2021-01-17 00:00:00.000000000 Z
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.4
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.4
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.2'
67
+ version: '0.3'
67
68
  - - ">="
68
69
  - !ruby/object:Gem::Version
69
- version: 0.2.4
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.2'
77
+ version: '0.3'
77
78
  - - ">="
78
79
  - !ruby/object:Gem::Version
79
- version: 0.2.4
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: james@jamesrobertson.eu
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
- rubyforge_project:
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