class Portable::Document

Top-level object model for a renderable document.

Attributes

options[R]
sheets_by_name[R]

Public Class Methods

new(sheets: [], options: {}) click to toggle source
# File lib/portable/document.rb, line 22
def initialize(sheets: [], options: {})
  @sheets_by_name = make_unique_sheets_by_name(sheets)
  @options        = Modeling::Options.make(options, nullable: false)

  freeze
end

Public Instance Methods

sheet(name) click to toggle source
# File lib/portable/document.rb, line 29
def sheet(name)
  sheets_by_name.fetch(name.to_s)
end
sheets() click to toggle source
# File lib/portable/document.rb, line 33
def sheets
  sheets_by_name.values
end

Private Instance Methods

make_unique_sheets_by_name(sheets) click to toggle source
# File lib/portable/document.rb, line 41
def make_unique_sheets_by_name(sheets)
  sheets = Modeling::Sheet.array(sheets)
  sheets << Modeling::Sheet.new if sheets.empty?

  assert_no_duplicate_names(sheets)
  pivot_by_name(sheets)
end