Class: ExcelTemplating::Document::Sheet
- Inherits:
-
Object
- Object
- ExcelTemplating::Document::Sheet
- Defined in:
- lib/excel_templating/document/sheet.rb
Overview
Define a sheet on a document
Defined Under Namespace
Classes: RepeatedRow
Instance Method Summary collapse
- #column_styles ⇒ Object
-
#default_column_style ⇒ Object
Non DSL Methods ###.
- #default_row_style ⇒ Object
-
#each_row_at(row_number, sheet_data) ⇒ Object
Repeat each row of the data if it is repeated, yielding each item in succession.
-
#inches(decimal_inches) ⇒ Float
Inches converted to excel integer size.
-
#initialize(sheet_number) ⇒ Sheet
constructor
A new instance of Sheet.
-
#repeat_row(row_number, with:, &block) ⇒ Object
Repeat a numbered row in the template using an array from the data will result in expanding the produced excel document by a number of rows.
- #repeated_row?(row_number) ⇒ Boolean
- #row_styles ⇒ Object
- #sheet_data(data) ⇒ Object
- #style_columns(default:, columns: {}) ⇒ Object
- #style_rows(default:, rows: {}) ⇒ Object
-
#validate_cell(row:, column:, with:) ⇒ Object
Validate a particular cell using a declared data source.
- #validated_cell?(row_number, column_number) ⇒ Boolean
-
#validation_source_name(row_number, column_number) ⇒ Symbol
The registered symbol for that row & column or Nil.
Constructor Details
#initialize(sheet_number) ⇒ Sheet
Returns a new instance of Sheet.
9 10 11 12 13 |
# File 'lib/excel_templating/document/sheet.rb', line 9 def initialize(sheet_number) @sheet_number = sheet_number @repeated_rows = {} @validated_cells = {} end |
Instance Method Details
#column_styles ⇒ Object
67 68 69 |
# File 'lib/excel_templating/document/sheet.rb', line 67 def column_styles @column_styles || {} end |
#default_column_style ⇒ Object
Non DSL Methods ###
63 64 65 |
# File 'lib/excel_templating/document/sheet.rb', line 63 def default_column_style @default_column_style || {} end |
#default_row_style ⇒ Object
71 72 73 |
# File 'lib/excel_templating/document/sheet.rb', line 71 def default_row_style @default_row_style || {} end |
#each_row_at(row_number, sheet_data) ⇒ Object
Repeat each row of the data if it is repeated, yielding each item in succession.
109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/excel_templating/document/sheet.rb', line 109 def each_row_at(row_number, sheet_data) if repeated_row?(row_number) repeater = repeated_rows[row_number] verify_array!(sheet_data, repeater.data_attribute) sheet_data[repeater.data_attribute].each_with_index do |row_data, index| yield({ index: index }.merge(row_data).merge(sheet_data)) end else yield sheet_data end end |
#inches(decimal_inches) ⇒ Float
Returns inches converted to excel integer size.
19 20 21 22 23 |
# File 'lib/excel_templating/document/sheet.rb', line 19 def inches(decimal_inches) # empirically determined number. 30.0 seems to be the measurement for 2.6 inches # in open office. (30.0 / 2.6) * decimal_inches end |
#repeat_row(row_number, with:, &block) ⇒ Object
Repeat a numbered row in the template using an array from the data will result in expanding the produced excel document by a number of rows. it is expected that the sheet specific data will contain :with as an Array.
46 47 48 49 |
# File 'lib/excel_templating/document/sheet.rb', line 46 def repeat_row(row_number, with:, &block) repeated_rows[row_number] = RepeatedRow.new(row_number, with) repeated_rows[row_number].instance_eval(&block) if block_given? end |
#repeated_row?(row_number) ⇒ Boolean
84 85 86 |
# File 'lib/excel_templating/document/sheet.rb', line 84 def repeated_row?(row_number) repeated_rows.has_key?(row_number) end |
#row_styles ⇒ Object
75 76 77 |
# File 'lib/excel_templating/document/sheet.rb', line 75 def row_styles @row_styles || {} end |
#sheet_data(data) ⇒ Object
79 80 81 |
# File 'lib/excel_templating/document/sheet.rb', line 79 def sheet_data(data) data[sheet_number] || {} end |
#style_columns(default:, columns: {}) ⇒ Object
27 28 29 30 |
# File 'lib/excel_templating/document/sheet.rb', line 27 def style_columns(default:, columns: {}) @default_column_style = default @column_styles = columns end |
#style_rows(default:, rows: {}) ⇒ Object
34 35 36 37 |
# File 'lib/excel_templating/document/sheet.rb', line 34 def style_rows(default:, rows: {}) @default_row_style = default @row_styles = rows end |
#validate_cell(row:, column:, with:) ⇒ Object
Validate a particular cell using a declared data source
57 58 59 |
# File 'lib/excel_templating/document/sheet.rb', line 57 def validate_cell(row:, column:, with:) validated_cells["#{row}:#{column}"] = with end |
#validated_cell?(row_number, column_number) ⇒ Boolean
90 91 92 93 |
# File 'lib/excel_templating/document/sheet.rb', line 90 def validated_cell?(row_number, column_number) (repeated_row?(row_number) && repeated_rows[row_number].validated_column?(column_number)) || validated_cells.has_key?("#{row_number}:#{column_number}") end |
#validation_source_name(row_number, column_number) ⇒ Symbol
Returns The registered symbol for that row & column or Nil.
98 99 100 101 102 103 104 |
# File 'lib/excel_templating/document/sheet.rb', line 98 def validation_source_name(row_number, column_number) if repeated_row?(row_number) repeated_rows[row_number].validated_column_source(column_number) else validated_cells["#{row_number}:#{column_number}"] end end |