Class: Dossier::Segment::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/dossier/segment/definition.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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, options = {})
  self.segmenter_class = segmenter_class
  self.name            = name
  self.group_by        = options.fetch(:group_by, name)
  self.display_name    = options.fetch(:display_name, name)
  define_segment_subclass
end

Instance Attribute Details

#display_nameObject

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_byObject

Returns the value of attribute group_by.



4
5
6
# File 'lib/dossier/segment/definition.rb', line 4

def group_by
  @group_by
end

#nameObject

Returns the value of attribute name.



4
5
6
# File 'lib/dossier/segment/definition.rb', line 4

def name
  @name
end

#nextObject

Returns the value of attribute next.



4
5
6
# File 'lib/dossier/segment/definition.rb', line 4

def next
  @next
end

#prevObject

Returns the value of attribute prev.



4
5
6
# File 'lib/dossier/segment/definition.rb', line 4

def prev
  @prev
end

#segment_subclassObject (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_classObject

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_moduleObject



35
36
37
# File 'lib/dossier/segment/definition.rb', line 35

def chain_module
  next? ? self.next.segment_module : rows_module
end

#columnsObject



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

Returns:

  • (Boolean)


27
28
29
# File 'lib/dossier/segment/definition.rb', line 27

def next?
  !!self.next
end

#plural_nameObject



19
20
21
# File 'lib/dossier/segment/definition.rb', line 19

def plural_name
  name.to_s.pluralize
end

#prev?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/dossier/segment/definition.rb', line 31

def prev?
  !!prev
end

#segment_class_nameObject



15
16
17
# File 'lib/dossier/segment/definition.rb', line 15

def segment_class_name
  name.to_s.classify
end

#segment_moduleObject



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.segment_options_for(self).map { |options| 
        definition.segment_subclass.new(segmenter, definition, options).tap do |instance|
          instance.parent = self if is_a?(Dossier::Segment)
        end
      }
    end
  end
end