glimmer-dsl-opal 0.0.1 → 0.0.2

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +95 -20
  3. data/VERSION +1 -1
  4. data/lib/glimmer-dsl-opal.rb +10 -8
  5. data/lib/glimmer/data_binding/element_binding.rb +35 -0
  6. data/lib/glimmer/data_binding/observable_element.rb +14 -0
  7. data/lib/glimmer/dsl/opal/bind_expression.rb +37 -0
  8. data/lib/glimmer/dsl/opal/button_expression.rb +17 -0
  9. data/lib/glimmer/dsl/opal/combo_expression.rb +17 -0
  10. data/lib/glimmer/dsl/opal/combo_selection_data_binding_expression.rb +40 -0
  11. data/lib/glimmer/dsl/opal/composite_expression.rb +17 -0
  12. data/lib/glimmer/dsl/opal/data_binding_expression.rb +34 -0
  13. data/lib/glimmer/dsl/opal/dsl.rb +9 -0
  14. data/lib/glimmer/dsl/opal/label_expression.rb +2 -2
  15. data/lib/glimmer/dsl/opal/property_expression.rb +1 -1
  16. data/lib/glimmer/dsl/opal/shell_expression.rb +2 -2
  17. data/lib/glimmer/dsl/opal/widget_listener_expression.rb +18 -0
  18. data/lib/glimmer/opal/div_proxy.rb +14 -0
  19. data/lib/glimmer/opal/{shell.rb → document_proxy.rb} +19 -5
  20. data/lib/glimmer/opal/element_proxy.rb +52 -0
  21. data/lib/glimmer/opal/event_listener_proxy.rb +18 -0
  22. data/lib/glimmer/opal/input_proxy.rb +30 -0
  23. data/lib/glimmer/opal/label_proxy.rb +24 -0
  24. data/lib/glimmer/opal/select_proxy.rb +58 -0
  25. data/lib/samples/elaborate/contact_manager.rb +95 -0
  26. data/lib/samples/elaborate/contact_manager/contact.rb +11 -0
  27. data/lib/samples/elaborate/contact_manager/contact_manager_presenter.rb +36 -0
  28. data/lib/samples/elaborate/contact_manager/contact_repository.rb +244 -0
  29. data/lib/samples/elaborate/launch +6 -0
  30. data/lib/samples/elaborate/login.rb +88 -0
  31. data/lib/samples/elaborate/tic_tac_toe.rb +53 -0
  32. data/lib/samples/elaborate/tic_tac_toe/board.rb +124 -0
  33. data/lib/samples/elaborate/tic_tac_toe/cell.rb +27 -0
  34. data/lib/samples/hello/hello_browser.rb +8 -0
  35. data/lib/samples/hello/hello_combo.rb +34 -0
  36. data/lib/samples/hello/hello_computed.rb +69 -0
  37. data/lib/samples/hello/hello_computed/contact.rb +21 -0
  38. data/lib/samples/hello/hello_list_multi_selection.rb +44 -0
  39. data/lib/samples/hello/hello_list_single_selection.rb +34 -0
  40. data/lib/samples/hello/hello_tab.rb +24 -0
  41. data/lib/samples/hello/hello_world.rb +8 -0
  42. data/lib/samples/hello/launch +10 -0
  43. data/lib/samples/launch +4 -0
  44. metadata +39 -6
  45. data/lib/glimmer/opal/label.rb +0 -31
@@ -0,0 +1,27 @@
1
+ class TicTacToe
2
+ class Cell
3
+ EMPTY = ""
4
+ attr_accessor :sign, :empty
5
+
6
+ def initialize
7
+ reset
8
+ end
9
+
10
+ def mark(sign)
11
+ self.sign = sign
12
+ end
13
+
14
+ def reset
15
+ self.sign = EMPTY
16
+ end
17
+
18
+ def sign=(sign_symbol)
19
+ @sign = sign_symbol
20
+ self.empty = sign == EMPTY
21
+ end
22
+
23
+ def marked
24
+ !empty
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ include Glimmer
2
+
3
+ shell {
4
+ minimum_size 1024, 860
5
+ browser {
6
+ url 'http://brightonresort.com/about'
7
+ }
8
+ }.open
@@ -0,0 +1,34 @@
1
+ class Person
2
+ attr_accessor :country, :country_options
3
+
4
+ def initialize
5
+ self.country_options=["", "Canada", "US", "Mexico"]
6
+ self.country = "Canada"
7
+ end
8
+
9
+ def reset_country
10
+ self.country = "Canada"
11
+ end
12
+ end
13
+
14
+ class HelloCombo
15
+ include Glimmer
16
+ def launch
17
+ person = Person.new
18
+ shell {
19
+ composite {
20
+ combo(:read_only) {
21
+ selection bind(person, :country)
22
+ }
23
+ button {
24
+ text "Reset"
25
+ on_widget_selected do
26
+ person.reset_country
27
+ end
28
+ }
29
+ }
30
+ }.open
31
+ end
32
+ end
33
+
34
+ HelloCombo.new.launch
@@ -0,0 +1,69 @@
1
+ require_relative "hello_computed/contact"
2
+
3
+ class HelloComputed
4
+ include Glimmer
5
+
6
+ def initialize
7
+ @contact = Contact.new(
8
+ first_name: "Barry",
9
+ last_name: "McKibbin",
10
+ year_of_birth: 1985
11
+ )
12
+ end
13
+
14
+ def launch
15
+ shell {
16
+ text "Hello Computed"
17
+ composite {
18
+ grid_layout {
19
+ num_columns 2
20
+ make_columns_equal_width true
21
+ horizontal_spacing 20
22
+ vertical_spacing 10
23
+ }
24
+ label {text "First &Name: "}
25
+ text {
26
+ text bind(@contact, :first_name)
27
+ layout_data {
28
+ horizontalAlignment :fill
29
+ grabExcessHorizontalSpace true
30
+ }
31
+ }
32
+ label {text "&Last Name: "}
33
+ text {
34
+ text bind(@contact, :last_name)
35
+ layout_data {
36
+ horizontalAlignment :fill
37
+ grabExcessHorizontalSpace true
38
+ }
39
+ }
40
+ label {text "&Year of Birth: "}
41
+ text {
42
+ text bind(@contact, :year_of_birth)
43
+ layout_data {
44
+ horizontalAlignment :fill
45
+ grabExcessHorizontalSpace true
46
+ }
47
+ }
48
+ label {text "Name: "}
49
+ label {
50
+ text bind(@contact, :name, computed_by: [:first_name, :last_name])
51
+ layout_data {
52
+ horizontalAlignment :fill
53
+ grabExcessHorizontalSpace true
54
+ }
55
+ }
56
+ label {text "Age: "}
57
+ label {
58
+ text bind(@contact, :age, on_write: :to_i, computed_by: [:year_of_birth])
59
+ layout_data {
60
+ horizontalAlignment :fill
61
+ grabExcessHorizontalSpace true
62
+ }
63
+ }
64
+ }
65
+ }.open
66
+ end
67
+ end
68
+
69
+ HelloComputed.new.launch
@@ -0,0 +1,21 @@
1
+ class HelloComputed
2
+ class Contact
3
+ attr_accessor :first_name, :last_name, :year_of_birth
4
+
5
+ def initialize(attribute_map)
6
+ @first_name = attribute_map[:first_name]
7
+ @last_name = attribute_map[:last_name]
8
+ @year_of_birth = attribute_map[:year_of_birth]
9
+ end
10
+
11
+ def name
12
+ "#{last_name}, #{first_name}"
13
+ end
14
+
15
+ def age
16
+ Time.now.year - year_of_birth.to_i
17
+ rescue
18
+ 0
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ class Person
2
+ attr_accessor :provinces, :provinces_options
3
+
4
+ def initialize
5
+ self.provinces_options=[
6
+ "",
7
+ "Quebec",
8
+ "Ontario",
9
+ "Manitoba",
10
+ "Saskatchewan",
11
+ "Alberta",
12
+ "British Columbia",
13
+ "Nova Skotia",
14
+ "Newfoundland"
15
+ ]
16
+ self.provinces = ["Quebec", "Manitoba", "Alberta"]
17
+ end
18
+
19
+ def reset_provinces
20
+ self.provinces = ["Quebec", "Manitoba", "Alberta"]
21
+ end
22
+ end
23
+
24
+ class HelloListMultiSelection
25
+ include Glimmer
26
+ def launch
27
+ person = Person.new
28
+ shell {
29
+ composite {
30
+ list(:multi) {
31
+ selection bind(person, :provinces)
32
+ }
33
+ button {
34
+ text "Reset"
35
+ on_widget_selected do
36
+ person.reset_provinces
37
+ end
38
+ }
39
+ }
40
+ }.open
41
+ end
42
+ end
43
+
44
+ HelloListMultiSelection.new.launch
@@ -0,0 +1,34 @@
1
+ class Person
2
+ attr_accessor :country, :country_options
3
+
4
+ def initialize
5
+ self.country_options=["", "Canada", "US", "Mexico"]
6
+ self.country = "Canada"
7
+ end
8
+
9
+ def reset_country
10
+ self.country = "Canada"
11
+ end
12
+ end
13
+
14
+ class HelloListSingleSelection
15
+ include Glimmer
16
+ def launch
17
+ person = Person.new
18
+ shell {
19
+ composite {
20
+ list {
21
+ selection bind(person, :country)
22
+ }
23
+ button {
24
+ text "Reset"
25
+ on_widget_selected do
26
+ person.reset_country
27
+ end
28
+ }
29
+ }
30
+ }.open
31
+ end
32
+ end
33
+
34
+ HelloListSingleSelection.new.launch
@@ -0,0 +1,24 @@
1
+ class HelloTab
2
+ include Glimmer
3
+ def launch
4
+ shell {
5
+ text "Hello Tab"
6
+ tab_folder {
7
+ tab_item {
8
+ text "English"
9
+ label {
10
+ text "Hello, World!"
11
+ }
12
+ }
13
+ tab_item {
14
+ text "French"
15
+ label {
16
+ text "Bonjour Univers!"
17
+ }
18
+ }
19
+ }
20
+ }.open
21
+ end
22
+ end
23
+
24
+ HelloTab.new.launch
@@ -0,0 +1,8 @@
1
+ include Glimmer
2
+
3
+ shell {
4
+ text "Glimmer"
5
+ label {
6
+ text "Hello, World!"
7
+ }
8
+ }.open
@@ -0,0 +1,10 @@
1
+ # Launches all samples
2
+ export DIR=`echo $0 | sed "s/launch//"`
3
+ ${DIR}../../bin/glimmer \
4
+ "${DIR}hello_browser.rb" \
5
+ "${DIR}hello_combo.rb" \
6
+ "${DIR}hello_computed.rb" \
7
+ "${DIR}hello_list_multi_selection.rb" \
8
+ "${DIR}hello_list_single_selection.rb" \
9
+ "${DIR}hello_tab.rb" \
10
+ "${DIR}hello_world.rb"
@@ -0,0 +1,4 @@
1
+ # Launches all samples
2
+ export DIR=`echo $0 | sed "s/launch//"`
3
+ ${DIR}hello/launch &
4
+ ${DIR}elaborate/launch
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.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-14 00:00:00.000000000 Z
11
+ date: 2020-06-17 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: 0.9.0
19
+ version: 0.9.2
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: 0.9.0
26
+ version: 0.9.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-mocks
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -169,20 +169,53 @@ files:
169
169
  - VERSION
170
170
  - lib/glimmer-dsl-opal.rb
171
171
  - lib/glimmer/config.rb
172
+ - lib/glimmer/data_binding/element_binding.rb
173
+ - lib/glimmer/data_binding/observable_element.rb
172
174
  - lib/glimmer/dsl/engine.rb
173
175
  - lib/glimmer/dsl/expression.rb
174
176
  - lib/glimmer/dsl/expression_handler.rb
177
+ - lib/glimmer/dsl/opal/bind_expression.rb
178
+ - lib/glimmer/dsl/opal/button_expression.rb
179
+ - lib/glimmer/dsl/opal/combo_expression.rb
180
+ - lib/glimmer/dsl/opal/combo_selection_data_binding_expression.rb
181
+ - lib/glimmer/dsl/opal/composite_expression.rb
182
+ - lib/glimmer/dsl/opal/data_binding_expression.rb
175
183
  - lib/glimmer/dsl/opal/dsl.rb
176
184
  - lib/glimmer/dsl/opal/label_expression.rb
177
185
  - lib/glimmer/dsl/opal/property_expression.rb
178
186
  - lib/glimmer/dsl/opal/shell_expression.rb
187
+ - lib/glimmer/dsl/opal/widget_listener_expression.rb
179
188
  - lib/glimmer/dsl/parent_expression.rb
180
189
  - lib/glimmer/dsl/static_expression.rb
181
190
  - lib/glimmer/dsl/top_level_expression.rb
182
191
  - lib/glimmer/error.rb
183
192
  - lib/glimmer/invalid_keyword_error.rb
184
- - lib/glimmer/opal/label.rb
185
- - lib/glimmer/opal/shell.rb
193
+ - lib/glimmer/opal/div_proxy.rb
194
+ - lib/glimmer/opal/document_proxy.rb
195
+ - lib/glimmer/opal/element_proxy.rb
196
+ - lib/glimmer/opal/event_listener_proxy.rb
197
+ - lib/glimmer/opal/input_proxy.rb
198
+ - lib/glimmer/opal/label_proxy.rb
199
+ - lib/glimmer/opal/select_proxy.rb
200
+ - lib/samples/elaborate/contact_manager.rb
201
+ - lib/samples/elaborate/contact_manager/contact.rb
202
+ - lib/samples/elaborate/contact_manager/contact_manager_presenter.rb
203
+ - lib/samples/elaborate/contact_manager/contact_repository.rb
204
+ - lib/samples/elaborate/launch
205
+ - lib/samples/elaborate/login.rb
206
+ - lib/samples/elaborate/tic_tac_toe.rb
207
+ - lib/samples/elaborate/tic_tac_toe/board.rb
208
+ - lib/samples/elaborate/tic_tac_toe/cell.rb
209
+ - lib/samples/hello/hello_browser.rb
210
+ - lib/samples/hello/hello_combo.rb
211
+ - lib/samples/hello/hello_computed.rb
212
+ - lib/samples/hello/hello_computed/contact.rb
213
+ - lib/samples/hello/hello_list_multi_selection.rb
214
+ - lib/samples/hello/hello_list_single_selection.rb
215
+ - lib/samples/hello/hello_tab.rb
216
+ - lib/samples/hello/hello_world.rb
217
+ - lib/samples/hello/launch
218
+ - lib/samples/launch
186
219
  homepage: http://github.com/AndyObtiva/glimmer-dsl-opal
187
220
  licenses:
188
221
  - MIT
@@ -1,31 +0,0 @@
1
- module Glimmer
2
- module Opal
3
- class Label
4
- attr_reader :text
5
-
6
- def initialize(parent, args)
7
- @parent = parent
8
- @args = args
9
- @parent.add_child(self)
10
- end
11
-
12
- def text=(value)
13
- @text = value
14
- redraw
15
- end
16
-
17
- def redraw
18
- old_dom = @dom
19
- @dom = nil
20
- old_dom.replace dom
21
- end
22
-
23
- def dom
24
- label_text = @text
25
- @dom ||= DOM {
26
- label label_text
27
- }
28
- end
29
- end
30
- end
31
- end