Class: Vedeu::Models::Page

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/vedeu/models/page.rb

Overview

A Page represents an array of Vedeu::Models::Row objects.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rows = []) ⇒ Vedeu::Models::Page

Returns an instance of Vedeu::Models::Page.

Parameters:



51
52
53
# File 'lib/vedeu/models/page.rb', line 51

def initialize(rows = [])
  @rows = rows || []
end

Instance Attribute Details

#rowsArray<NilClass|Vedeu::Models::Row> (readonly)

Returns:



13
14
15
# File 'lib/vedeu/models/page.rb', line 13

def rows
  @rows
end

Class Method Details

.coerce(value) ⇒ Vedeu::Models::Page

Parameters:

  • value
    Vedeu::Models::Page|Vedeu::Models::Row|Array<void>|void

Returns:



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/vedeu/models/page.rb', line 18

def self.coerce(value)
  if value.is_a?(Vedeu::Models::Page)
    value

  elsif value.is_a?(Vedeu::Models::Row)
    Vedeu::Models::Page.new([value])

  elsif value.is_a?(Array) && value.empty?
    Vedeu::Models::Page.new([Vedeu::Models::Row.coerce(value)])

  elsif value.is_a?(Array)
    values = value.map do |v|
      if v.is_a?(Vedeu::Models::Row)
        v

      else
        Vedeu::Models::Row.coerce(v)

      end
    end
    Vedeu::Models::Page.new(values)

  else
    fail Vedeu::Error::InvalidSyntax,
         'Cannot coerce as value is not an Array.'

  end
end

Instance Method Details

#cell(row_index = nil, cell_index = nil) ⇒ NilClass|void

Parameters:

  • row_index (Fixnum) (defaults to: nil)
  • cell_index (Fixnum) (defaults to: nil)

Returns:

  • (NilClass|void)


63
64
65
66
67
68
# File 'lib/vedeu/models/page.rb', line 63

def cell(row_index = nil, cell_index = nil)
  return nil if row_index.nil? || cell_index.nil?
  return nil unless row(row_index)

  row(row_index)[cell_index]
end

#contentArray<void>

Returns:

  • (Array<void>)


56
57
58
# File 'lib/vedeu/models/page.rb', line 56

def content
  rows.map(&:content).flatten
end

#each(&block) ⇒ Enumerator

Provides iteration over the collection.

Parameters:

  • block (Proc)

Returns:

  • (Enumerator)


74
75
76
# File 'lib/vedeu/models/page.rb', line 74

def each(&block)
  rows.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/vedeu/models/page.rb', line 79

def empty?
  rows.empty?
end

#eql?(other) ⇒ Boolean Also known as: ==

An object is equal when its values are the same.

Parameters:

Returns:

  • (Boolean)


87
88
89
# File 'lib/vedeu/models/page.rb', line 87

def eql?(other)
  self.class == other.class && rows == other.rows
end

#row(index = nil) ⇒ NilClass|Vedeu::Models::Row

Parameters:

  • index (Fixnum) (defaults to: nil)

Returns:



94
95
96
97
98
# File 'lib/vedeu/models/page.rb', line 94

def row(index = nil)
  return nil if index.nil?

  rows[index]
end