Module: Glimmer

Included in:
DataBinding::ListSelectionBinding, DataBinding::WidgetBinding
Defined in:
lib/glimmer.rb,
lib/glimmer/dsl.rb,
lib/glimmer/error.rb,
lib/glimmer/launcher.rb,
lib/glimmer/ui/video.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/color_proxy.rb,
lib/glimmer/swt/shell_proxy.rb,
lib/glimmer/ui/custom_shell.rb,
lib/glimmer/swt/layout_proxy.rb,
lib/glimmer/swt/widget_proxy.rb,
lib/glimmer/ui/custom_widget.rb,
lib/glimmer/swt/display_proxy.rb,
lib/glimmer/util/proc_tracker.rb,
lib/glimmer/dsl/swt_expression.rb,
lib/glimmer/swt/tab_item_proxy.rb,
lib/glimmer/dsl/bind_expression.rb,
lib/glimmer/dsl/exec_expression.rb,
lib/glimmer/dsl/menu_expression.rb,
lib/glimmer/dsl/color_expression.rb,
lib/glimmer/dsl/shell_expression.rb,
lib/glimmer/data_binding/observer.rb,
lib/glimmer/dsl/layout_expression.rb,
lib/glimmer/dsl/parent_expression.rb,
lib/glimmer/dsl/static_expression.rb,
lib/glimmer/dsl/widget_expression.rb,
lib/glimmer/invalid_keyword_error.rb,
lib/glimmer/swt/layout_data_proxy.rb,
lib/glimmer/dsl/display_expression.rb,
lib/glimmer/dsl/expression_handler.rb,
lib/glimmer/dsl/observe_expression.rb,
lib/glimmer/data_binding/observable.rb,
lib/glimmer/dsl/menu_bar_expression.rb,
lib/glimmer/dsl/property_expression.rb,
lib/glimmer/dsl/tab_item_expression.rb,
lib/glimmer/dsl/sync_exec_expression.rb,
lib/glimmer/dsl/async_exec_expression.rb,
lib/glimmer/swt/widget_listener_proxy.rb,
lib/glimmer/data_binding/model_binding.rb,
lib/glimmer/dsl/layout_data_expression.rb,
lib/glimmer/data_binding/widget_binding.rb,
lib/glimmer/dsl/data_binding_expression.rb,
lib/glimmer/dsl/custom_widget_expression.rb,
lib/glimmer/data_binding/observable_array.rb,
lib/glimmer/data_binding/observable_model.rb,
lib/glimmer/data_binding/observable_widget.rb,
lib/glimmer/dsl/tree_properties_expression.rb,
lib/glimmer/dsl/widget_listener_expression.rb,
lib/glimmer/data_binding/tree_items_binding.rb,
lib/glimmer/data_binding/table_items_binding.rb,
lib/glimmer/dsl/column_properties_expression.rb,
lib/glimmer/data_binding/list_selection_binding.rb,
lib/glimmer/dsl/tree_items_data_binding_expression.rb,
lib/glimmer/dsl/table_items_data_binding_expression.rb,
lib/glimmer/dsl/list_selection_data_binding_expression.rb,
lib/glimmer/dsl/combo_selection_data_binding_expression.rb

Overview

TODO consider turning static keywords like layout_data into methods

Defined Under Namespace

Modules: DSL, DataBinding, SWT, UI, Util 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



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/glimmer.rb', line 56

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

.enable_loggingObject



51
52
53
# File 'lib/glimmer.rb', line 51

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



36
37
38
39
40
41
# File 'lib/glimmer.rb', line 36

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)



31
32
33
# File 'lib/glimmer.rb', line 31

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

.included(klass) ⇒ Object



24
25
26
27
28
# File 'lib/glimmer.rb', line 24

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

.loggerObject

Returns Glimmer logger (standard Ruby logger)



44
45
46
47
48
49
# File 'lib/glimmer.rb', line 44

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