glimmer 0.9.3 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -59,6 +59,7 @@ module Glimmer
59
59
  # registers observer in an observable on a property (optional)
60
60
  # observer maintains registration list to unregister later
61
61
  def register(observable, property = nil)
62
+ return if observable.nil?
62
63
  unless observable.is_a?(Observable)
63
64
  # TODO refactor code to be more smart/polymorphic/automated and honor open/closed principle
64
65
  if observable.is_a?(Array)
@@ -75,6 +76,7 @@ module Glimmer
75
76
  alias observe register
76
77
 
77
78
  def unregister(observable, property = nil)
79
+ return unless observable.is_a?(Observable)
78
80
  # TODO optimize performance in the future via indexing and/or making a registration official object/class
79
81
  observable.remove_observer(*[self, property].compact)
80
82
  registration = registration_for(observable, property)
@@ -90,16 +92,12 @@ module Glimmer
90
92
  thedependents = dependents_for(registration).select do |thedependent|
91
93
  thedependent.observable == dependent_observable
92
94
  end
93
- thedependents.each do |thedependent|
94
- thedependent.unregister
95
- end
95
+ thedependents.each(&:unregister)
96
96
  end
97
97
 
98
98
  # cleans up all registrations in observables
99
99
  def unregister_all_observables
100
- registrations.each do |registration|
101
- registration.unregister
102
- end
100
+ registrations.each(&:unregister)
103
101
  end
104
102
  alias unobserve_all_observables unregister_all_observables
105
103
 
@@ -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&.debug "Adding dynamic expression: #{expression.class.name}"
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&.debug "Adding static expression: #{static_expression.class.name}"
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
- begin
114
- if Glimmer::DSL::Engine.no_dsls?
115
- puts Glimmer::DSL::Engine::MESSAGE_NO_DSLS
116
- else
117
- retrieved_static_expression = Glimmer::DSL::Engine.static_expressions[keyword][Glimmer::DSL::Engine.dsl]
118
- static_expression_dsl = (Glimmer::DSL::Engine.static_expressions[keyword].keys - Glimmer::DSL::Engine.disabled_dsls).first if retrieved_static_expression.nil?
119
- interpretation = nil
120
- 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))
121
- begin
122
- interpretation = Glimmer::DSL::Engine.interpret(keyword, *args, &block)
123
- rescue => e
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
- if interpretation
129
- interpretation
130
- else
131
- raise Glimmer::Error, "Unsupported keyword: #{keyword}" unless static_expression_dsl || retrieved_static_expression
132
- Glimmer::DSL::Engine.dsl_stack.push(static_expression_dsl || Glimmer::DSL::Engine.dsl)
133
- static_expression = Glimmer::DSL::Engine.static_expressions[keyword][Glimmer::DSL::Engine.dsl]
134
- if !static_expression.can_interpret?(Glimmer::DSL::Engine.parent, keyword, *args, &block)
135
- raise Error, "Invalid use of Glimmer keyword #{keyword} with args #{args} under parent #{Glimmer::DSL::Engine.parent}"
136
- else
137
- Glimmer::Config.logger&.debug "#{static_expression.class.name} will handle expression keyword #{keyword}"
138
- static_expression.interpret(Glimmer::DSL::Engine.parent, keyword, *args, &block).tap do |ui_object|
139
- Glimmer::DSL::Engine.add_content(ui_object, static_expression, &block) unless block.nil?
140
- Glimmer::DSL::Engine.dsl_stack.pop
141
- end
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
- rescue StandardError => e
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
- expression.add_content(parent, &block)
191
- parent_stack.pop
192
- dsl_stack.pop
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&.debug "Attempting to handle #{keyword} with #{@expression.class.name.split(":").last}"
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&.debug "#{@expression.class.name} will handle expression keyword #{keyword}"
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.9.3
4
+ version: 0.10.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-27 00:00:00.000000000 Z
11
+ date: 2020-08-20 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: