Module: Glimmer

Included in:
DSL::XML::NodeParentExpression, DataBinding::ListSelectionBinding, DataBinding::WidgetBinding, SWT::TreeProxy, XML::Node
Defined in:
lib/glimmer.rb,
lib/glimmer/error.rb,
lib/glimmer/config.rb,
lib/glimmer/package.rb,
lib/glimmer/css/rule.rb,
lib/glimmer/launcher.rb,
lib/glimmer/xml/node.rb,
lib/glimmer/dsl/engine.rb,
lib/glimmer/swt/packages.rb,
lib/glimmer/swt/swt_proxy.rb,
lib/glimmer/dsl/expression.rb,
lib/glimmer/swt/font_proxy.rb,
lib/glimmer/swt/menu_proxy.rb,
lib/glimmer/swt/tree_proxy.rb,
lib/glimmer/css/style_sheet.rb,
lib/glimmer/swt/color_proxy.rb,
lib/glimmer/swt/shell_proxy.rb,
lib/glimmer/ui/custom_shell.rb,
lib/glimmer/xml/xml_visitor.rb,
lib/glimmer/swt/layout_proxy.rb,
lib/glimmer/swt/widget_proxy.rb,
lib/glimmer/ui/custom_widget.rb,
lib/glimmer/xml/node_visitor.rb,
lib/glimmer/swt/display_proxy.rb,
lib/glimmer/util/proc_tracker.rb,
lib/glimmer/swt/tab_item_proxy.rb,
lib/glimmer/dsl/css/s_expression.rb,
lib/glimmer/data_binding/observer.rb,
lib/glimmer/dsl/css/pv_expression.rb,
lib/glimmer/dsl/parent_expression.rb,
lib/glimmer/dsl/static_expression.rb,
lib/glimmer/invalid_keyword_error.rb,
lib/glimmer/swt/layout_data_proxy.rb,
lib/glimmer/dsl/css/css_expression.rb,
lib/glimmer/dsl/expression_handler.rb,
lib/glimmer/dsl/swt/rgb_expression.rb,
lib/glimmer/dsl/swt/swt_expression.rb,
lib/glimmer/dsl/xml/tag_expression.rb,
lib/glimmer/dsl/xml/xml_expression.rb,
lib/glimmer/xml/name_space_visitor.rb,
lib/glimmer/data_binding/observable.rb,
lib/glimmer/dsl/css/rule_expression.rb,
lib/glimmer/dsl/swt/bind_expression.rb,
lib/glimmer/dsl/swt/exec_expression.rb,
lib/glimmer/dsl/swt/menu_expression.rb,
lib/glimmer/dsl/swt/rgba_expression.rb,
lib/glimmer/dsl/xml/html_expression.rb,
lib/glimmer/dsl/xml/meta_expression.rb,
lib/glimmer/dsl/xml/text_expression.rb,
lib/glimmer/dsl/swt/color_expression.rb,
lib/glimmer/dsl/swt/shell_expression.rb,
lib/glimmer/dsl/top_level_expression.rb,
lib/glimmer/dsl/swt/dialog_expression.rb,
lib/glimmer/dsl/swt/layout_expression.rb,
lib/glimmer/dsl/swt/widget_expression.rb,
lib/glimmer/swt/widget_listener_proxy.rb,
lib/glimmer/data_binding/model_binding.rb,
lib/glimmer/dsl/swt/display_expression.rb,
lib/glimmer/dsl/swt/observe_expression.rb,
lib/glimmer/data_binding/widget_binding.rb,
lib/glimmer/dsl/css/property_expression.rb,
lib/glimmer/dsl/swt/menu_bar_expression.rb,
lib/glimmer/dsl/swt/property_expression.rb,
lib/glimmer/dsl/swt/tab_item_expression.rb,
lib/glimmer/dsl/swt/sync_exec_expression.rb,
lib/glimmer/data_binding/observable_array.rb,
lib/glimmer/data_binding/observable_model.rb,
lib/glimmer/dsl/swt/async_exec_expression.rb,
lib/glimmer/dsl/xml/name_space_expression.rb,
lib/glimmer/data_binding/observable_widget.rb,
lib/glimmer/dsl/swt/layout_data_expression.rb,
lib/glimmer/dsl/xml/node_parent_expression.rb,
lib/glimmer/data_binding/tree_items_binding.rb,
lib/glimmer/dsl/swt/data_binding_expression.rb,
lib/glimmer/xml/depth_first_search_iterator.rb,
lib/glimmer/data_binding/table_items_binding.rb,
lib/glimmer/dsl/swt/custom_widget_expression.rb,
lib/glimmer/dsl/swt/tree_properties_expression.rb,
lib/glimmer/dsl/swt/widget_listener_expression.rb,
lib/glimmer/data_binding/list_selection_binding.rb,
lib/glimmer/dsl/css/dynamic_property_expression.rb,
lib/glimmer/dsl/swt/column_properties_expression.rb,
lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb,
lib/glimmer/dsl/swt/table_items_data_binding_expression.rb,
lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb,
lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb

Overview

TODO consider turning static keywords like layout_data into methods

Defined Under Namespace

Modules: CSS, Config, DSL, DataBinding, Package, SWT, UI, Util, XML Classes: Error, InvalidKeywordError, Launcher

Constant Summary collapse

REGEX_METHODS_EXCLUDED =

TODO make it configurable to include or not include perhaps reverting to using included

/^(to_|\[)/

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_symbol, *args, &block) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/glimmer.rb', line 34

def method_missing(method_symbol, *args, &block)
  # This if statement speeds up Glimmer in girb or whenever directly including on main object
  if method_symbol.to_s.match(REGEX_METHODS_EXCLUDED)
    raise InvalidKeywordError, "Glimmer excluded keyword: #{method_symbol}"
  end
  Glimmer::Config.logger&.debug "Interpreting keyword: #{method_symbol}"
  Glimmer::DSL::Engine.interpret(method_symbol, *args, &block)
rescue InvalidKeywordError => e
  if !method_symbol.to_s.match(REGEX_METHODS_EXCLUDED)
    Glimmer::Config.logger&.error e.message
  end
  Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
  super(method_symbol, *args, &block)
end

Class Method Details

.included(klass) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/glimmer.rb', line 25

def included(klass)
  if Config.import_swt_packages
    klass.include(SWT::Packages)
    klass.extend(SWT::Packages)
    klass.extend(Glimmer)
  end
end