Module: Dill::Widgets::DSL
- Included in:
- Role, Dill::Widget
- Defined in:
- lib/dill/widgets/dsl.rb
Instance Method Summary collapse
-
#form(name, *rest, &block) ⇒ Object
Declares a new form widget.
-
#list(name, *rest, &block) ⇒ Object
Declares a new list widget.
-
#widget(name, selector_or_parent, parent = Widget, &block) ⇒ Object
Declares a new child widget.
Instance Method Details
#form(name, *rest, &block) ⇒ Object
Declares a new form widget.
See features/role.feature.
7 8 9 |
# File 'lib/dill/widgets/dsl.rb', line 7 def form(name, *rest, &block) name, *rest, Dill::Form, &block end |
#list(name, *rest, &block) ⇒ Object
Declares a new list widget.
See features/roles/list.feature.
14 15 16 |
# File 'lib/dill/widgets/dsl.rb', line 14 def list(name, *rest, &block) name, *rest, Dill::List, &block end |
#widget(name, selector_or_parent, parent = Widget, &block) ⇒ Object
Declares a new child widget.
See github.com/mojotech/dill/blob/master/features/roles/widget.feature
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/dill/widgets/dsl.rb', line 21 def (name, selector_or_parent, parent = Widget, &block) raise ArgumentError, "`#{name}' is a reserved name" \ if WidgetParts::Container.instance_methods.include?(name.to_sym) case selector_or_parent when String, Array, Proc selector, type = selector_or_parent, parent when Class selector, type = selector_or_parent.selector, selector_or_parent else raise ArgumentError, "wrong number of arguments (#{rest.size} for 1)" end raise TypeError, "can't convert `#{type}' to Widget" \ unless type.methods.include?(:selector) raise ArgumentError, "missing selector" unless selector || type.selector child = WidgetClass.new(selector, type, &block) const_set(Dill::WidgetName.new(name).to_sym, child) child end |