Class: Glimmer::DSL::SWT::ObserveExpression
- Inherits:
-
StaticExpression
- Object
- StaticExpression
- Glimmer::DSL::SWT::ObserveExpression
- Includes:
- TopLevelExpression
- Defined in:
- lib/glimmer/dsl/swt/observe_expression.rb
Constant Summary collapse
- REGEX_NESTED_OR_INDEXED_PROPERTY =
/([^\[]+)(\[[^\]]+\])?/
Instance Method Summary collapse
- #can_interpret?(parent, keyword, *args, &block) ⇒ Boolean
- #interpret(parent, keyword, *args, &block) ⇒ Object
Instance Method Details
#can_interpret?(parent, keyword, *args, &block) ⇒ Boolean
36 37 38 39 40 41 |
# File 'lib/glimmer/dsl/swt/observe_expression.rb', line 36 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
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/glimmer/dsl/swt/observe_expression.rb', line 43 def interpret(parent, keyword, *args, &block) observer = DataBinding::Observer.proc(&block) if args[1].to_s.match(REGEX_NESTED_OR_INDEXED_PROPERTY) observer_registration = observer.observe(DataBinding::ModelBinding.new(args[0], args[1])) else observer_registration = observer.observe(args[0], args[1]) end Glimmer::UI::CustomWidget..last&.observer_registrations&.push(observer_registration) observer_registration end |