Module: Glimmer

Included in:
DSL::XML::NodeParentExpression, DataBinding::ListSelectionBinding, DataBinding::WidgetBinding, XML::Node
Defined in:
lib/glimmer.rb,
lib/glimmer/error.rb,
lib/glimmer/package.rb,
lib/glimmer/launcher.rb,
lib/glimmer/ui/video.rb,
lib/glimmer/xml/node.rb,
lib/glimmer/dsl/engine.rb,
lib/glimmer/css/rule_set.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/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/p_expression.rb,
lib/glimmer/dsl/css/s_expression.rb,
lib/glimmer/data_binding/observer.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/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/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/css/rule_set_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/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, 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



69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/glimmer.rb', line 69

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.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.logger&.error e.message
  end
  Glimmer.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
  super(method_symbol, *args, &block)
end

Class Method Details

.dslObject

Currently set DSL (e.g. :swt or :xml)



64
65
66
# File 'lib/glimmer.rb', line 64

def dsl
  Glimmer::DSL::Engine.dsl
end

.dsl=(dsl_name) ⇒ Object

Sets current DSL (e.g. :swt)



59
60
61
# File 'lib/glimmer.rb', line 59

def dsl=(dsl_name)
  Glimmer::DSL::Engine.dsl = dsl_name
end

.enable_loggingObject



54
55
56
# File 'lib/glimmer.rb', line 54

def enable_logging
  @@logger = Logger.new(STDOUT).tap {|logger| logger.level = Logger::WARN}
end

.import_swt_packagesObject

Returns whether Glimmer will import SWT packages into including class



39
40
41
42
43
44
# File 'lib/glimmer.rb', line 39

def import_swt_packages
  unless defined? @@import_swt_packages
    @@import_swt_packages = true
  end
  @@import_swt_packages
end

.import_swt_packages=(value) ⇒ Object

Tells Glimmer to import SWT packages into including class (default: true)



34
35
36
# File 'lib/glimmer.rb', line 34

def import_swt_packages=(value)
  @@import_swt_packages = !!value
end

.included(klass) ⇒ Object



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

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

.loggerObject

Returns Glimmer logger (standard Ruby logger)



47
48
49
50
51
52
# File 'lib/glimmer.rb', line 47

def logger
  # unless defined? @@logger
  #   @@logger = Logger.new(STDOUT).tap {|logger| logger.level = Logger::WARN}
  # end
  @@logger if defined? @@logger
end