diff options
| author | Randy Morgan <[email protected]> | 2012-05-03 09:10:23 +0900 |
|---|---|---|
| committer | Randy Morgan <[email protected]> | 2012-05-03 09:10:23 +0900 |
| commit | e622dc54069074198990beb0462da630bad38dd0 (patch) | |
| tree | 4065eb11cf4dcd68440bf8347af4509c130fb11e /lib/axlsx/drawing/num_data.rb | |
| parent | 2dfdd1f26b1fc748da3b4edad9aeeaeae842aedb (diff) | |
| download | caxlsx-e622dc54069074198990beb0462da630bad38dd0.tar.gz caxlsx-e622dc54069074198990beb0462da630bad38dd0.zip | |
rebuild series data base objects with full implementation.
Address shape validation error.
Diffstat (limited to 'lib/axlsx/drawing/num_data.rb')
| -rw-r--r-- | lib/axlsx/drawing/num_data.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/axlsx/drawing/num_data.rb b/lib/axlsx/drawing/num_data.rb new file mode 100644 index 00000000..802a0216 --- /dev/null +++ b/lib/axlsx/drawing/num_data.rb @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +module Axlsx + + #This class specifies data for a particular data point. It is used for both numCache and numLit object + class NumData + + # A string representing the format code to apply. For more information see see the SpreadsheetML numFmt element's (ยง18.8.30) formatCode attribute. + # @return [String] + attr_reader :format_code + + # creates a new NumVal object + # @option options [String] formatCode + # @option options [Array] :data + # @see StrData + def initialize(options={}) + @format_code = "General" + @pt = SimpleTypedList.new NumVal + options.each do |o| + self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}=" + end + end + + # Creates the val objects for this data set. I am not overly confident this is going to play nicely with time and data types. + # @param [Array] values An array of cells or values. + def data=(values=[]) + @tag_name = values.first.is_a?(Cell) ? :numCache : :numLit + values.each do |value| + v = value.is_a?(Cell) ? value.value : value + @pt << NumVal.new(:v => v) + end + end + + # @see format_code + def format_code=(v='General') + Axlsx::validate_string(v) + @format_code = v + end + + # serialize the object + def to_xml_string(str = "") + str << '<c:' << @tag_name.to_s << '>' + str << '<c:formatCode>' << format_code.to_s << '</c:formatCode>' + str << '<c:ptCount val="' << @pt.size.to_s << '"/>' + @pt.each_with_index do |num_val, index| + num_val.to_xml_string index, str + end + str << '</c:' << @tag_name.to_s << '>' + end + + end + +end |
