glimmer-dsl-opal 0.6.1 → 0.7.4

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/README.md +489 -16
  4. data/VERSION +1 -1
  5. data/lib/display.rb +31 -0
  6. data/lib/file.rb +29 -0
  7. data/lib/glimmer-dsl-opal.rb +31 -3
  8. data/lib/glimmer-dsl-opal/ext/date.rb +11 -0
  9. data/lib/glimmer-dsl-opal/ext/struct.rb +37 -0
  10. data/lib/glimmer-dsl-opal/samples/hello/hello_browser.rb +1 -1
  11. data/lib/glimmer-dsl-opal/samples/hello/hello_button.rb +46 -0
  12. data/lib/glimmer-dsl-opal/samples/hello/hello_custom_shell.rb +7 -7
  13. data/lib/glimmer-dsl-opal/samples/hello/hello_table.rb +283 -0
  14. data/lib/glimmer-dsl-swt.rb +20 -35
  15. data/lib/glimmer/data_binding/table_items_binding.rb +32 -19
  16. data/lib/glimmer/dsl/opal/block_property_expression.rb +41 -0
  17. data/lib/glimmer/dsl/opal/custom_widget_expression.rb +5 -0
  18. data/lib/glimmer/dsl/opal/dsl.rb +2 -0
  19. data/lib/glimmer/dsl/opal/widget_expression.rb +6 -2
  20. data/lib/glimmer/swt/combo_proxy.rb +40 -1
  21. data/lib/glimmer/swt/composite_proxy.rb +5 -1
  22. data/lib/glimmer/swt/control_editor.rb +54 -0
  23. data/lib/glimmer/swt/date_time_proxy.rb +66 -1
  24. data/lib/glimmer/swt/display_proxy.rb +4 -0
  25. data/lib/glimmer/swt/font_proxy.rb +4 -4
  26. data/lib/glimmer/swt/grid_layout_proxy.rb +7 -8
  27. data/lib/glimmer/swt/label_proxy.rb +11 -3
  28. data/lib/glimmer/swt/layout_data_proxy.rb +9 -3
  29. data/lib/glimmer/swt/layout_proxy.rb +1 -1
  30. data/lib/glimmer/swt/message_box_proxy.rb +3 -10
  31. data/lib/glimmer/swt/property_owner.rb +2 -2
  32. data/lib/glimmer/swt/shell_proxy.rb +8 -0
  33. data/lib/glimmer/swt/table_column_proxy.rb +71 -12
  34. data/lib/glimmer/swt/table_editor.rb +65 -0
  35. data/lib/glimmer/swt/table_item_proxy.rb +44 -1
  36. data/lib/glimmer/swt/table_proxy.rb +579 -12
  37. data/lib/glimmer/swt/text_proxy.rb +49 -1
  38. data/lib/glimmer/swt/widget_proxy.rb +106 -17
  39. data/lib/glimmer/ui/custom_shell.rb +9 -7
  40. data/lib/net/http.rb +1 -5
  41. data/lib/os.rb +36 -0
  42. data/lib/uri.rb +3 -3
  43. metadata +31 -9
  44. data/lib/glimmer/data_binding/ext/observable_model.rb +0 -40
@@ -20,11 +20,59 @@ module Glimmer
20
20
  event: 'keyup',
21
21
  event_handler: -> (event_listener) {
22
22
  -> (event) {
23
+ # TODO consider unifying this event handler with on_key_pressed by relying on its result instead of hooking another keyup event
24
+ if @last_key_pressed_event.nil? || @last_key_pressed_event.doit
25
+ @text = event.target.value
26
+ event_listener.call(event)
27
+ else
28
+ # TODO Fix doit false, it's not stopping input
29
+ event.prevent
30
+ event.prevent_default
31
+ event.stop_propagation
32
+ event.stop_immediate_propagation
33
+ end
34
+ }
35
+ }
36
+ },
37
+ 'on_key_pressed' => {
38
+ event: 'keydown',
39
+ event_handler: -> (event_listener) {
40
+ -> (event) {
41
+ @last_key_pressed_event = event
23
42
  @text = event.target.value
43
+ # TODO generalize this solution to all widgets that support key presses
44
+ # TODO support event.location once DOM3 is supported by opal-jquery
45
+ event.define_singleton_method(:keyCode) {event.which}
46
+ event.define_singleton_method(:key_code, &event.method(:keyCode))
47
+ event.define_singleton_method(:character) {event.which.chr}
48
+ event.define_singleton_method(:stateMask) do
49
+ state_mask = 0
50
+ state_mask |= SWTProxy[:alt] if event.alt_key
51
+ state_mask |= SWTProxy[:ctrl] if event.ctrl_key
52
+ state_mask |= SWTProxy[:shift] if event.shift_key
53
+ state_mask |= SWTProxy[:command] if event.meta_key
54
+ state_mask
55
+ end
56
+ event.define_singleton_method(:state_mask, &event.method(:stateMask))
57
+ doit = true
58
+ event.define_singleton_method(:doit=) do |value|
59
+ doit = value
60
+ end
61
+ event.define_singleton_method(:doit) { doit }
24
62
  event_listener.call(event)
63
+
64
+ # TODO Fix doit false, it's not stopping input
65
+ unless doit
66
+ event.prevent
67
+ event.prevent_default
68
+ event.stop_propagation
69
+ event.stop_immediate_propagation
70
+ end
71
+
72
+ doit
25
73
  }
26
74
  }
27
- }
75
+ },
28
76
  }
29
77
  end
30
78
 
@@ -29,7 +29,10 @@ module Glimmer
29
29
  include Glimmer
30
30
  include PropertyOwner
31
31
 
32
- attr_reader :parent, :args, :path, :children, :enabled, :foreground, :background, :font, :focus
32
+ attr_reader :parent, :args, :path, :children, :enabled, :foreground, :background, :font, :focus, :disposed?, :rendered
33
+ alias isDisposed disposed?
34
+ alias is_disposed disposed?
35
+ alias rendered? rendered
33
36
 
34
37
  class << self
35
38
  # Factory Method that translates a Glimmer DSL keyword into a WidgetProxy object
@@ -103,6 +106,7 @@ module Glimmer
103
106
  @block = block
104
107
  @children = Set.new # TODO consider moving to composite
105
108
  @enabled = true
109
+ @data = {}
106
110
  DEFAULT_INITIALIZERS[self.class.underscored_widget_name(self)]&.call(self)
107
111
  @parent.post_initialize_child(self) # TODO rename to post_initialize_child to be closer to glimmer-dsl-swt terminology
108
112
  end
@@ -113,17 +117,52 @@ module Glimmer
113
117
  child.render
114
118
  end
115
119
 
120
+ # Executes for the parent of a child that just got disposed
121
+ def post_dispose_child(child)
122
+ @children&.delete(child)
123
+ end
124
+
116
125
  # Executes at the closing of a parent widget curly braces after all children/properties have been added/set
117
126
  def post_add_content
118
127
  # No Op by default
119
128
  end
120
129
 
130
+ def set_data(key=nil, value)
131
+ @data[key] = value
132
+ end
133
+ alias setData set_data
134
+ alias data= set_data
135
+
136
+ def get_data(key=nil)
137
+ @data[key]
138
+ end
139
+ alias getData get_data
140
+ alias data get_data
141
+
121
142
  def css_classes
122
143
  dom_element.attr('class').to_s.split
123
144
  end
124
145
 
125
146
  def dispose
147
+ remove_all_listeners
126
148
  Document.find(path).remove
149
+ parent&.post_dispose_child(self)
150
+ # TODO fire on_widget_disposed listener
151
+ @disposed = true
152
+ end
153
+
154
+ def remove_all_listeners
155
+ effective_observation_request_to_event_mapping.keys.each do |keyword|
156
+ effective_observation_request_to_event_mapping[keyword].to_collection.each do |mapping|
157
+ observation_requests[keyword].to_a.each do |event_listener|
158
+ event = mapping[:event]
159
+ event_handler = mapping[:event_handler]
160
+ event_element_css_selector = mapping[:event_element_css_selector]
161
+ the_listener_dom_element = event_element_css_selector ? Element[event_element_css_selector] : listener_dom_element
162
+ the_listener_dom_element.off(event)
163
+ end
164
+ end
165
+ end
127
166
  end
128
167
 
129
168
  def path
@@ -172,31 +211,52 @@ module Glimmer
172
211
  @parent.path
173
212
  end
174
213
 
175
- def render
214
+ def parent_dom_element
215
+ Document.find(parent_path)
216
+ end
217
+
218
+ def render(custom_parent_dom_element = nil)
219
+ the_parent_dom_element = custom_parent_dom_element || parent_dom_element
176
220
  old_element = dom_element
177
221
  brand_new = @dom.nil? || old_element.empty?
178
- build_dom
222
+ build_dom(!custom_parent_dom_element) # TODO handle custom parent layout by passing parent instead of parent dom element
179
223
  if brand_new
180
- Document.find(parent_path).append(@dom)
224
+ the_parent_dom_element.append(@dom)
181
225
  else
182
226
  old_element.replace_with(@dom)
183
227
  end
184
- @observation_requests&.clone&.each do |keyword, event_listener_set|
228
+ observation_requests&.clone&.each do |keyword, event_listener_set|
185
229
  event_listener_set.each do |event_listener|
186
- @observation_requests[keyword].delete(event_listener)
230
+ observation_requests[keyword].delete(event_listener) # TODO look into the implications of this and if it's needed.
187
231
  handle_observation_request(keyword, &event_listener)
188
232
  end
189
233
  end
190
234
  children.each do |child|
191
235
  child.render
192
236
  end
237
+ @rendered = true
238
+ content_on_render_blocks.each { |content_block| content(&content_block) }
193
239
  end
194
240
  alias redraw render
195
241
 
196
- def build_dom
242
+ def content_on_render_blocks
243
+ @content_on_render_blocks ||= []
244
+ end
245
+
246
+ def add_content_on_render(&content_block)
247
+ if rendered?
248
+ content_block.call
249
+ else
250
+ content_on_render_blocks << content_block
251
+ end
252
+ end
253
+
254
+ def build_dom(layout=true)
255
+ # TODO consider passing parent element instead and having table item include a table cell widget only for opal
197
256
  @dom = nil
198
257
  @dom = dom
199
258
  @dom = @parent.layout.dom(@dom) if @parent.respond_to?(:layout) && @parent.layout
259
+ @dom
200
260
  end
201
261
 
202
262
  def content(&block)
@@ -208,6 +268,21 @@ module Glimmer
208
268
  {}
209
269
  end
210
270
 
271
+ def effective_observation_request_to_event_mapping
272
+ default_observation_request_to_event_mapping.merge(observation_request_to_event_mapping)
273
+ end
274
+
275
+ def default_observation_request_to_event_mapping
276
+ {
277
+ 'on_focus_gained' => {
278
+ event: 'focus',
279
+ },
280
+ 'on_focus_lost' => {
281
+ event: 'blur',
282
+ },
283
+ }
284
+ end
285
+
211
286
  def name
212
287
  self.class.name.split('::').last.underscore.sub(/_proxy$/, '').gsub('_', '-')
213
288
  end
@@ -271,10 +346,6 @@ module Glimmer
271
346
  element
272
347
  end
273
348
 
274
- def parent_dom_element
275
- Document.find(parent_path)
276
- end
277
-
278
349
  def listener_path
279
350
  path
280
351
  end
@@ -296,14 +367,17 @@ module Glimmer
296
367
  end
297
368
  end
298
369
 
299
- def handle_observation_request(keyword, &event_listener)
300
- return unless observation_request_to_event_mapping.keys.include?(keyword)
370
+ def observation_requests
301
371
  @observation_requests ||= {}
302
- @observation_requests[keyword] ||= Set.new
372
+ end
373
+
374
+ def handle_observation_request(keyword, &event_listener)
375
+ return unless effective_observation_request_to_event_mapping.keys.include?(keyword)
303
376
  event = nil
304
377
  delegate = nil
305
- [observation_request_to_event_mapping[keyword]].flatten.each do |mapping|
306
- @observation_requests[keyword] << event_listener
378
+ effective_observation_request_to_event_mapping[keyword].to_collection.each do |mapping|
379
+ observation_requests[keyword] ||= Set.new
380
+ observation_requests[keyword] << event_listener
307
381
  event = mapping[:event]
308
382
  event_handler = mapping[:event_handler]
309
383
  event_element_css_selector = mapping[:event_element_css_selector]
@@ -334,6 +408,14 @@ module Glimmer
334
408
  super(attribute_name, *args) # PropertyOwner
335
409
  end
336
410
 
411
+ def method_missing(method, *args, &block)
412
+ if method.to_s.start_with?('on_')
413
+ handle_observation_request(method, &block)
414
+ else
415
+ super(method, *args, &block)
416
+ end
417
+ end
418
+
337
419
  def apply_property_type_converters(attribute_name, args)
338
420
  if args.count == 1
339
421
  value = args.first
@@ -488,6 +570,13 @@ module Glimmer
488
570
  }
489
571
  end
490
572
  },
573
+ TableProxy => {
574
+ :selection => lambda do |observer|
575
+ on_widget_selected { |selection_event|
576
+ observer.call(selection_event.table_item.get_data) # TODO ensure selection doesn't conflict with editing
577
+ }
578
+ end,
579
+ },
491
580
  # Java::OrgEclipseSwtWidgets::MenuItem => {
492
581
  # :selection => lambda do |observer|
493
582
  # on_widget_selected { |selection_event|
@@ -509,12 +598,12 @@ module Glimmer
509
598
  end
510
599
  end
511
600
 
601
+ require 'glimmer/swt/display_proxy'
512
602
  require 'glimmer/swt/browser_proxy'
513
603
  require 'glimmer/swt/button_proxy'
514
604
  require 'glimmer/swt/combo_proxy'
515
605
  require 'glimmer/swt/checkbox_proxy'
516
606
  require 'glimmer/swt/composite_proxy'
517
- require 'glimmer/swt/display_proxy'
518
607
  require 'glimmer/swt/date_time_proxy'
519
608
  require 'glimmer/swt/group_proxy'
520
609
  require 'glimmer/swt/label_proxy'
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2020 Andy Maleh
2
- #
2
+ #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
5
5
  # "Software"), to deal in the Software without restriction, including
@@ -7,10 +7,10 @@
7
7
  # distribute, sublicense, and/or sell copies of the Software, and to
8
8
  # permit persons to whom the Software is furnished to do so, subject to
9
9
  # the following conditions:
10
- #
10
+ #
11
11
  # The above copyright notice and this permission notice shall be
12
12
  # included in all copies or substantial portions of the Software.
13
- #
13
+ #
14
14
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
15
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
16
  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -31,8 +31,10 @@ module Glimmer
31
31
  class << self
32
32
  def included(klass)
33
33
  klass.extend(CustomWidget::ClassMethods)
34
- klass.include(Glimmer)
34
+ klass.include(Glimmer)
35
35
  Glimmer::UI::CustomWidget.add_custom_widget_namespaces_for(klass)
36
+ keyword = klass.name.split(':').last.underscore
37
+ `localStorage[#{keyword}] = #{$LOADED_FEATURES.last}`
36
38
  end
37
39
 
38
40
  def request_parameter_string
@@ -44,12 +46,12 @@ module Glimmer
44
46
  end
45
47
 
46
48
  def requested_and_not_handled?
47
- requested? && !request_parameter_string.include?('custom_shell_handled=true')
48
- end
49
+ requested? && !request_parameter_string.include?('custom_shell_handled=true')
50
+ end
49
51
 
50
52
  def requested?
51
53
  request_parameter_string.include?('custom_shell=')
52
- end
54
+ end
53
55
  end
54
56
 
55
57
  def initialize(parent, args, options, &content)
@@ -7,11 +7,7 @@ module Net
7
7
  # Note: ignore Protocol superclass for now
8
8
  class HTTP
9
9
  def post_form(uri, params)
10
- # pd uri.scheme
11
- # pd uri.host
12
- # pd uri.path
13
- # pd uri.query
14
- # pd params
10
+ # TODO
15
11
  end
16
12
  end
17
13
  end
@@ -0,0 +1,36 @@
1
+ # Copyright (c) 2020 Andy Maleh
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ class OS
23
+ class << self
24
+ def windows?
25
+ # No Op in Opal
26
+ end
27
+
28
+ def mac?
29
+ # No Op in Opal
30
+ end
31
+
32
+ def linux?
33
+ # No Op in Opal
34
+ end
35
+ end
36
+ end
data/lib/uri.rb CHANGED
@@ -6,7 +6,7 @@ module URI
6
6
 
7
7
  def initialize(url)
8
8
  @url = url
9
- uri_match = url.match(REGEX)
9
+ uri_match = url.match(REGEX).to_a
10
10
  @scheme = uri_match[1]
11
11
  @host = uri_match[2]
12
12
  @path = uri_match[3]
@@ -16,7 +16,7 @@ module URI
16
16
 
17
17
  def to_s
18
18
  url
19
- end
19
+ end
20
20
  end
21
21
 
22
22
  TBLENCWWWCOMP_ = {"\u0000"=>"%00", "\u0001"=>"%01", "\u0002"=>"%02", "\u0003"=>"%03", "\u0004"=>"%04", "\u0005"=>"%05", "\u0006"=>"%06", "\a"=>"%07", "\b"=>"%08", "\t"=>"%09", "\n"=>"%0A", "\v"=>"%0B", "\f"=>"%0C", "\r"=>"%0D", "\u000E"=>"%0E", "\u000F"=>"%0F", "\u0010"=>"%10", "\u0011"=>"%11", "\u0012"=>"%12", "\u0013"=>"%13", "\u0014"=>"%14", "\u0015"=>"%15", "\u0016"=>"%16", "\u0017"=>"%17", "\u0018"=>"%18", "\u0019"=>"%19", "\u001A"=>"%1A", "\e"=>"%1B", "\u001C"=>"%1C", "\u001D"=>"%1D", "\u001E"=>"%1E", "\u001F"=>"%1F", " "=>"+", "!"=>"%21", "\""=>"%22", "#"=>"%23", "$"=>"%24", "%"=>"%25", "&"=>"%26", "'"=>"%27", "("=>"%28", ")"=>"%29", "*"=>"%2A", "+"=>"%2B", ","=>"%2C", "-"=>"%2D", "."=>"%2E", "/"=>"%2F", "0"=>"%30", "1"=>"%31", "2"=>"%32", "3"=>"%33", "4"=>"%34", "5"=>"%35", "6"=>"%36", "7"=>"%37", "8"=>"%38", "9"=>"%39", ":"=>"%3A", ";"=>"%3B", "<"=>"%3C", "="=>"%3D", ">"=>"%3E", "?"=>"%3F", "@"=>"%40", "A"=>"%41", "B"=>"%42", "C"=>"%43", "D"=>"%44", "E"=>"%45", "F"=>"%46", "G"=>"%47", "H"=>"%48", "I"=>"%49", "J"=>"%4A", "K"=>"%4B", "L"=>"%4C", "M"=>"%4D", "N"=>"%4E", "O"=>"%4F", "P"=>"%50", "Q"=>"%51", "R"=>"%52", "S"=>"%53", "T"=>"%54", "U"=>"%55", "V"=>"%56", "W"=>"%57", "X"=>"%58", "Y"=>"%59", "Z"=>"%5A", "["=>"%5B", "\\"=>"%5C", "]"=>"%5D", "^"=>"%5E", "_"=>"%5F", "`"=>"%60", "a"=>"%61", "b"=>"%62", "c"=>"%63", "d"=>"%64", "e"=>"%65", "f"=>"%66", "g"=>"%67", "h"=>"%68", "i"=>"%69", "j"=>"%6A", "k"=>"%6B", "l"=>"%6C", "m"=>"%6D", "n"=>"%6E", "o"=>"%6F", "p"=>"%70", "q"=>"%71", "r"=>"%72", "s"=>"%73", "t"=>"%74", "u"=>"%75", "v"=>"%76", "w"=>"%77", "x"=>"%78", "y"=>"%79", "z"=>"%7A", "{"=>"%7B", "|"=>"%7C", "}"=>"%7D", "~"=>"%7E", "\u007F"=>"%7F", "\u0080"=>"%80", "\u0081"=>"%81", "\u0082"=>"%82", "\u0083"=>"%83", "\u0084"=>"%84", "\u0085"=>"%85", "\u0086"=>"%86", "\u0087"=>"%87", "\u0088"=>"%88", "\u0089"=>"%89", "\u008A"=>"%8A", "\u008B"=>"%8B", "\u008C"=>"%8C", "\u008D"=>"%8D", "\u008E"=>"%8E", "\u008F"=>"%8F", "\u0090"=>"%90", "\u0091"=>"%91", "\u0092"=>"%92", "\u0093"=>"%93", "\u0094"=>"%94", "\u0095"=>"%95", "\u0096"=>"%96", "\u0097"=>"%97", "\u0098"=>"%98", "\u0099"=>"%99", "\u009A"=>"%9A", "\u009B"=>"%9B", "\u009C"=>"%9C", "\u009D"=>"%9D", "\u009E"=>"%9E", "\u009F"=>"%9F", "\u00A0"=>"%A0", "\u00A1"=>"%A1", "\u00A2"=>"%A2", "\u00A3"=>"%A3", "\u00A4"=>"%A4", "\u00A5"=>"%A5", "\u00A6"=>"%A6", "\u00A7"=>"%A7", "\u00A8"=>"%A8", "\u00A9"=>"%A9", "\u00AA"=>"%AA", "\u00AB"=>"%AB", "\u00AC"=>"%AC", "\u00AD"=>"%AD", "\u00AE"=>"%AE", "\u00AF"=>"%AF", "\u00B0"=>"%B0", "\u00B1"=>"%B1", "\u00B2"=>"%B2", "\u00B3"=>"%B3", "\u00B4"=>"%B4", "\u00B5"=>"%B5", "\u00B6"=>"%B6", "\u00B7"=>"%B7", "\u00B8"=>"%B8", "\u00B9"=>"%B9", "\u00BA"=>"%BA", "\u00BB"=>"%BB", "\u00BC"=>"%BC", "\u00BD"=>"%BD", "\u00BE"=>"%BE", "\u00BF"=>"%BF", "\u00C0"=>"%C0", "\u00C1"=>"%C1", "\u00C2"=>"%C2", "\u00C3"=>"%C3", "\u00C4"=>"%C4", "\u00C5"=>"%C5", "\u00C6"=>"%C6", "\u00C7"=>"%C7", "\u00C8"=>"%C8", "\u00C9"=>"%C9", "\u00CA"=>"%CA", "\u00CB"=>"%CB", "\u00CC"=>"%CC", "\u00CD"=>"%CD", "\u00CE"=>"%CE", "\u00CF"=>"%CF", "\u00D0"=>"%D0", "\u00D1"=>"%D1", "\u00D2"=>"%D2", "\u00D3"=>"%D3", "\u00D4"=>"%D4", "\u00D5"=>"%D5", "\u00D6"=>"%D6", "\u00D7"=>"%D7", "\u00D8"=>"%D8", "\u00D9"=>"%D9", "\u00DA"=>"%DA", "\u00DB"=>"%DB", "\u00DC"=>"%DC", "\u00DD"=>"%DD", "\u00DE"=>"%DE", "\u00DF"=>"%DF", "\u00E0"=>"%E0", "\u00E1"=>"%E1", "\u00E2"=>"%E2", "\u00E3"=>"%E3", "\u00E4"=>"%E4", "\u00E5"=>"%E5", "\u00E6"=>"%E6", "\u00E7"=>"%E7", "\u00E8"=>"%E8", "\u00E9"=>"%E9", "\u00EA"=>"%EA", "\u00EB"=>"%EB", "\u00EC"=>"%EC", "\u00ED"=>"%ED", "\u00EE"=>"%EE", "\u00EF"=>"%EF", "\u00F0"=>"%F0", "\u00F1"=>"%F1", "\u00F2"=>"%F2", "\u00F3"=>"%F3", "\u00F4"=>"%F4", "\u00F5"=>"%F5", "\u00F6"=>"%F6", "\u00F7"=>"%F7", "\u00F8"=>"%F8", "\u00F9"=>"%F9", "\u00FA"=>"%FA", "\u00FB"=>"%FB", "\u00FC"=>"%FC", "\u00FD"=>"%FD", "\u00FE"=>"%FE", "\u00FF"=>"%FF"}
@@ -54,7 +54,7 @@ module URI
54
54
  def self.decode_www_form_component(str, enc=Encoding::UTF_8)
55
55
  raise ArgumentError, "invalid %-encoding (#{str})" if /%(?![0-9a-fA-F][0-9a-fA-F])/ =~ str
56
56
  str.b.gsub(/\+|%[0-9a-fA-F][0-9a-fA-F]/, TBLDECWWWCOMP_).force_encoding(enc)
57
- end
57
+ end
58
58
  end
59
59
 
60
60
  module Kernel
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-18 00:00:00.000000000 Z
11
+ date: 2020-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.1
19
+ version: 1.0.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.1
26
+ version: 1.0.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: glimmer-dsl-xml
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,19 +67,33 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.2.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: puts_debuggerer
70
+ name: to_collection
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.8.1
76
- type: :development
75
+ version: 2.0.1
76
+ type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.8.1
82
+ version: 2.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: puts_debuggerer
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rake
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -222,9 +236,12 @@ files:
222
236
  - app/assets/stylesheets/glimmer/jquery-ui.structure.css
223
237
  - app/assets/stylesheets/glimmer/jquery-ui.theme.css
224
238
  - app/assets/stylesheets/glimmer/jquery.ui.timepicker.css
239
+ - lib/display.rb
240
+ - lib/file.rb
225
241
  - lib/glimmer-dsl-opal.rb
226
242
  - lib/glimmer-dsl-opal/ext/date.rb
227
243
  - lib/glimmer-dsl-opal/ext/exception.rb
244
+ - lib/glimmer-dsl-opal/ext/struct.rb
228
245
  - lib/glimmer-dsl-opal/samples/elaborate/contact_manager.rb
229
246
  - lib/glimmer-dsl-opal/samples/elaborate/contact_manager/contact.rb
230
247
  - lib/glimmer-dsl-opal/samples/elaborate/contact_manager/contact_manager_presenter.rb
@@ -234,6 +251,7 @@ files:
234
251
  - lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe/board.rb
235
252
  - lib/glimmer-dsl-opal/samples/elaborate/tic_tac_toe/cell.rb
236
253
  - lib/glimmer-dsl-opal/samples/hello/hello_browser.rb
254
+ - lib/glimmer-dsl-opal/samples/hello/hello_button.rb
237
255
  - lib/glimmer-dsl-opal/samples/hello/hello_checkbox.rb
238
256
  - lib/glimmer-dsl-opal/samples/hello/hello_checkbox_group.rb
239
257
  - lib/glimmer-dsl-opal/samples/hello/hello_combo.rb
@@ -248,6 +266,7 @@ files:
248
266
  - lib/glimmer-dsl-opal/samples/hello/hello_radio.rb
249
267
  - lib/glimmer-dsl-opal/samples/hello/hello_radio_group.rb
250
268
  - lib/glimmer-dsl-opal/samples/hello/hello_tab.rb
269
+ - lib/glimmer-dsl-opal/samples/hello/hello_table.rb
251
270
  - lib/glimmer-dsl-opal/samples/hello/hello_world.rb
252
271
  - lib/glimmer-dsl-opal/vendor/jquery-ui-timepicker/GPL-LICENSE.txt
253
272
  - lib/glimmer-dsl-opal/vendor/jquery-ui-timepicker/MIT-LICENSE.txt
@@ -269,12 +288,12 @@ files:
269
288
  - lib/glimmer-dsl-opal/vendor/jquery.js
270
289
  - lib/glimmer-dsl-swt.rb
271
290
  - lib/glimmer/data_binding/element_binding.rb
272
- - lib/glimmer/data_binding/ext/observable_model.rb
273
291
  - lib/glimmer/data_binding/list_selection_binding.rb
274
292
  - lib/glimmer/data_binding/observable_element.rb
275
293
  - lib/glimmer/data_binding/table_items_binding.rb
276
294
  - lib/glimmer/dsl/opal/async_exec_expression.rb
277
295
  - lib/glimmer/dsl/opal/bind_expression.rb
296
+ - lib/glimmer/dsl/opal/block_property_expression.rb
278
297
  - lib/glimmer/dsl/opal/checkbox_group_selection_data_binding_expression.rb
279
298
  - lib/glimmer/dsl/opal/color_expression.rb
280
299
  - lib/glimmer/dsl/opal/column_properties_expression.rb
@@ -310,6 +329,7 @@ files:
310
329
  - lib/glimmer/swt/color_proxy.rb
311
330
  - lib/glimmer/swt/combo_proxy.rb
312
331
  - lib/glimmer/swt/composite_proxy.rb
332
+ - lib/glimmer/swt/control_editor.rb
313
333
  - lib/glimmer/swt/custom/checkbox_group.rb
314
334
  - lib/glimmer/swt/custom/radio_group.rb
315
335
  - lib/glimmer/swt/date_time_proxy.rb
@@ -337,6 +357,7 @@ files:
337
357
  - lib/glimmer/swt/tab_folder_proxy.rb
338
358
  - lib/glimmer/swt/tab_item_proxy.rb
339
359
  - lib/glimmer/swt/table_column_proxy.rb
360
+ - lib/glimmer/swt/table_editor.rb
340
361
  - lib/glimmer/swt/table_item_proxy.rb
341
362
  - lib/glimmer/swt/table_proxy.rb
342
363
  - lib/glimmer/swt/text_proxy.rb
@@ -345,6 +366,7 @@ files:
345
366
  - lib/glimmer/ui/custom_widget.rb
346
367
  - lib/glimmer/util/proc_tracker.rb
347
368
  - lib/net/http.rb
369
+ - lib/os.rb
348
370
  - lib/uri.rb
349
371
  homepage: http://github.com/AndyObtiva/glimmer-dsl-opal
350
372
  licenses: