diff options
| author | Randy Morgan <[email protected]> | 2013-02-04 15:08:46 +0900 |
|---|---|---|
| committer | Randy Morgan <[email protected]> | 2013-02-04 15:08:46 +0900 |
| commit | c99b7b2a138c9c7dd0b42662662f278b01ec7e75 (patch) | |
| tree | 42ae21e6249776e7e4b037698b8ebbac189575aa /lib/axlsx/workbook/worksheet/cell_serializer.rb | |
| parent | f16b22913ab21f6187598216510bc68c0f662cc1 (diff) | |
| download | caxlsx-c99b7b2a138c9c7dd0b42662662f278b01ec7e75.tar.gz caxlsx-c99b7b2a138c9c7dd0b42662662f278b01ec7e75.zip | |
Extracted type based cell serializers
Diffstat (limited to 'lib/axlsx/workbook/worksheet/cell_serializer.rb')
| -rw-r--r-- | lib/axlsx/workbook/worksheet/cell_serializer.rb | 68 |
1 files changed, 59 insertions, 9 deletions
diff --git a/lib/axlsx/workbook/worksheet/cell_serializer.rb b/lib/axlsx/workbook/worksheet/cell_serializer.rb index c7f43f45..e4c35c3a 100644 --- a/lib/axlsx/workbook/worksheet/cell_serializer.rb +++ b/lib/axlsx/workbook/worksheet/cell_serializer.rb @@ -1,6 +1,15 @@ module Axlsx + + # The Cell Serializer class contains the logic for serializing cells based on their type. class CellSerializer class << self + + + # Calls the proper serialization method based on type. + # @param [Integer] row_index The index of the cell's row + # @param [Integer] column_index The index of the cell's column + # @param [String] str The string to apend serialization to. + # @return [String] def to_xml_string(row_index, column_index, cell, str='') str << '<c r="' << Axlsx::cell_r(column_index, row_index) << '" s="' << cell.style.to_s << '" ' return str << '/>' if cell.value.nil? @@ -35,51 +44,79 @@ module Axlsx str end - + # serializes cells that are type iso_8601 + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def iso_8601_type_serialization(cell, str='') value_serialization 'd', cell.value, str end + + # serializes cells that are type date + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def date_type_serialization(cell, str='') value_serialization false, DateTimeConverter::date_to_serial(cell.value).to_s, str end + # Serializes cells that are type time + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def time_type_serialization(cell, str='') value_serialization false, DateTimeConverter::time_to_serial(cell.value).to_s, str end + # Serializes cells that are type boolean + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def boolean_type_serialization(cell, str='') value_serialization 'b', cell.value.to_s, str end + # Serializes cells that are type float + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def float_type_serialization(cell, str='') numeric_type_serialization cell, str end + # Serializes cells that are type integer + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def integer_type_serialization(cell, str = '') numeric_type_serialization cell, str end - def numeric_type_serialization(cell, str = '') - value_serialization 'n', cell.value.to_s, str - end - - def value_serialization(serialization_type, serialization_value, str = '') - str << 't="' << serialization_type << '"' if serialization_type - str << '><v>' << serialization_value << '</v>' - end + # Serializes cells that are type formula + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def formula_serialization(cell, str='') str << 't="str">' << '<f>' << cell.value.to_s.sub('=', '') << '</f>' str << '<v>' << cell.formula_value.to_s << '</v>' unless cell.formula_value.nil? end + # Serializes cells that are type inline_string + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def inline_string_serialization(cell, str = '') str << 't="inlineStr">' << '<is>' run_xml_string cell, str str << '</is>' end + # Serializes cells that are type string + # @param [Cell] cell The cell that is being serialized + # @param [String] str The string the serialized content will be appended to. + # @return [String] def string_type_serialization(cell, str='') if cell.is_formula? formula_serialization cell, str @@ -89,6 +126,19 @@ module Axlsx inline_string_serialization cell, str end end + + private + + def numeric_type_serialization(cell, str = '') + value_serialization 'n', cell.value.to_s, str + end + + def value_serialization(serialization_type, serialization_value, str = '') + str << 't="' << serialization_type << '"' if serialization_type + str << '><v>' << serialization_value << '</v>' + end + + end end end |
