Class: Axlsx::CellSerializer
- Inherits:
-
Object
- Object
- Axlsx::CellSerializer
- Defined in:
- lib/axlsx/workbook/worksheet/cell_serializer.rb
Overview
The Cell Serializer class contains the logic for serializing cells based on their type.
Class Method Summary collapse
-
.array_formula_serialization(cell, str = +'')) ⇒ String
Serializes cells that are type array formula.
-
.boolean(cell, str = +'')) ⇒ String
Serializes cells that are type boolean.
-
.date(cell, str = +'')) ⇒ String
serializes cells that are type date.
-
.float(cell, str = +'')) ⇒ String
Serializes cells that are type float.
-
.formula_serialization(cell, str = +'')) ⇒ String
Serializes cells that are type formula.
-
.inline_string_serialization(cell, str = +'')) ⇒ String
Serializes cells that are type inline_string.
-
.integer(cell, str = +'')) ⇒ String
Serializes cells that are type integer.
-
.iso_8601(cell, str = +'')) ⇒ String
serializes cells that are type iso_8601.
-
.richtext(cell, str) ⇒ String
Serializes cells that are of the type richtext.
-
.run_xml_string(cell, str = +'')) ⇒ String
builds an xml text run based on this cells attributes.
-
.string(cell, str = +'')) ⇒ String
Serializes cells that are type string.
-
.text(cell, str) ⇒ String
Serializes cells that are of the type text.
-
.time(cell, str = +'')) ⇒ String
Serializes cells that are type time.
-
.to_xml_string(row_index, column_index, cell, str = +'')) ⇒ String
Calls the proper serialization method based on type.
Class Method Details
.array_formula_serialization(cell, str = +'')) ⇒ String
Serializes cells that are type array formula
101 102 103 104 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 101 def array_formula_serialization(cell, str = +'') str << 't="str">' << '<f t="array" ref="' << cell.r << '">' << cell.clean_value.delete_prefix(ARRAY_FORMULA_PREFIX).delete_suffix(ARRAY_FORMULA_SUFFIX) << '</f>' str << '<v>' << cell.formula_value.to_s << '</v>' unless cell.formula_value.nil? end |
.boolean(cell, str = +'')) ⇒ String
Serializes cells that are type boolean
68 69 70 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 68 def boolean(cell, str = +'') value_serialization 'b', cell.value.to_s, str end |
.date(cell, str = +'')) ⇒ String
serializes cells that are type date
52 53 54 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 52 def date(cell, str = +'') value_serialization false, DateTimeConverter.date_to_serial(cell.value).to_s, str end |
.float(cell, str = +'')) ⇒ String
Serializes cells that are type float
76 77 78 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 76 def float(cell, str = +'') numeric cell, str end |
.formula_serialization(cell, str = +'')) ⇒ String
Serializes cells that are type formula
92 93 94 95 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 92 def formula_serialization(cell, str = +'') str << 't="str"><f>' << cell.clean_value.delete_prefix(FORMULA_PREFIX) << '</f>' str << '<v>' << cell.formula_value.to_s << '</v>' unless cell.formula_value.nil? end |
.inline_string_serialization(cell, str = +'')) ⇒ String
Serializes cells that are type inline_string
110 111 112 113 114 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 110 def inline_string_serialization(cell, str = +'') str << 't="inlineStr"><is>' run_xml_string cell, str str << '</is>' end |
.integer(cell, str = +'')) ⇒ String
Serializes cells that are type integer
84 85 86 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 84 def integer(cell, str = +'') numeric cell, str end |
.iso_8601(cell, str = +'')) ⇒ String
serializes cells that are type iso_8601
44 45 46 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 44 def iso_8601(cell, str = +'') value_serialization 'd', cell.value, str end |
.richtext(cell, str) ⇒ String
Serializes cells that are of the type richtext
136 137 138 139 140 141 142 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 136 def richtext(cell, str) if cell.ssti.nil? inline_string_serialization cell, str else value_serialization 's', cell.ssti, str end end |
.run_xml_string(cell, str = +'')) ⇒ String
builds an xml text run based on this cells attributes.
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 26 def run_xml_string(cell, str = +'') if cell.is_text_run? valid = RichTextRun::INLINE_STYLES - [:value, :type] data = Axlsx.instance_values_for(cell).transform_keys(&:to_sym) data = data.select { |key, value| !value.nil? && valid.include?(key) } RichText.new(cell.value.to_s, data).to_xml_string(str) elsif cell.contains_rich_text? cell.value.to_xml_string(str) else str << '<t>' << cell.clean_value << '</t>' end str end |
.string(cell, str = +'')) ⇒ String
Serializes cells that are type string
120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 120 def string(cell, str = +'') if cell.is_array_formula? array_formula_serialization cell, str elsif cell.is_formula? formula_serialization cell, str elsif !cell.ssti.nil? value_serialization 's', cell.ssti, str else inline_string_serialization cell, str end end |
.text(cell, str) ⇒ String
Serializes cells that are of the type text
148 149 150 151 152 153 154 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 148 def text(cell, str) if cell.ssti.nil? inline_string_serialization cell, str else value_serialization 's', cell.ssti, str end end |
.time(cell, str = +'')) ⇒ String
Serializes cells that are type time
60 61 62 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 60 def time(cell, str = +'') value_serialization false, DateTimeConverter.time_to_serial(cell.value).to_s, str end |
.to_xml_string(row_index, column_index, cell, str = +'')) ⇒ String
Calls the proper serialization method based on type.
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/axlsx/workbook/worksheet/cell_serializer.rb', line 12 def to_xml_string(row_index, column_index, cell, str = +'') str << '<c r="' str << Axlsx.col_ref(column_index) << Axlsx.row_ref(row_index) str << '" s="' << cell.style_str << '" ' return str << '/>' if cell.value.nil? method = cell.type send(method, cell, str) str << '</c>' end |