Class: RgGen::Builder::ListItemEntry
- Inherits:
-
Object
- Object
- RgGen::Builder::ListItemEntry
- Defined in:
- lib/rggen/builder/list_item_entry.rb
Instance Method Summary collapse
- #build_factory ⇒ Object
- #define_list_item(item_name, context, &body) ⇒ Object
- #enable(item_or_items) ⇒ Object
- #factory(&body) ⇒ Object
-
#initialize(item_base, factory_base, context, &body) ⇒ ListItemEntry
constructor
A new instance of ListItemEntry.
- #item_base(&body) ⇒ Object
- #item_class(&body) ⇒ Object (also: #default_item)
Constructor Details
#initialize(item_base, factory_base, context, &body) ⇒ ListItemEntry
Returns a new instance of ListItemEntry.
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/rggen/builder/list_item_entry.rb', line 4 def initialize(item_base, factory_base, context, &body) @item_base = Class.new(item_base) @factory = Class.new(factory_base) @items = {} @enabled_items = [] unless context.nil? set_context(@item_base , context) set_context(@factory , context) set_context(singleton_class, context) end instance_exec(&body) if block_given? end |
Instance Method Details
#build_factory ⇒ Object
55 56 57 58 59 60 |
# File 'lib/rggen/builder/list_item_entry.rb', line 55 def build_factory @factory.new.tap do |f| f.target_items = target_items f.target_item = @item_class unless @item_class.nil? end end |
#define_list_item(item_name, context, &body) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rggen/builder/list_item_entry.rb', line 35 def define_list_item(item_name, context, &body) klass = Class.new(item_base) unless context.nil? if item_base.private_method_defined?(:shared_context) fail BuilderError, 'base class already has #shared_context' end set_context(klass, context) end klass.class_exec(&body) @items[item_name] = klass end |
#enable(item_or_items) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/rggen/builder/list_item_entry.rb', line 47 def enable(item_or_items) Array(item_or_items).each do |item| next unless @items.key?(item) next if @enabled_items.include?(item) @enabled_items << item end end |
#factory(&body) ⇒ Object
30 31 32 33 |
# File 'lib/rggen/builder/list_item_entry.rb', line 30 def factory(&body) @factory.class_exec(&body) if block_given? @factory end |
#item_base(&body) ⇒ Object
17 18 19 20 |
# File 'lib/rggen/builder/list_item_entry.rb', line 17 def item_base(&body) @item_base.class_exec(&body) if block_given? @item_base end |
#item_class(&body) ⇒ Object Also known as: default_item
22 23 24 25 26 |
# File 'lib/rggen/builder/list_item_entry.rb', line 22 def item_class(&body) @item_class ||= Class.new(@item_base) @item_class.class_exec(&body) if block_given? @item_class end |