Class: Glimmer::DSL::Expression
- Inherits:
-
Object
- Object
- Glimmer::DSL::Expression
- Defined in:
- lib/glimmer/dsl/expression.rb
Overview
Represents a Glimmer DSL expression (e.g. label(:center) { … })
An expression object can interpret a keyword, args, and a block into a UI object
Expressions subclasses follow the convention of using ‘and` and `or` english versino of Ruby’s boolean operations. This allows easy DSL-like readability of the rules, and easy tagging with pd when troubleshooting.
Direct Known Subclasses
CSS::DynamicPropertyExpression, CSS::RuleExpression, SWT::ComboSelectionDataBindingExpression, SWT::CustomWidgetExpression, SWT::DataBindingExpression, SWT::LayoutExpression, SWT::ListSelectionDataBindingExpression, SWT::PropertyExpression, SWT::TableItemsDataBindingExpression, SWT::TreeItemsDataBindingExpression, SWT::WidgetExpression, SWT::WidgetListenerExpression, StaticExpression, XML::XmlExpression
Class Method Summary collapse
Instance Method Summary collapse
-
#add_content(parent, &block) ⇒ Object
Adds block content to specified parent UI object (Optional).
-
#can_interpret?(parent, keyword, *args, &block) ⇒ Boolean
Checks if it can interpret parameters (subclass must override).
-
#interpret(parent, keyword, *args, &block) ⇒ Object
Interprets parameters (subclass must override).
-
#textual?(object) ⇒ Boolean
Checks if object is a Symbol or a String.
-
#widget?(parent) ⇒ Boolean
Checks if parent object is a widget.
Class Method Details
.dsl ⇒ Object
16 17 18 |
# File 'lib/glimmer/dsl/expression.rb', line 16 def dsl @dsl ||= name.split(/::/)[-2].downcase.to_sym end |
Instance Method Details
#add_content(parent, &block) ⇒ Object
Adds block content to specified parent UI object (Optional)
Only expressions that receive a content block should implement
34 35 36 |
# File 'lib/glimmer/dsl/expression.rb', line 34 def add_content(parent, &block) # No Op by default end |
#can_interpret?(parent, keyword, *args, &block) ⇒ Boolean
Checks if it can interpret parameters (subclass must override)
22 23 24 |
# File 'lib/glimmer/dsl/expression.rb', line 22 def can_interpret?(parent, keyword, *args, &block) raise Error, "#can_interpret? must be implemented by an Expression subclass" end |
#interpret(parent, keyword, *args, &block) ⇒ Object
Interprets parameters (subclass must override)
27 28 29 |
# File 'lib/glimmer/dsl/expression.rb', line 27 def interpret(parent, keyword, *args, &block) raise Error, "#interpret must be implemented by an Expression subclass" end |
#textual?(object) ⇒ Boolean
Checks if object is a Symbol or a String
44 45 46 |
# File 'lib/glimmer/dsl/expression.rb', line 44 def textual?(object) object.is_a?(Symbol) or object.is_a?(String) end |
#widget?(parent) ⇒ Boolean
Checks if parent object is a widget
39 40 41 |
# File 'lib/glimmer/dsl/expression.rb', line 39 def (parent) parent.is_a?(Glimmer::SWT::WidgetProxy) or parent.is_a?(Glimmer::UI::CustomWidget) end |