class Glimmer::DSL::StaticExpression
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`.
The direct parent namespace of a StaticExpression
subclass must match the DSL
name (case-insensitive) (e.g. Glimmer::DSL::SWT::WidgetExpression has a DSL
of :swt)
Public Class Methods
Source
# File lib/glimmer/dsl/static_expression.rb, line 75 def capitalized(value) @capitalized = value Glimmer::DSL::Engine.add_capitalized_static_expression(new) if @capitalized end
Also aliased as: capitalize, capital
Source
# File lib/glimmer/dsl/static_expression.rb, line 82 def capitalized? @capitalized end
Also aliased as: capitalize?, capital?
Source
# File lib/glimmer/dsl/static_expression.rb, line 88 def case_insensitive(value) if value self.downcased(true) self.upcased(true) self.capitalized(true) else self.downcased(true) self.upcased(false) self.capitalized(false) end end
Source
# File lib/glimmer/dsl/static_expression.rb, line 100 def case_insensitive? downcased? && upcased? && capitalized? end
Source
# File lib/glimmer/dsl/static_expression.rb, line 52 def downcased(value) @downcased = value Glimmer::DSL::Engine.add_downcased_static_expression(new) if @downcased end
Also aliased as: downcase
Source
# File lib/glimmer/dsl/static_expression.rb, line 58 def downcased? # default is true when no attributes are set @downcased.nil? && @upcased.nil? && @capitalized.nil? ? true : @downcased end
Also aliased as: downcase?
Source
# File lib/glimmer/dsl/static_expression.rb, line 43 def inherited(base) Glimmer::DSL::Engine.add_static_expression(base.new) super end
Calls superclass method
Source
# File lib/glimmer/dsl/static_expression.rb, line 48 def keyword @keyword ||= name.split(/::/).last.sub(/Expression$/, '').underscore end
Source
# File lib/glimmer/dsl/static_expression.rb, line 64 def upcased(value) @upcased = value Glimmer::DSL::Engine.add_upcased_static_expression(new) if @upcased end
Also aliased as: upcase
Source
# File lib/glimmer/dsl/static_expression.rb, line 70 def upcased? @upcased end
Also aliased as: upcase?
Public Instance Methods
Source
# File lib/glimmer/dsl/static_expression.rb, line 107 def can_interpret?(parent, keyword, *args, &block) result = false result ||= keyword.downcase == keyword if self.class.downcased? result ||= keyword.upcase == keyword if self.class.upcased? result ||= keyword.capitalize == keyword if self.class.capitalized? result end
Subclasses may optionally implement, but by default it only ensures that the keyword matches lower case static expression class name minus ‘Expression`