Class: Glimmer::DSL::StaticExpression
- Inherits:
-
Expression
- Object
- Expression
- Glimmer::DSL::StaticExpression
- Defined in:
- lib/glimmer/dsl/static_expression.rb
Overview
Represents a StaticExpression for expressions where the keyword does not vary dynamically. These static keywords are then predefined as methods in Glimmer instead of needing method_missing
StaticExpression subclasses may optionally implement ‘#can_interpret?` (not needed if it only checks for keyword)
StaticExpression subclasses must define ‘#interpret`.
Direct Known Subclasses
AsyncExecExpression, BindExpression, ColumnPropertiesExpression, DisplayExpression, LayoutDataExpression, MenuBarExpression, MenuExpression, ObserveExpression, ShellExpression, SwtExpression, SyncExecExpression, TabItemExpression, TreePropertiesExpression
Class Method Summary collapse
Instance Method Summary collapse
-
#can_interpret?(parent, keyword, *args, &block) ⇒ Boolean
Subclasses may optionally implement.
Methods inherited from Expression
#add_content, #interpret, #textual?, #widget?
Class Method Details
.inherited(base) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/glimmer/dsl/static_expression.rb', line 16 def self.inherited(base) keyword = base.name.split(/::/).last.sub(/Expression$/, '').underscore static_expression = base.new Glimmer.define_method(keyword) do |*args, &block| parent = Glimmer::DSL::Engine.current_parent if !static_expression.can_interpret?(parent, keyword, *args, &block) raise Error, "Invalid use of Glimmer keyword #{keyword} with args #{args} under parent #{parent}" else Glimmer.logger&.debug "#{base.name} will handle expression keyword #{keyword}" static_expression.interpret(parent, keyword, *args, &block).tap do |ui_object| Glimmer::DSL::Engine.add_content(ui_object, static_expression, &block) unless block.nil? end end end end |
Instance Method Details
#can_interpret?(parent, keyword, *args, &block) ⇒ Boolean
Subclasses may optionally implement
33 34 35 |
# File 'lib/glimmer/dsl/static_expression.rb', line 33 def can_interpret?(parent, keyword, *args, &block) true end |