htmlcom 0.2.7 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/htmlcom.rb +288 -51
  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: 78857b5b1409a4daf21dae7af2bf0dcc74c3aa0e668966c1fe4f360c2056b8e7
4
- data.tar.gz: 999fdf955851dee02c6e404e3d63ec1d8c342e26fe72992cfce1c63761918b79
3
+ metadata.gz: '004926ea699b4ce9c1012d1d5e632888096b5e684bae156ddd0cfb35f276d17e'
4
+ data.tar.gz: b99f506d3b6d56a2bbaaedafd5065d4ba685d3b7a5aeb670511bbad1cd1d32c9
5
5
  SHA512:
6
- metadata.gz: 07b170319e00f4cabb698f42f8ba6a005e4c5c4f074a9e71e76742dc40849d731df008e96f73676716499a66cdc11801ecf367df3553a57b46e698443f5e4189
7
- data.tar.gz: 79b610a3280e750d1aa537cf05b45d4d3bf9bbca4c8eef2e0c203577cac28c0c531db657e9174bf53cdb1e60120fdaff75bfee484ac8125277da7abd4ae86cc5
6
+ metadata.gz: 86cafbf4a63453b607c544f2d1622546d50090579992ff3f3d28095a2add8dd46ee6945dafbebea9116d34c8f0d38b84b358f91814934f7a7cad0626c999d6f8
7
+ data.tar.gz: 965c93adbf6de988a47a0335934a83ba0ec9a9ba718dad192bceacb78d9718deb283edb7e968c9a779b083ba974822a4dc7cf5174f152441a0dd08a3a6012f36
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,46 +252,270 @@ 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
-
269
+
256
270
  class Menu
257
-
271
+
258
272
  # current options
259
273
  # :vertical_menu, :fixed_menu, sticky_nav, breadcrumb
260
274
  #
261
275
  def initialize(type=:vertical_menu, links, debug: false)
262
276
  @jtb = JsMenuBuilder.new(type, {items: links, debug: debug})
263
277
  end
264
-
278
+
265
279
  def to_css()
266
280
  @jtb.to_css
267
- end
268
-
281
+ end
282
+
269
283
  def to_html()
270
284
  @jtb.to_html
271
- end
272
-
285
+ end
286
+
273
287
  def to_js()
274
288
  @jtb.to_js
275
289
  end
276
-
290
+
277
291
  def to_webpage()
278
292
  @jtb.to_webpage
279
293
  end
280
-
281
- end
282
-
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 to_html()
358
+ html_element.xml pretty: true
359
+ end
360
+
361
+ def build(rawobj)
362
+ obj = rawobj.is_a?(Hash) ? RexleBuilder.new(rawobj).to_a : rawobj
363
+ Rexle.new(obj)
364
+ end
365
+
366
+ end
367
+
368
+ class InputElement < Element
369
+
370
+ def initialize(rawobj)
371
+
372
+ if @label then
373
+
374
+ obj = [{label: @label}, rawobj]
375
+ super({@tag.to_sym => obj})
376
+ @doc.root.element(@tag + '/label').attributes[:for] = @id
377
+
378
+ else
379
+ super({@tag.to_sym => rawobj})
380
+ end
381
+
382
+ end
383
+
384
+ end
385
+
386
+ class Dropdown < InputElement
387
+
388
+ def initialize(rawoptions=[], options: rawoptions, label: nil, id: nil)
389
+
390
+ @tag = 'dropdown'
391
+ @htmltag = 'select'
392
+ @id = id
393
+ @label = label
394
+
395
+ if options.is_a? Array then
396
+
397
+ list = options.map {|option| {option: option}}
398
+ super({_select: list})
399
+
400
+ values = options.map(&:downcase)
401
+ @doc.root.xpath('dropdown/select/option').each.with_index do |e,i|
402
+ e.attributes[:value] = values[i]
403
+ end
404
+
405
+ elsif options.is_a? Hash then
406
+
407
+ list = options.values.map {|option| {option: option}}
408
+ values = options.keys
409
+ super({_select: list})
410
+
411
+ @doc.root.xpath('dropdown/select/option').each.with_index do |e,i|
412
+ e.attributes[:value] = values[i]
413
+ end
414
+
415
+
416
+ end
417
+ end
418
+ end
419
+
420
+ class Textarea < InputElement
421
+
422
+ def initialize(value='', text: value, label: nil, id: nil)
423
+
424
+ @tag = 'textarea'
425
+ @htmltag = 'textarea'
426
+ @id = id
427
+ @label = label
428
+ super({@tag.to_sym => text})
429
+
430
+ end
431
+
432
+ end
433
+
434
+ class Form < Element
435
+
436
+ def initialize(inputs=nil, id: nil, method: :get, action: '')
437
+
438
+ @tag = 'form'
439
+ @htmltag = 'form'
440
+ @id = id
441
+
442
+ super([:root, {}, [@tag,{}, [@htmltag, {}]]])
443
+ form = @doc.root.element(@tag + '/' + @htmltag)
444
+ form.add inputs if inputs
445
+ form.attributes[:method] = method.to_s
446
+ form.attributes[:action] = action
447
+
448
+ end
449
+
450
+ def add_submit()
451
+ submit = Rexle.new(['input', {type: 'submit', value: 'Submit'}])
452
+ html_element().add submit
453
+ end
454
+
455
+ end
456
+
457
+
458
+ # e.g. inputs = {txt: [:textarea], audiotype: [:dropdown, 'gsm'], voice: [:dropdown, 'Stuart']}
459
+ # options = {audiotype: ['gsm', 'wav'], voice: %w(Stuart Kirsty Andrew)}
460
+ #
461
+ # fb = HtmlCom::FormBuilder.new(inputs: inputs, options: options)
462
+ # puts fb.to_html
463
+
464
+ class FormBuilder
465
+
466
+ def initialize(inputs: {}, options: {}, id: 'form1', method: :get, action: '', debug: false)
467
+
468
+ @debug = debug
469
+
470
+ h = inputs.map do |key, value|
471
+
472
+ if debug then
473
+ puts 'id: ' + key.inspect
474
+ puts 'klass: ' + value.first.inspect
475
+ end
476
+
477
+ [key, [value.first]]
478
+ end.to_h
479
+
480
+ options.each do |key, value|
481
+ h[key] << value
482
+ end
483
+
484
+ klass = {dropdown: HtmlCom::Dropdown, textarea: HtmlCom::Textarea}
485
+
486
+ @form = HtmlCom::Form.new(id: id, method: method, action: action)
487
+
488
+ h.each do |key, value|
489
+
490
+ id = key
491
+ type, content = value
492
+ action = case type
493
+ when :dropdown
494
+ 'Select'
495
+ else
496
+ 'Enter'
497
+ end
498
+
499
+ obj = klass[type].new content, id: id, label: action + ' ' + id.to_s
500
+
501
+ obj.to_doc.root.element(type.to_s).elements.each do |e|
502
+ @form.html_element.add e
503
+ end
504
+
505
+ end
506
+
507
+ @form.add_submit
508
+
509
+ end
510
+
511
+ def to_doc()
512
+ @form.to_doc
513
+ end
514
+
515
+ def to_html()
516
+ @form.to_html
517
+ end
518
+
519
+ end
283
520
 
284
521
  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.7
4
+ version: 0.3.2
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-20 00:00:00.000000000 Z
39
+ date: 2022-07-07 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