Sha256: 87f30502bfec063c2fd2d524d9bc3d7c04e22254e39171b91437767a6c998df7
Contents?: true
Size: 1.48 KB
Versions: 8
Compression:
Stored size: 1.48 KB
Contents
require 'glimmer/error' require 'glimmer/swt/widget_proxy' require 'glimmer/ui/custom_widget' module Glimmer module DSL # 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`. class StaticExpression < Expression def self.inherited(base) keyword = base.name.split(/::/).last.sub(/Expression$/, '').underscore static_expression = base.new Glimmer.define_method(keyword) do |*args, &block| parent = Glimmer::DSL::Engine.current_parent if !static_expression.can_interpret?(parent, keyword, *args, &block) raise Error, "Invalid use of Glimmer keyword #{keyword} with args #{args} under parent #{parent}" else Glimmer.logger&.debug "#{base.name} will handle expression keyword #{keyword}" static_expression.interpret(parent, keyword, *args, &block).tap do |ui_object| Glimmer::DSL::Engine.add_content(ui_object, static_expression, &block) unless block.nil? end end end end # Subclasses may optionally implement def can_interpret?(parent, keyword, *args, &block) true end end end end
Version data entries
8 entries across 8 versions & 1 rubygems