Class: Dossier::Segment::Definition
- Inherits:
-
Object
- Object
- Dossier::Segment::Definition
- Defined in:
- lib/dossier/segment/definition.rb
Instance Attribute Summary collapse
-
#display_name ⇒ Object
Returns the value of attribute display_name.
-
#group_by ⇒ Object
Returns the value of attribute group_by.
-
#name ⇒ Object
Returns the value of attribute name.
-
#next ⇒ Object
Returns the value of attribute next.
-
#prev ⇒ Object
Returns the value of attribute prev.
-
#segment_subclass ⇒ Object
readonly
Returns the value of attribute segment_subclass.
-
#segmenter_class ⇒ Object
Returns the value of attribute segmenter_class.
Instance Method Summary collapse
- #chain_module ⇒ Object
- #columns ⇒ Object
-
#initialize(segmenter_class, name, options = {}) ⇒ Definition
constructor
A new instance of Definition.
- #next? ⇒ Boolean
- #plural_name ⇒ Object
- #prev? ⇒ Boolean
- #segment_class_name ⇒ Object
- #segment_module ⇒ Object
Constructor Details
#initialize(segmenter_class, name, options = {}) ⇒ Definition
Returns a new instance of Definition.
7 8 9 10 11 12 13 |
# File 'lib/dossier/segment/definition.rb', line 7 def initialize(segmenter_class, name, = {}) self.segmenter_class = segmenter_class self.name = name self.group_by = .fetch(:group_by, name) self.display_name = .fetch(:display_name, name) define_segment_subclass end |
Instance Attribute Details
#display_name ⇒ Object
Returns the value of attribute display_name.
4 5 6 |
# File 'lib/dossier/segment/definition.rb', line 4 def display_name @display_name end |
#group_by ⇒ Object
Returns the value of attribute group_by.
4 5 6 |
# File 'lib/dossier/segment/definition.rb', line 4 def group_by @group_by end |
#name ⇒ Object
Returns the value of attribute name.
4 5 6 |
# File 'lib/dossier/segment/definition.rb', line 4 def name @name end |
#next ⇒ Object
Returns the value of attribute next.
4 5 6 |
# File 'lib/dossier/segment/definition.rb', line 4 def next @next end |
#prev ⇒ Object
Returns the value of attribute prev.
4 5 6 |
# File 'lib/dossier/segment/definition.rb', line 4 def prev @prev end |
#segment_subclass ⇒ Object (readonly)
Returns the value of attribute segment_subclass.
5 6 7 |
# File 'lib/dossier/segment/definition.rb', line 5 def segment_subclass @segment_subclass end |
#segmenter_class ⇒ Object
Returns the value of attribute segmenter_class.
4 5 6 |
# File 'lib/dossier/segment/definition.rb', line 4 def segmenter_class @segmenter_class end |
Instance Method Details
#chain_module ⇒ Object
35 36 37 |
# File 'lib/dossier/segment/definition.rb', line 35 def chain_module next? ? self.next.segment_module : rows_module end |
#columns ⇒ Object
23 24 25 |
# File 'lib/dossier/segment/definition.rb', line 23 def columns [group_by, display_name_for_column].map(&:to_s).uniq end |
#next? ⇒ Boolean
27 28 29 |
# File 'lib/dossier/segment/definition.rb', line 27 def next? !!self.next end |
#plural_name ⇒ Object
19 20 21 |
# File 'lib/dossier/segment/definition.rb', line 19 def plural_name name.to_s.pluralize end |
#prev? ⇒ Boolean
31 32 33 |
# File 'lib/dossier/segment/definition.rb', line 31 def prev? !!prev end |
#segment_class_name ⇒ Object
15 16 17 |
# File 'lib/dossier/segment/definition.rb', line 15 def segment_class_name name.to_s.classify end |
#segment_module ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/dossier/segment/definition.rb', line 39 def segment_module definition = self Module.new do define_method definition.plural_name do @segments ||= segmenter.(self).map { || definition.segment_subclass.new(segmenter, definition, ).tap do |instance| instance.parent = self if is_a?(Dossier::Segment) end } end end end |