htmlcom 0.3.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41f76e94774f2bfc83083ea47a7a47272f13dcb9c813100f3f5c688114faef6f
4
- data.tar.gz: 1eec290b80a32ebfc3f976d0c35f2a2ffccee516da6c71aed20f110bc9fd412a
3
+ metadata.gz: c5c56bbfd02df1b1aa0af4dd6408b34301964015bcefed1a8a6a88b89c98d42d
4
+ data.tar.gz: 6dee7c3818848ce0428cfb5b3df0a2c7cf79b5b4139d22fde8389212dd6e7694
5
5
  SHA512:
6
- metadata.gz: d431b683fd27995074a06a0ccb2726dc0dc8af57eae06514c7e57402c781c257f2a2f8e1210f8939afdff4a6c23013840ca2a42e0b0053eb9ae37f4a8adc95de
7
- data.tar.gz: d63d7b19dae7e63d24d931a64ebebc2bfa904f1632ec30a7a07734e8325edb9a1db4441bcc7acce17826ecd02de1208282405a8c94894bcc464e0fe4231be5c4
6
+ metadata.gz: 31bdddd64984e4a344436918bb09e1a79acc0bb58d15a6878f8a0c28afa30da1b3486c7d68bf3464b4288faec8a7c55351f5f6bc33037dd7186bf0deb8be4c92
7
+ data.tar.gz: 46dfd28e68b5f40cabfbde02c854b2bfefaf1fbca2b7455945822b5b9635ea0f8ff45bb538130ecc987ae6e80137ab87b4b7f7c3d2dec4910fe37946a0e314ee
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/htmlcom.rb CHANGED
@@ -22,6 +22,7 @@ require 'rexle-builder'
22
22
  # InputElement # used by the HTML input element
23
23
  # Dropdown # an HTML element
24
24
  # Textarea # an HTML element
25
+ # FormBuilder
25
26
 
26
27
  module HtmlCom
27
28
 
@@ -332,20 +333,30 @@ EOF
332
333
 
333
334
  class Element
334
335
 
335
- def initialize(h)
336
- @doc = build(h)
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)
337
351
  end
338
352
 
339
353
  def to_doc()
340
354
  @doc
341
355
  end
342
356
 
343
- def build(h)
344
-
345
- puts 'h: ' + h.inspect
346
- doc = Rexle.new(RexleBuilder.new(h).to_a)
347
- puts doc.xml pretty: true
348
- doc
357
+ def build(rawobj)
358
+ obj = rawobj.is_a?(Hash) ? RexleBuilder.new(rawobj).to_a : rawobj
359
+ Rexle.new(obj)
349
360
  end
350
361
 
351
362
  end
@@ -364,12 +375,6 @@ EOF
364
375
  super({@tag.to_sym => rawobj})
365
376
  end
366
377
 
367
- if @id then
368
- elem = @doc.root.element(@tag + '/' + @htmltag)
369
- elem.attributes[:name] = @id
370
- elem.attributes[:id] = @id
371
- end
372
-
373
378
  end
374
379
 
375
380
  end
@@ -388,11 +393,15 @@ EOF
388
393
  list = options.map {|option| {option: option}}
389
394
  super({_select: list})
390
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
+
391
401
  elsif options.is_a? Hash then
392
402
 
393
403
  list = options.values.map {|option| {option: option}}
394
404
  values = options.keys
395
- puts 'list: ' + list.inspect
396
405
  super({_select: list})
397
406
 
398
407
  @doc.root.xpath('dropdown/select/option').each.with_index do |e,i|
@@ -418,4 +427,85 @@ EOF
418
427
 
419
428
  end
420
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
510
+
421
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.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -36,7 +36,7 @@ cert_chain:
36
36
  JNdZs/7/k4vQlgqYQ3HnoA6GgIanmCgNkediqllxv/epLyIkW2DSJGcYXM8QjSEk
37
37
  +4RQ8UHDCOWHpFPlT5Pgc0wPc7KyXosRYHg=
38
38
  -----END CERTIFICATE-----
39
- date: 2022-07-05 00:00:00.000000000 Z
39
+ date: 2022-07-06 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: jsmenubuilder
metadata.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- �M��~+���bG6��Z�<�i
2
- 5ejж5����
1
+ ����8~t�Hg�BiM�ia��1=r��@qZ��𐈊��ӓ��GuJ������.=T���M�9%� |:��A�^������;�pu��91X P��v�Xo9�S#}���2���8=��d3���7��[ō��A��Yu$rηG�4re:�n ��)< �����������=D~�$���Ht�5e�pYh����7�j�|P�����|�� ���´�
2
+ R*C��]�Ҹ�B:����� C@�X��'F�()��4���[ Fa
3
+ ������>����*�c�2�W�N0D���,��L��L����v
4
+ ��Y�7�]^�2!�,�b2���փ��,aXc?Sgz�i