Class: Glimmer::DSL::Expression

Inherits:
Object
  • Object
show all
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

StaticExpression

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.dslObject



14
15
16
# File 'lib/glimmer/dsl/expression.rb', line 14

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



32
33
34
# File 'lib/glimmer/dsl/expression.rb', line 32

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)

Returns:

  • (Boolean)

Raises:



20
21
22
# File 'lib/glimmer/dsl/expression.rb', line 20

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)

Raises:



25
26
27
# File 'lib/glimmer/dsl/expression.rb', line 25

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

Returns:

  • (Boolean)


37
38
39
# File 'lib/glimmer/dsl/expression.rb', line 37

def textual?(object)
  object.is_a?(Symbol) or object.is_a?(String)
end