htmlcom 0.3.0 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/htmlcom.rb +152 -14
- data.tar.gz.sig +0 -0
- metadata +2 -2
- 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: 6272c236431ec9708a8805b6e28237e9faf86eac4d957941e8ec9ce74fc657ec
|
4
|
+
data.tar.gz: 6d878d46b83d2cfb3f2b4a91f0de32d360b3ca8a0e843859513ab5b501f1a7d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be0c30b00af02d00386ee6c36191e7955e02a0154002c6835bd5c5d739460124775d01bb24515a1f81e135ea75ad9e591b76dc5941857368e1ccb4914d9e6b2e
|
7
|
+
data.tar.gz: f7adcb761bacb26fba80d79f6602b7d18b4c591f35aaa9feb0fec76b50669b13a03828fcdb2f9052ffaab56ea013dc1e8e39c46585da6389790df0eb602073fc
|
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,36 @@ EOF
|
|
332
333
|
|
333
334
|
class Element
|
334
335
|
|
335
|
-
def initialize(
|
336
|
-
|
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
|
357
|
+
def to_html()
|
358
|
+
html_element.xml pretty: true
|
359
|
+
end
|
344
360
|
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
361
|
+
private
|
362
|
+
|
363
|
+
def build(rawobj)
|
364
|
+
obj = rawobj.is_a?(Hash) ? RexleBuilder.new(rawobj).to_a : rawobj
|
365
|
+
Rexle.new(obj)
|
349
366
|
end
|
350
367
|
|
351
368
|
end
|
@@ -364,12 +381,6 @@ EOF
|
|
364
381
|
super({@tag.to_sym => rawobj})
|
365
382
|
end
|
366
383
|
|
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
384
|
end
|
374
385
|
|
375
386
|
end
|
@@ -388,11 +399,15 @@ EOF
|
|
388
399
|
list = options.map {|option| {option: option}}
|
389
400
|
super({_select: list})
|
390
401
|
|
402
|
+
values = options.map(&:downcase)
|
403
|
+
@doc.root.xpath('dropdown/select/option').each.with_index do |e,i|
|
404
|
+
e.attributes[:value] = values[i]
|
405
|
+
end
|
406
|
+
|
391
407
|
elsif options.is_a? Hash then
|
392
408
|
|
393
409
|
list = options.values.map {|option| {option: option}}
|
394
410
|
values = options.keys
|
395
|
-
puts 'list: ' + list.inspect
|
396
411
|
super({_select: list})
|
397
412
|
|
398
413
|
@doc.root.xpath('dropdown/select/option').each.with_index do |e,i|
|
@@ -418,4 +433,127 @@ EOF
|
|
418
433
|
|
419
434
|
end
|
420
435
|
|
436
|
+
|
437
|
+
class Text < InputElement
|
438
|
+
|
439
|
+
def initialize(value='', text: value, label: nil, id: nil)
|
440
|
+
|
441
|
+
@tag = 'text'
|
442
|
+
@htmltag = 'input'
|
443
|
+
@id = id
|
444
|
+
@label = label
|
445
|
+
super( [@htmltag, {type: 'text', value: text}])
|
446
|
+
|
447
|
+
end
|
448
|
+
|
449
|
+
end
|
450
|
+
|
451
|
+
|
452
|
+
class Hidden < InputElement
|
453
|
+
|
454
|
+
def initialize(value='', text: value, id: nil, label: nil)
|
455
|
+
|
456
|
+
@tag = 'hidden'
|
457
|
+
@htmltag = 'input'
|
458
|
+
@id = id
|
459
|
+
super( [@htmltag, {type: 'hidden', value: text}])
|
460
|
+
|
461
|
+
end
|
462
|
+
|
463
|
+
end
|
464
|
+
|
465
|
+
class Form < Element
|
466
|
+
|
467
|
+
def initialize(inputs=nil, id: nil, method: :get, action: '')
|
468
|
+
|
469
|
+
@tag = 'form'
|
470
|
+
@htmltag = 'form'
|
471
|
+
@id = id
|
472
|
+
|
473
|
+
super([:root, {}, [@tag,{}, [@htmltag, {}]]])
|
474
|
+
form = @doc.root.element(@tag + '/' + @htmltag)
|
475
|
+
form.add inputs if inputs
|
476
|
+
form.attributes[:method] = method.to_s
|
477
|
+
form.attributes[:action] = action
|
478
|
+
|
479
|
+
end
|
480
|
+
|
481
|
+
def add_submit()
|
482
|
+
submit = Rexle.new(['input', {type: 'submit', value: 'Submit'}])
|
483
|
+
html_element().add submit
|
484
|
+
end
|
485
|
+
|
486
|
+
end
|
487
|
+
|
488
|
+
|
489
|
+
# e.g. inputs = {txt: [:textarea], audiotype: [:dropdown, 'gsm'], voice: [:dropdown, 'Stuart']}
|
490
|
+
# options = {audiotype: ['gsm', 'wav'], voice: %w(Stuart Kirsty Andrew)}
|
491
|
+
#
|
492
|
+
# fb = HtmlCom::FormBuilder.new(inputs: inputs, options: options)
|
493
|
+
# puts fb.to_html
|
494
|
+
|
495
|
+
class FormBuilder
|
496
|
+
|
497
|
+
def initialize(inputs: {}, options: {}, id: 'form1', method: :get, action: '', debug: false)
|
498
|
+
|
499
|
+
@debug = debug
|
500
|
+
|
501
|
+
h = inputs.map do |key, value|
|
502
|
+
|
503
|
+
if debug then
|
504
|
+
puts 'id: ' + key.inspect
|
505
|
+
puts 'klass: ' + value.first.inspect
|
506
|
+
end
|
507
|
+
|
508
|
+
[key, value]
|
509
|
+
end.to_h
|
510
|
+
|
511
|
+
options.each do |key, value|
|
512
|
+
h[key] << value
|
513
|
+
end
|
514
|
+
|
515
|
+
klass = {
|
516
|
+
dropdown: HtmlCom::Dropdown,
|
517
|
+
textarea: HtmlCom::Textarea,
|
518
|
+
text: HtmlCom::Text,
|
519
|
+
hidden: HtmlCom::Hidden
|
520
|
+
}
|
521
|
+
|
522
|
+
@form = HtmlCom::Form.new(id: id, method: method, action: action)
|
523
|
+
|
524
|
+
h.each do |key, value|
|
525
|
+
|
526
|
+
id = key
|
527
|
+
puts 'value: ' + value.inspect
|
528
|
+
type, content = value
|
529
|
+
action = case type
|
530
|
+
when :dropdown
|
531
|
+
content = value.last
|
532
|
+
'Select'
|
533
|
+
else
|
534
|
+
'Enter'
|
535
|
+
end
|
536
|
+
|
537
|
+
obj = klass[type].new content, id: id, label: action + ' ' + id.to_s
|
538
|
+
|
539
|
+
obj.to_doc.root.element(type.to_s).elements.each do |e|
|
540
|
+
@form.html_element.add e
|
541
|
+
end
|
542
|
+
|
543
|
+
end
|
544
|
+
|
545
|
+
@form.add_submit
|
546
|
+
|
547
|
+
end
|
548
|
+
|
549
|
+
def to_doc()
|
550
|
+
@form.to_doc
|
551
|
+
end
|
552
|
+
|
553
|
+
def to_html()
|
554
|
+
@form.to_html
|
555
|
+
end
|
556
|
+
|
557
|
+
end
|
558
|
+
|
421
559
|
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.
|
4
|
+
version: 0.3.3
|
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-
|
39
|
+
date: 2022-07-18 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: jsmenubuilder
|
metadata.gz.sig
CHANGED
Binary file
|