Class: Glimmer::DSL::ObserveExpression

Inherits:
StaticExpression show all
Defined in:
lib/glimmer/dsl/observe_expression.rb

Constant Summary collapse

REGEX_NESTED_OR_INDEXED_PROPERTY =
/([^\[]+)(\[[^\]]+\])?/

Instance Method Summary collapse

Methods inherited from StaticExpression

inherited

Methods inherited from Expression

#add_content, #textual?, #widget?

Instance Method Details

#can_interpret?(parent, keyword, *args, &block) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
# File 'lib/glimmer/dsl/observe_expression.rb', line 10

def can_interpret?(parent, keyword, *args, &block)
  keyword == 'observe' and
    block_given? and
    (args.size == 2) and
    textual?(args[1])
end

#interpret(parent, keyword, *args, &block) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/glimmer/dsl/observe_expression.rb', line 17

def interpret(parent, keyword, *args, &block)
  observer = DataBinding::Observer.proc(&block)
  if args[1].to_s.match(REGEX_NESTED_OR_INDEXED_PROPERTY)
    observer.observe(DataBinding::ModelBinding.new(args[0], args[1]))
  else
    observer.observe(args[0], args[1])
  end
end