shul 0.4.8 → 0.4.9

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 +2 -2
  3. data.tar.gz.sig +0 -0
  4. data/lib/shul.rb +89 -29
  5. metadata +4 -4
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ecc70586d7078c779c6eb96fd722d3d5e655d162
4
- data.tar.gz: 5e3eb2c2c4278829afd3ccdbd8ffd6688dad4db9
3
+ metadata.gz: f0c889fb435e4092d24f058416ab632730f99239
4
+ data.tar.gz: 439d039a7699496c749cb17da891bb454db25926
5
5
  SHA512:
6
- metadata.gz: bbaa771e67c7d098fa3e32f88500e89609cef61754c1d22a460267bc1526c3ca10d68acbe1b1f5a8d2bcd34c0603f5d649d63756bbdd84fb003417d954fc3043
7
- data.tar.gz: e54e50d2cabc1f49e4f16eb2ee69d55b379b7ea3b0398ae382099be10f655bfa7dd7ba818926c2d63223cc0871e8c6541118853c0c626ca07615b5c10f2f0061
6
+ metadata.gz: b794859fc0cb6aaf6d2f6c1a5d11fd3fc063ef69fe53cee14750f60442d801174bf0617d16e6aa9adb2c207e4865963454590a5056af4834a75c0e4228fc5ed6
7
+ data.tar.gz: 9d2c08db72c391ee11c4fb99647c9d636b5f16150e1b5999cd0fe6fa8f031e3a16de92cd81bdcc75f03440066fdd28eb14a1d654c6417d2800f398ec83536810
@@ -1,2 +1,2 @@
1
- L��\l-$[#+�[E���=HO��=%HRޞ����c�%�a���@~���*L�����J(7'J���6irN��j��*�h��<�Ӎ���/����ܸ�����v��3�O�����x��S乎��:q�B��5��Afn��qN�4�p�\�Ϫ�DxA�: x�6<^Xx���QW�ǭ�a-
2
- H��mr]$�Q����*�4D��k}E���E�.��V/}�¤J'd��8WSYW����cuJ�!�Y�^mM
1
+ 3��v��m̃OJ�񐹁/�IK��y��_'G`6�>�a��A d���j�
2
+ {\�^��!*��]��:�@����Bx�,��cp���9�Z���=��-/����ۂf�X~"�$�ZHMy_�{�x���Zae��4O0z�� f9�ifa�Y�C��_qf0b�� �b0}ИQ�Y��poL���2ғ��#-�>�ŧ�x{v��g~��N1����gP�f� �Ɉ���Y����+�Tztxb��
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
 
2
3
  # file: shul.rb
3
4
  # author: James Robertson
@@ -41,6 +42,7 @@ Shul::Main.new Shoes, doc
41
42
 
42
43
  # modifications
43
44
  #
45
+ # 12-Aug-2017: feature: A Radiogroup can now be created or deleted dynamically
44
46
  # 11-Aug-2017: feature: An element can now be removed using method *remove*.
45
47
  # 10-Aug-2017: feature: A Textbox element can now be created dynamically
46
48
  # e.g. txt = e.create_element('textbox'); e.append_child txt
@@ -68,9 +70,11 @@ Shul::Main.new Shoes, doc
68
70
  # * tested using the green_shoes gem.
69
71
 
70
72
 
73
+
71
74
  require 'domle'
72
75
 
73
76
 
77
+
74
78
  module RexleObject
75
79
  refine Rexle::Element do
76
80
 
@@ -107,11 +111,18 @@ module Shul
107
111
 
108
112
  class Box < Element
109
113
  attr2_accessor *%i(background-color id margin padding)
114
+
115
+ def initialize(name=nil, attributes: {}, rexle: nil)
116
+
117
+ name = self.class.to_s[/\w+$/].downcase
118
+ super(name, attributes: attributes, rexle: rexle)
119
+ end
110
120
 
111
121
  def append_child(obj)
112
122
 
113
123
  node = self.add obj
114
- @rexle.callback.add_element(node, obj) if @rexle.callback
124
+
125
+ @rexle.callback.add_element(node) if @rexle.callback
115
126
  end
116
127
 
117
128
  def deep_clone()
@@ -159,17 +170,34 @@ module Shul
159
170
  end
160
171
 
161
172
  class Radiogroup < Component
173
+ attr2_accessor *%i(value)
174
+
175
+ def initialize(name='radiogroup', attributes: nil, rexle: nil)
162
176
 
177
+ h = {value: ''}
178
+ h.merge!(attributes) if attributes
179
+ super(name, attributes: VisualAttributes.new(h), rexle: rexle)
180
+ end
181
+
163
182
  end
164
183
 
165
184
  class Radio < Component
185
+
186
+ attr2_accessor *%i(label value)
187
+
188
+ def initialize(name='radio', attributes: nil, rexle: nil)
189
+
190
+ h = {label: '', value: ''}
191
+ h.merge!(attributes) if attributes
192
+ super(name, attributes: VisualAttributes.new(h), rexle: rexle)
193
+ end
166
194
 
167
195
  end
168
196
 
169
197
  class Textbox < Component
170
198
 
171
199
  attr2_accessor *%i(value size)
172
-
200
+
173
201
  def initialize(name='textbox', attributes: nil, rexle: nil)
174
202
 
175
203
  h = {value: '', size: '40'}
@@ -179,13 +207,30 @@ module Shul
179
207
  end
180
208
 
181
209
 
182
- def create_element(type, id: '')
210
+ def create_element(type, attributes={})
183
211
 
184
212
  h = {
185
- textbox: Shul::Shule::Textbox
213
+ textbox: Shul::Shule::Textbox,
214
+ radiogroup: Shul::Shule::Radiogroup,
215
+ radio: Shul::Shule::Radio
186
216
  }
187
217
 
188
- h[type.to_sym].new(attributes: {id: id}, rexle: self)
218
+ data = attributes.delete :data
219
+
220
+ element = h[type.to_sym].new(attributes: attributes, rexle: self)
221
+
222
+ if type == 'radiogroup' and data then
223
+
224
+ a = data
225
+ a.each do |label, value|
226
+
227
+ element.add create_element('radio', label: label, value: value)
228
+
229
+ end
230
+
231
+ end
232
+
233
+ return element
189
234
  end
190
235
 
191
236
  def inspect()
@@ -344,6 +389,18 @@ module Shul
344
389
 
345
390
  using RexleObject
346
391
 
392
+ class Radiogroup
393
+
394
+ def initialize(e)
395
+ @e = e
396
+ end
397
+
398
+ def clear()
399
+ @e.elements.each {|x| x.obj.clear}
400
+ end
401
+
402
+ end
403
+
347
404
  attr_reader :width, :height
348
405
 
349
406
  def initialize(shoes, doc)
@@ -373,15 +430,20 @@ module Shul
373
430
 
374
431
  end
375
432
 
376
- def add_element(node, x)
433
+ def add_element(node)
377
434
 
378
- node.obj = method(x.name.sub(':','_').to_sym).call(x)
435
+ node.obj = method(node.name.sub(':','_').to_sym).call(node)
436
+
437
+ node.elements.each do |element|
438
+ element.obj = method(element.name.sub(':','_').to_sym).call(element)
439
+ end
440
+
379
441
  refresh()
380
442
 
381
443
  end
382
444
 
383
445
  def refresh
384
- @shoes.flush
446
+ @shoes.flush if @shoes
385
447
  end
386
448
 
387
449
  def remove_element(node)
@@ -619,31 +681,29 @@ module Shul
619
681
  e.obj = @shoes.progress
620
682
  end
621
683
 
622
- def radiogroup(e)
623
-
624
- r = nil
684
+ def radio(e)
625
685
 
626
- e.xpath('radio').each do |x|
627
-
628
- def x.value() self.attributes[:value] end
629
- def x.value=(v) self.attributes[:value] = v end
630
-
631
- x.value = x.attributes[:value].to_s
632
-
633
- h = x.attributes
634
-
686
+ def e.value() self.attributes[:value] end
687
+ def e.value=(v) self.attributes[:value] = v end
635
688
 
636
- @shoes.flow do
637
-
638
- r = @shoes.radio :radiogroup01
639
- r.click { e.value = x.value }
689
+ e.value = e.attributes[:value].to_s
690
+
691
+ h = e.attributes
692
+ e.obj = @shoes.flow do
693
+ r = @shoes.radio :radiogroup01
694
+ r.click {e.parent.value = e.value unless e.value.empty?}
640
695
 
641
- r.checked = h[:checked] == 'true'
642
- @shoes.para h[:label]
643
- end
644
-
645
- end
696
+ r.checked = h[:checked] == 'true'
697
+ @shoes.para h[:label]
698
+ end
699
+
700
+ end
701
+
702
+ def radiogroup(e)
646
703
 
704
+
705
+
706
+ e.obj = Radiogroup.new e
647
707
  end
648
708
 
649
709
  def quit()
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shul
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,7 +31,7 @@ cert_chain:
31
31
  t8eGazfn6KO3ECwm0DI6ZG6K+/TPPHv8HXfONWq0oGmvwamHXWjcz3hCa5hZw0Vt
32
32
  +vU993j3UFViMQ==
33
33
  -----END CERTIFICATE-----
34
- date: 2017-08-10 00:00:00.000000000 Z
34
+ date: 2017-08-11 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: domle
@@ -42,7 +42,7 @@ dependencies:
42
42
  version: '0.1'
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
- version: 0.1.10
45
+ version: 0.1.11
46
46
  type: :runtime
47
47
  prerelease: false
48
48
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,7 +52,7 @@ dependencies:
52
52
  version: '0.1'
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: 0.1.10
55
+ version: 0.1.11
56
56
  description:
57
57
  email: james@jamesrobertson.eu
58
58
  executables: []
metadata.gz.sig CHANGED
Binary file