glimmer 0.9.4 → 0.10.3
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 +4 -4
- data/README.md +731 -147
- data/VERSION +1 -1
- data/lib/glimmer.rb +7 -12
- data/lib/glimmer/config.rb +29 -12
- data/lib/glimmer/data_binding/observable_array.rb +225 -22
- data/lib/glimmer/data_binding/observable_model.rb +5 -3
- data/lib/glimmer/data_binding/observer.rb +4 -6
- data/lib/glimmer/dsl/engine.rb +35 -43
- data/lib/glimmer/dsl/expression_handler.rb +2 -3
- metadata +24 -4
data/lib/glimmer/dsl/engine.rb
CHANGED
@@ -96,7 +96,7 @@ module Glimmer
|
|
96
96
|
dynamic_expression_chains_of_responsibility[dsl] = expression_names.reverse.map do |expression_name|
|
97
97
|
expression_class(dsl_namespace, expression_name).new
|
98
98
|
end.reduce(nil) do |last_expresion_handler, expression|
|
99
|
-
Glimmer::Config.logger
|
99
|
+
Glimmer::Config.logger.info {"Adding dynamic expression: #{expression.class.name}"}
|
100
100
|
expression_handler = ExpressionHandler.new(expression)
|
101
101
|
expression_handler.next = last_expresion_handler if last_expresion_handler
|
102
102
|
expression_handler
|
@@ -104,49 +104,42 @@ module Glimmer
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def add_static_expression(static_expression)
|
107
|
-
Glimmer::Config.logger
|
107
|
+
Glimmer::Config.logger.info {"Adding static expression: #{static_expression.class.name}"}
|
108
108
|
keyword = static_expression.class.keyword
|
109
109
|
static_expression_dsl = static_expression.class.dsl
|
110
110
|
static_expressions[keyword] ||= {}
|
111
111
|
static_expressions[keyword][static_expression_dsl] = static_expression
|
112
112
|
Glimmer.send(:define_method, keyword) do |*args, &block|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
Glimmer::DSL::Engine.reset
|
125
|
-
raise e if static_expression_dsl.nil? || !Glimmer::DSL::Engine.static_expressions[keyword][static_expression_dsl].is_a?(TopLevelExpression)
|
126
|
-
end
|
113
|
+
if Glimmer::DSL::Engine.no_dsls?
|
114
|
+
puts Glimmer::DSL::Engine::MESSAGE_NO_DSLS
|
115
|
+
else
|
116
|
+
retrieved_static_expression = Glimmer::DSL::Engine.static_expressions[keyword][Glimmer::DSL::Engine.dsl]
|
117
|
+
static_expression_dsl = (Glimmer::DSL::Engine.static_expressions[keyword].keys - Glimmer::DSL::Engine.disabled_dsls).first if retrieved_static_expression.nil?
|
118
|
+
interpretation = nil
|
119
|
+
if retrieved_static_expression.nil? && Glimmer::DSL::Engine.dsl && (static_expression_dsl.nil? || !Glimmer::DSL::Engine.static_expressions[keyword][static_expression_dsl].is_a?(TopLevelExpression))
|
120
|
+
begin
|
121
|
+
interpretation = Glimmer::DSL::Engine.interpret(keyword, *args, &block)
|
122
|
+
rescue => e
|
123
|
+
raise e if static_expression_dsl.nil? || !Glimmer::DSL::Engine.static_expressions[keyword][static_expression_dsl].is_a?(TopLevelExpression)
|
127
124
|
end
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
125
|
+
end
|
126
|
+
if interpretation
|
127
|
+
interpretation
|
128
|
+
else
|
129
|
+
raise Glimmer::Error, "Unsupported keyword: #{keyword}" unless static_expression_dsl || retrieved_static_expression
|
130
|
+
Glimmer::DSL::Engine.dsl_stack.push(static_expression_dsl || Glimmer::DSL::Engine.dsl)
|
131
|
+
static_expression = Glimmer::DSL::Engine.static_expressions[keyword][Glimmer::DSL::Engine.dsl]
|
132
|
+
if !static_expression.can_interpret?(Glimmer::DSL::Engine.parent, keyword, *args, &block)
|
133
|
+
raise Error, "Invalid use of Glimmer keyword #{keyword} with args #{args} under parent #{Glimmer::DSL::Engine.parent}"
|
134
|
+
else
|
135
|
+
Glimmer::Config.logger.info {"#{static_expression.class.name} will handle expression keyword #{keyword}"}
|
136
|
+
static_expression.interpret(Glimmer::DSL::Engine.parent, keyword, *args, &block).tap do |ui_object|
|
137
|
+
Glimmer::DSL::Engine.add_content(ui_object, static_expression, &block) unless block.nil?
|
138
|
+
Glimmer::DSL::Engine.dsl_stack.pop
|
142
139
|
end
|
143
140
|
end
|
144
|
-
end
|
145
|
-
|
146
|
-
# Glimmer::DSL::Engine.dsl_stack.pop
|
147
|
-
Glimmer::DSL::Engine.reset
|
148
|
-
raise e
|
149
|
-
end
|
141
|
+
end
|
142
|
+
end
|
150
143
|
end
|
151
144
|
end
|
152
145
|
|
@@ -172,10 +165,6 @@ module Glimmer
|
|
172
165
|
add_content(ui_object, expression, &block)
|
173
166
|
dsl_stack.pop
|
174
167
|
end
|
175
|
-
rescue StandardError => e
|
176
|
-
# dsl_stack.pop
|
177
|
-
reset
|
178
|
-
raise e
|
179
168
|
end
|
180
169
|
|
181
170
|
# Adds content block to parent UI object
|
@@ -187,9 +176,12 @@ module Glimmer
|
|
187
176
|
if block_given? && expression.is_a?(ParentExpression)
|
188
177
|
dsl_stack.push(expression.class.dsl)
|
189
178
|
parent_stack.push(parent)
|
190
|
-
|
191
|
-
|
192
|
-
|
179
|
+
begin
|
180
|
+
expression.add_content(parent, &block)
|
181
|
+
ensure
|
182
|
+
parent_stack.pop
|
183
|
+
dsl_stack.pop
|
184
|
+
end
|
193
185
|
end
|
194
186
|
end
|
195
187
|
|
@@ -23,9 +23,9 @@ module Glimmer
|
|
23
23
|
# Otherwise, it forwards to the next handler configured via `#next=` method
|
24
24
|
# If there is no handler next, then it raises an error
|
25
25
|
def handle(parent, keyword, *args, &block)
|
26
|
-
Glimmer::Config.logger
|
26
|
+
Glimmer::Config.logger.info {"Attempting to handle #{keyword} with #{@expression.class.name.split(":").last}"}
|
27
27
|
if @expression.can_interpret?(parent, keyword, *args, &block)
|
28
|
-
Glimmer::Config.logger
|
28
|
+
Glimmer::Config.logger.info {"#{@expression.class.name} will handle expression keyword #{keyword}"}
|
29
29
|
return @expression
|
30
30
|
elsif @next_expression_handler
|
31
31
|
return @next_expression_handler.handle(parent, keyword, *args, &block)
|
@@ -34,7 +34,6 @@ module Glimmer
|
|
34
34
|
message = "Glimmer keyword #{keyword} with args #{args} cannot be handled"
|
35
35
|
message += " inside parent #{parent}" if parent
|
36
36
|
message += "! Check the validity of the code."
|
37
|
-
# Glimmer::Config.logger&.error message
|
38
37
|
raise InvalidKeywordError, message
|
39
38
|
end
|
40
39
|
end
|
metadata
CHANGED
@@ -1,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.3
|
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
|
+
date: 2020-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: 1.0.2
|
19
|
+
- - "<"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.0.0
|
22
|
+
name: array_include_methods
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.2
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.0
|
13
33
|
- !ruby/object:Gem::Dependency
|
14
34
|
requirement: !ruby/object:Gem::Requirement
|
15
35
|
requirements:
|
@@ -63,7 +83,7 @@ dependencies:
|
|
63
83
|
requirements:
|
64
84
|
- - "~>"
|
65
85
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
86
|
+
version: 0.10.0
|
67
87
|
name: puts_debuggerer
|
68
88
|
type: :development
|
69
89
|
prerelease: false
|
@@ -71,7 +91,7 @@ dependencies:
|
|
71
91
|
requirements:
|
72
92
|
- - "~>"
|
73
93
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.
|
94
|
+
version: 0.10.0
|
75
95
|
- !ruby/object:Gem::Dependency
|
76
96
|
requirement: !ruby/object:Gem::Requirement
|
77
97
|
requirements:
|