caxlsx 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -12
  3. data/README.md +1 -1
  4. data/lib/axlsx/content_type/abstract_content_type.rb +2 -2
  5. data/lib/axlsx/content_type/content_type.rb +3 -3
  6. data/lib/axlsx/drawing/area_chart.rb +3 -3
  7. data/lib/axlsx/drawing/area_series.rb +2 -2
  8. data/lib/axlsx/drawing/ax_data_source.rb +1 -1
  9. data/lib/axlsx/drawing/axes.rb +1 -1
  10. data/lib/axlsx/drawing/axis.rb +1 -1
  11. data/lib/axlsx/drawing/bar_3D_chart.rb +3 -3
  12. data/lib/axlsx/drawing/bar_chart.rb +3 -3
  13. data/lib/axlsx/drawing/bar_series.rb +2 -2
  14. data/lib/axlsx/drawing/bubble_chart.rb +2 -2
  15. data/lib/axlsx/drawing/bubble_series.rb +2 -2
  16. data/lib/axlsx/drawing/cat_axis.rb +3 -3
  17. data/lib/axlsx/drawing/d_lbls.rb +4 -4
  18. data/lib/axlsx/drawing/drawing.rb +50 -50
  19. data/lib/axlsx/drawing/hyperlink.rb +1 -1
  20. data/lib/axlsx/drawing/line_3D_chart.rb +3 -3
  21. data/lib/axlsx/drawing/line_chart.rb +3 -3
  22. data/lib/axlsx/drawing/line_series.rb +2 -2
  23. data/lib/axlsx/drawing/num_val.rb +1 -1
  24. data/lib/axlsx/drawing/pic.rb +4 -4
  25. data/lib/axlsx/drawing/pie_3D_chart.rb +2 -2
  26. data/lib/axlsx/drawing/pie_chart.rb +2 -2
  27. data/lib/axlsx/drawing/pie_series.rb +2 -2
  28. data/lib/axlsx/drawing/scatter_chart.rb +2 -2
  29. data/lib/axlsx/drawing/scatter_series.rb +2 -2
  30. data/lib/axlsx/drawing/ser_axis.rb +3 -3
  31. data/lib/axlsx/drawing/two_cell_anchor.rb +1 -1
  32. data/lib/axlsx/drawing/val_axis.rb +2 -2
  33. data/lib/axlsx/package.rb +7 -10
  34. data/lib/axlsx/rels/relationship.rb +2 -2
  35. data/lib/axlsx/rels/relationships.rb +2 -2
  36. data/lib/axlsx/stylesheet/border_pr.rb +1 -1
  37. data/lib/axlsx/stylesheet/cell_alignment.rb +1 -1
  38. data/lib/axlsx/stylesheet/cell_style.rb +1 -1
  39. data/lib/axlsx/stylesheet/color.rb +2 -2
  40. data/lib/axlsx/stylesheet/font.rb +1 -1
  41. data/lib/axlsx/stylesheet/gradient_fill.rb +1 -1
  42. data/lib/axlsx/stylesheet/styles.rb +27 -31
  43. data/lib/axlsx/stylesheet/xf.rb +1 -1
  44. data/lib/axlsx/util/accessors.rb +1 -1
  45. data/lib/axlsx/util/constants.rb +2 -2
  46. data/lib/axlsx/util/serialized_attributes.rb +2 -2
  47. data/lib/axlsx/util/simple_typed_list.rb +25 -12
  48. data/lib/axlsx/util/storage.rb +3 -3
  49. data/lib/axlsx/util/validators.rb +1 -1
  50. data/lib/axlsx/version.rb +1 -1
  51. data/lib/axlsx/workbook/defined_name.rb +1 -1
  52. data/lib/axlsx/workbook/shared_strings_table.rb +3 -3
  53. data/lib/axlsx/workbook/workbook.rb +61 -61
  54. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +4 -4
  55. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +1 -1
  56. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +3 -3
  57. data/lib/axlsx/workbook/worksheet/auto_filter/sort_condition.rb +1 -1
  58. data/lib/axlsx/workbook/worksheet/auto_filter/sort_state.rb +2 -2
  59. data/lib/axlsx/workbook/worksheet/border_creator.rb +4 -4
  60. data/lib/axlsx/workbook/worksheet/cell.rb +7 -7
  61. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +1 -1
  62. data/lib/axlsx/workbook/worksheet/col.rb +22 -9
  63. data/lib/axlsx/workbook/worksheet/comment.rb +2 -2
  64. data/lib/axlsx/workbook/worksheet/comments.rb +1 -1
  65. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +1 -1
  66. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +1 -1
  67. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +2 -2
  68. data/lib/axlsx/workbook/worksheet/data_validation.rb +1 -1
  69. data/lib/axlsx/workbook/worksheet/data_validations.rb +2 -2
  70. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +2 -2
  71. data/lib/axlsx/workbook/worksheet/dimension.rb +1 -1
  72. data/lib/axlsx/workbook/worksheet/icon_set.rb +1 -1
  73. data/lib/axlsx/workbook/worksheet/outline_pr.rb +1 -1
  74. data/lib/axlsx/workbook/worksheet/page_setup.rb +2 -2
  75. data/lib/axlsx/workbook/worksheet/pivot_table.rb +29 -5
  76. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +1 -1
  77. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +1 -1
  78. data/lib/axlsx/workbook/worksheet/table_style_info.rb +1 -1
  79. data/lib/axlsx/workbook/worksheet/worksheet.rb +10 -12
  80. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +3 -3
  81. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +1 -1
  82. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +1 -1
  83. data/lib/axlsx.rb +44 -30
  84. data/lib/caxlsx.rb +1 -1
  85. metadata +6 -6
@@ -80,7 +80,7 @@ module Axlsx
80
80
  def image_src=(v)
81
81
  Axlsx.validate_string(v)
82
82
  if remote?
83
- RegexValidator.validate('Pic.image_src', /\A#{URI::DEFAULT_PARSER.make_regexp}\z/, v)
83
+ RegexValidator.validate('Pic.image_src', /\A#{Axlsx.uri_parser.make_regexp}\z/, v)
84
84
  RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type_from_uri(v)
85
85
  else
86
86
  RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type(v)
@@ -118,7 +118,7 @@ module Axlsx
118
118
  File.basename(image_src) unless remote? || image_src.nil?
119
119
  end
120
120
 
121
- # returns the extension of image_src without the preceeding '.'
121
+ # returns the extension of image_src without the preceding '.'
122
122
  # @return [String]
123
123
  def extname
124
124
  File.extname(image_src).delete('.') unless image_src.nil?
@@ -222,9 +222,9 @@ module Axlsx
222
222
  # Return correct xml relationship string portion
223
223
  def relationship_xml_portion
224
224
  if remote?
225
- (+'<a:blip xmlns:r ="' << XML_NS_R << '" r:link="' << relationship.Id << '">')
225
+ (+'<a:blip xmlns:r="' << XML_NS_R << '" r:link="' << relationship.Id << '">')
226
226
  else
227
- (+'<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
227
+ (+'<a:blip xmlns:r="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
228
228
  end
229
229
  end
230
230
 
@@ -22,7 +22,7 @@ module Axlsx
22
22
  # @see View3D
23
23
  def initialize(frame, options = {})
24
24
  @vary_colors = true
25
- super(frame, options)
25
+ super
26
26
  @series_type = PieSeries
27
27
  @view_3D = View3D.new({ rot_x: 30, perspective: 30 }.merge(options))
28
28
  @d_lbls = nil
@@ -32,7 +32,7 @@ module Axlsx
32
32
  # @param [String] str
33
33
  # @return [String]
34
34
  def to_xml_string(str = +'')
35
- super(str) do
35
+ super do
36
36
  str << '<c:pie3DChart>'
37
37
  str << '<c:varyColors val="' << vary_colors.to_s << '"/>'
38
38
  @series.each { |ser| ser.to_xml_string(str) }
@@ -15,7 +15,7 @@ module Axlsx
15
15
  # @see Chart
16
16
  def initialize(frame, options = {})
17
17
  @vary_colors = true
18
- super(frame, options)
18
+ super
19
19
  @series_type = PieSeries
20
20
  @d_lbls = nil
21
21
  end
@@ -24,7 +24,7 @@ module Axlsx
24
24
  # @param [String] str
25
25
  # @return [String]
26
26
  def to_xml_string(str = +'')
27
- super(str) do
27
+ super do
28
28
  str << '<c:pieChart>'
29
29
  str << '<c:varyColors val="' << vary_colors.to_s << '"/>'
30
30
  @series.each { |ser| ser.to_xml_string(str) }
@@ -30,7 +30,7 @@ module Axlsx
30
30
  def initialize(chart, options = {})
31
31
  @explosion = nil
32
32
  @colors = []
33
- super(chart, options)
33
+ super
34
34
  self.labels = AxDataSource.new(data: options[:labels]) unless options[:labels].nil?
35
35
  self.data = NumDataSource.new(options) unless options[:data].nil?
36
36
  end
@@ -51,7 +51,7 @@ module Axlsx
51
51
  # @param [String] str
52
52
  # @return [String]
53
53
  def to_xml_string(str = +'')
54
- super(str) do
54
+ super do
55
55
  str << '<c:explosion val="' << @explosion.to_s << '"/>' unless @explosion.nil?
56
56
  colors.each_with_index do |c, index|
57
57
  str << '<c:dPt>'
@@ -33,7 +33,7 @@ module Axlsx
33
33
  @vary_colors = 0
34
34
  @scatter_style = :lineMarker
35
35
 
36
- super(frame, options)
36
+ super
37
37
  @series_type = ScatterSeries
38
38
  @d_lbls = nil
39
39
  parse_options options
@@ -50,7 +50,7 @@ module Axlsx
50
50
  # @param [String] str
51
51
  # @return [String]
52
52
  def to_xml_string(str = +'')
53
- super(str) do
53
+ super do
54
54
  str << '<c:scatterChart>'
55
55
  str << '<c:scatterStyle val="' << scatter_style.to_s << '"/>'
56
56
  str << '<c:varyColors val="' << vary_colors.to_s << '"/>'
@@ -50,7 +50,7 @@ module Axlsx
50
50
  @show_marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style)
51
51
  @marker_symbol = :default
52
52
 
53
- super(chart, options)
53
+ super
54
54
  @xData = AxDataSource.new(tag_name: :xVal, data: options[:xData]) unless options[:xData].nil?
55
55
  @yData = NumDataSource.new({ tag_name: :yVal, data: options[:yData] }) unless options[:yData].nil?
56
56
  end
@@ -81,7 +81,7 @@ module Axlsx
81
81
  # @param [String] str
82
82
  # @return [String]
83
83
  def to_xml_string(str = +'')
84
- super(str) do
84
+ super do
85
85
  # needs to override the super color here to push in ln/and something else!
86
86
  if color
87
87
  str << '<c:spPr><a:solidFill>'
@@ -3,7 +3,7 @@
3
3
  module Axlsx
4
4
  # A SerAxis object defines a series axis
5
5
  class SerAxis < Axis
6
- # The number of tick lables to skip between labels
6
+ # The number of tick labels to skip between labels
7
7
  # @return [Integer]
8
8
  attr_reader :tick_lbl_skip
9
9
  alias :tickLblSkip :tick_lbl_skip
@@ -18,7 +18,7 @@ module Axlsx
18
18
  # @option options [Integer] tick_mark_skip
19
19
  def initialize(options = {})
20
20
  @tick_lbl_skip, @tick_mark_skip = 1, 1
21
- super(options)
21
+ super
22
22
  end
23
23
 
24
24
  # @see tickLblSkip
@@ -40,7 +40,7 @@ module Axlsx
40
40
  # @return [String]
41
41
  def to_xml_string(str = +'')
42
42
  str << '<c:serAx>'
43
- super(str)
43
+ super
44
44
  str << '<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>' unless @tick_lbl_skip.nil?
45
45
  str << '<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>' unless @tick_mark_skip.nil?
46
46
  str << '</c:serAx>'
@@ -39,7 +39,7 @@ module Axlsx
39
39
  parse_options options
40
40
 
41
41
  # bit of a hack to work around the fact that the coords for start at and end at
42
- # are passed in as an array when specified in intialization options - however
42
+ # are passed in as an array when specified in initialization options - however
43
43
  start_at(*options[:start_at]) if options[:start_at]
44
44
  end_at(*options[:end_at]) if options[:end_at]
45
45
  end
@@ -13,7 +13,7 @@ module Axlsx
13
13
  # @option options [Symbol] crosses_between
14
14
  def initialize(options = {})
15
15
  self.cross_between = :between
16
- super(options)
16
+ super
17
17
  end
18
18
 
19
19
  # @see cross_between
@@ -28,7 +28,7 @@ module Axlsx
28
28
  # @return [String]
29
29
  def to_xml_string(str = +'')
30
30
  str << '<c:valAx>'
31
- super(str)
31
+ super
32
32
  str << '<c:crossBetween val="' << @cross_between.to_s << '"/>'
33
33
  str << '</c:valAx>'
34
34
  end
data/lib/axlsx/package.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Axlsx
4
- # Package is responsible for managing all the bits and peices that Open Office XML requires to make a valid
4
+ # Package is responsible for managing all the bits and pieces that Open Office XML requires to make a valid
5
5
  # xlsx document including validation and serialization.
6
6
  class Package
7
7
  include Axlsx::OptionsParser
@@ -55,11 +55,11 @@ module Axlsx
55
55
  # @raise ArgumentError if workbook parameter is not a Workbook instance.
56
56
  # @note As there are multiple ways to instantiate a workbook for the package,
57
57
  # here are a few examples:
58
- # # assign directly during package instanciation
58
+ # # assign directly during package instantiation
59
59
  # wb = Package.new(:workbook => Workbook.new).workbook
60
60
  #
61
61
  # # get a fresh workbook automatically from the package
62
- # wb = Pacakge.new().workbook
62
+ # wb = Package.new().workbook
63
63
  # # # set the workbook after creating the package
64
64
  # wb = Package.new().workbook = Workbook.new
65
65
  def workbook
@@ -207,7 +207,7 @@ module Axlsx
207
207
  # Note: {Core#created} also defaults to the current time – so to generate identical axlsx packages you have
208
208
  # to set this explicitly, too (eg. with `Package.new(created_at: Time.local(2013, 1, 1))`).
209
209
  #
210
- # @param part A hash describing a part of this pacakge (see {#parts})
210
+ # @param part A hash describing a part of this package (see {#parts})
211
211
  # @return [Zip::Entry]
212
212
  def zip_entry_for_part(part)
213
213
  timestamp = Zip::DOSTime.at(@core.created.to_i)
@@ -273,7 +273,7 @@ module Axlsx
273
273
  ]
274
274
  end
275
275
 
276
- # Performs xsd validation for a signle document
276
+ # Performs xsd validation for a single document
277
277
  #
278
278
  # @param [String] schema path to the xsd schema to be used in validation.
279
279
  # @param [String] doc The xml text to be validated
@@ -282,11 +282,8 @@ module Axlsx
282
282
  def validate_single_doc(schema, doc)
283
283
  schema = Nokogiri::XML::Schema(File.open(schema))
284
284
  doc = Nokogiri::XML(doc)
285
- errors = []
286
- schema.validate(doc).each do |error|
287
- errors << error
288
- end
289
- errors
285
+
286
+ schema.validate(doc)
290
287
  end
291
288
 
292
289
  # Appends override objects for drawings, charts, and sheets as they exist in your workbook to the default content types.
@@ -15,7 +15,7 @@ module Axlsx
15
15
  #
16
16
  # This should be called before serializing a package (see {Package#serialize} and
17
17
  # {Package#to_stream}) to make sure that serialization is idempotent (i.e.
18
- # Relationship instances are generated with the same IDs everytime the package
18
+ # Relationship instances are generated with the same IDs every time the package
19
19
  # is serialized).
20
20
  def initialize_ids_cache
21
21
  Thread.current[:axlsx_relationship_ids_cache] = {}
@@ -116,7 +116,7 @@ module Axlsx
116
116
  h = Axlsx.instance_values_for(self).reject { |k, _| k == "source_obj" }
117
117
  str << '<Relationship '
118
118
  h.each_with_index do |key_value, index|
119
- str << ' ' unless index.zero?
119
+ str << ' ' unless index == 0
120
120
  str << key_value.first.to_s << '="' << Axlsx.coder.encode(key_value.last.to_s) << '"'
121
121
  end
122
122
  str << '/>'
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Axlsx
4
- require 'axlsx/rels/relationship'
4
+ require_relative 'relationship'
5
5
 
6
6
  # Relationships are a collection of Relations that define how package parts are related.
7
- # @note The package automatically manages releationships.
7
+ # @note The package automatically manages relationships.
8
8
  class Relationships < SimpleTypedList
9
9
  # Creates a new Relationships collection based on SimpleTypedList
10
10
  def initialize
@@ -7,7 +7,7 @@ module Axlsx
7
7
  # @return [Color] The color of this border part.
8
8
  attr_reader :color
9
9
 
10
- # @return [Symbol] The syle of this border part.
10
+ # @return [Symbol] The style of this border part.
11
11
  # @note
12
12
  # The following are allowed
13
13
  # :none
@@ -25,7 +25,7 @@ module Axlsx
25
25
 
26
26
  # The horizontal alignment of the cell.
27
27
  # @note
28
- # The horizontal cell alignement style must be one of
28
+ # The horizontal cell alignment style must be one of
29
29
  # :general
30
30
  # :left
31
31
  # :center
@@ -8,7 +8,7 @@ module Axlsx
8
8
  include Axlsx::OptionsParser
9
9
  include Axlsx::SerializedAttributes
10
10
 
11
- # Creats a new CellStyle object
11
+ # Creates a new CellStyle object
12
12
  # @option options [String] name
13
13
  # @option options [Integer] xfId
14
14
  # @option options [Integer] buildinId
@@ -17,7 +17,7 @@ module Axlsx
17
17
 
18
18
  serializable_attributes :auto, :rgb, :tint
19
19
 
20
- # Determines if the color is system color dependant
20
+ # Determines if the color is system color dependent
21
21
  # @return [Boolean]
22
22
  attr_reader :auto
23
23
 
@@ -72,7 +72,7 @@ module Axlsx
72
72
  # This version does not support themes
73
73
  # def theme=(v) Axlsx::validate_unsigned_integer v; @theme = v end
74
74
 
75
- # Indexed colors are for backward compatability which I am choosing not to support
75
+ # Indexed colors are for backward compatibility which I am choosing not to support
76
76
  # def indexed=(v) Axlsx::validate_unsigned_integer v; @indexed = v end
77
77
 
78
78
  # Serializes the object
@@ -33,7 +33,7 @@ module Axlsx
33
33
  # The charset of the font
34
34
  # @return [Integer]
35
35
  # @note
36
- # The following values are defined in the OOXML specification and are OS dependant values
36
+ # The following values are defined in the OOXML specification and are OS dependent values
37
37
  # 0 ANSI_CHARSET
38
38
  # 1 DEFAULT_CHARSET
39
39
  # 2 SYMBOL_CHARSET
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Axlsx
4
- # A GradientFill defines the color and positioning for gradiant cell fill.
4
+ # A GradientFill defines the color and positioning for gradient cell fill.
5
5
  # @see Open Office XML Part 1 §18.8.24
6
6
  class GradientFill
7
7
  include Axlsx::OptionsParser
@@ -1,27 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Axlsx
4
- require 'axlsx/stylesheet/border'
5
- require 'axlsx/stylesheet/border_pr'
6
- require 'axlsx/stylesheet/cell_alignment'
7
- require 'axlsx/stylesheet/cell_style'
8
- require 'axlsx/stylesheet/color'
9
- require 'axlsx/stylesheet/fill'
10
- require 'axlsx/stylesheet/font'
11
- require 'axlsx/stylesheet/gradient_fill'
12
- require 'axlsx/stylesheet/gradient_stop'
13
- require 'axlsx/stylesheet/num_fmt'
14
- require 'axlsx/stylesheet/pattern_fill'
15
- require 'axlsx/stylesheet/table_style'
16
- require 'axlsx/stylesheet/table_styles'
17
- require 'axlsx/stylesheet/table_style_element'
18
- require 'axlsx/stylesheet/dxf'
19
- require 'axlsx/stylesheet/xf'
20
- require 'axlsx/stylesheet/cell_protection'
4
+ require_relative 'border'
5
+ require_relative 'border_pr'
6
+ require_relative 'cell_alignment'
7
+ require_relative 'cell_style'
8
+ require_relative 'color'
9
+ require_relative 'fill'
10
+ require_relative 'font'
11
+ require_relative 'gradient_fill'
12
+ require_relative 'gradient_stop'
13
+ require_relative 'num_fmt'
14
+ require_relative 'pattern_fill'
15
+ require_relative 'table_style'
16
+ require_relative 'table_styles'
17
+ require_relative 'table_style_element'
18
+ require_relative 'dxf'
19
+ require_relative 'xf'
20
+ require_relative 'cell_protection'
21
21
 
22
22
  # The Styles class manages worksheet styles
23
23
  # In addition to creating the require style objects for a valid xlsx package, this class provides the key mechanism for adding styles to your workbook, and safely applying them to the cells of your worksheet.
24
- # All portions of the stylesheet are implemented here exception colors, which specify legacy and modified pallete colors, and exLst, whic is used as a future feature data storage area.
24
+ # All portions of the stylesheet are implemented here exception colors, which specify legacy and modified palette colors, and exLst, which is used as a future feature data storage area.
25
25
  # @see Office Open XML Part 1 18.8.11 for gory details on how this stuff gets put together
26
26
  # @see Styles#add_style
27
27
  # @note The recommended way to manage styles is with add_style
@@ -156,7 +156,7 @@ module Axlsx
156
156
  # ws = p.workbook.add_worksheet
157
157
  #
158
158
  # # black text on a white background at 14pt with thin borders!
159
- # title = ws.styles.add_style(:bg_color => "FFFF0000", :fg_color=>"#FF000000", :sz=>14, :border=> {:style => :thin, :color => "FFFF0000"}
159
+ # title = ws.styles.add_style(:bg_color => "FFFF0000", :fg_color=>"FF000000", :sz=>14, :border=> {:style => :thin, :color => "FFFF0000"}
160
160
  #
161
161
  # ws.add_row ["Least Popular Pets"]
162
162
  # ws.add_row ["", "Dry Skinned Reptiles", "Bald Cats", "Violent Parrots"], :style=>title
@@ -174,7 +174,7 @@ module Axlsx
174
174
  #
175
175
  # # define your styles
176
176
  # title = ws.styles.add_style(:bg_color => "FFFF0000",
177
- # :fg_color=>"#FF000000",
177
+ # :fg_color=>"FF000000",
178
178
  # :border=>Axlsx::STYLE_THIN_BORDER,
179
179
  # :alignment=>{:horizontal => :center})
180
180
  #
@@ -209,10 +209,10 @@ module Axlsx
209
209
  #
210
210
  # # define your styles
211
211
  # profitable = wb.styles.add_style(:bg_color => "FFFF0000",
212
- # :fg_color=>"#FF000000",
212
+ # :fg_color=>"FF000000",
213
213
  # :type => :dxf)
214
214
  #
215
- # ws.add_row ["Genreated At:", Time.now], :styles=>[nil, date_time]
215
+ # ws.add_row ["Generated At:", Time.now], :styles=>[nil, date_time]
216
216
  # ws.add_row ["Previous Year Quarterly Profits (JPY)"], :style=>title
217
217
  # ws.add_row ["Quarter", "Profit", "% of Total"], :style=>title
218
218
  # ws.add_row ["Q1", 4000, 40], :style=>[title, currency, percent]
@@ -245,7 +245,7 @@ module Axlsx
245
245
 
246
246
  font_defaults = { name: @fonts.first.name, sz: @fonts.first.sz, family: @fonts.first.family }
247
247
 
248
- raw_style = { type: :xf }.merge(font_defaults).merge(options)
248
+ raw_style = { type: :xf }.merge(font_defaults, options)
249
249
 
250
250
  if raw_style[:format_code]
251
251
  raw_style.delete(:num_fmt)
@@ -275,7 +275,7 @@ module Axlsx
275
275
  if options[:type] == :xf
276
276
  xf_index = (cellXfs << style)
277
277
 
278
- # Add styles to style_index cache for re-use
278
+ # Add styles to style_index cache for reuse
279
279
  style_index[xf_index] = raw_style
280
280
 
281
281
  xf_index
@@ -298,7 +298,7 @@ module Axlsx
298
298
 
299
299
  # parses add_style options for alignment
300
300
  # noop if options hash does not include :alignment key
301
- # @option options [Hash] alignment A hash of options to prive the CellAlignment intializer
301
+ # @option options [Hash] alignment A hash of options to prive the CellAlignment initializer
302
302
  # @return [CellAlignment]
303
303
  # @see CellAlignment
304
304
  def parse_alignment_options(options = {})
@@ -325,11 +325,7 @@ module Axlsx
325
325
  def parse_font_options(options = {})
326
326
  return if (options.keys & [:fg_color, :sz, :b, :i, :u, :strike, :outline, :shadow, :charset, :family, :font_name]).empty?
327
327
 
328
- Axlsx.instance_values_for(fonts.first).each do |key, value|
329
- # Thanks for that 1.8.7 - cant do a simple merge...
330
- options[key.to_sym] = value unless options.key?(key.to_sym)
331
- end
332
- font = Font.new(options)
328
+ font = Font.new(Axlsx.instance_values_for(fonts.first).merge(options))
333
329
  font.color = Color.new(rgb: options[:fg_color]) if options[:fg_color]
334
330
  font.name = options[:font_name] if options[:font_name]
335
331
  options[:type] == :dxf ? font : fonts << font
@@ -361,7 +357,7 @@ module Axlsx
361
357
 
362
358
  # Both bgColor and fgColor happens to configure the background of the cell.
363
359
  # One of them sets the "background" of the cell, while the other one is
364
- # responsibe for the "pattern" of the cell. When you pick "solid" pattern for
360
+ # responsible for the "pattern" of the cell. When you pick "solid" pattern for
365
361
  # a normal xf style, then it's a rectangle covering all bgColor with fgColor,
366
362
  # which means we need to to set the given background color to fgColor as well.
367
363
  # For some reason I wasn't able find, it works the opposite for dxf styles
@@ -62,7 +62,7 @@ module Axlsx
62
62
  # @return [Integer]
63
63
  attr_reader :xfId
64
64
 
65
- # indecates if text should be prefixed by a single quote in the cell
65
+ # indicates if text should be prefixed by a single quote in the cell
66
66
  # @return [Boolean]
67
67
  attr_reader :quotePrefix
68
68
 
@@ -23,7 +23,7 @@ module Axlsx
23
23
  validated_attr_accessor(symbols, :validate_string)
24
24
  end
25
25
 
26
- # Creates one or more usigned integer attr_accessors
26
+ # Creates one or more unsigned integer attr_accessors
27
27
  # @param [Array] symbols An array of symbols representing the
28
28
  # names of the attributes you will add to your class
29
29
  def unsigned_int_attr_accessor(*symbols)
@@ -259,7 +259,7 @@ module Axlsx
259
259
  # drawing validation schema
260
260
  DRAWING_XSD = "#{SCHEMA_BASE}dml-spreadsheetDrawing.xsd"
261
261
 
262
- # number format id for pecentage formatting using the default formatting id.
262
+ # number format id for percentage formatting using the default formatting id.
263
263
  NUM_FMT_PERCENT = 9
264
264
 
265
265
  # number format id for date format like 2011/11/13
@@ -404,7 +404,7 @@ module Axlsx
404
404
  CONTROL_CHARS = pattern.freeze
405
405
 
406
406
  # ISO 8601 date recognition
407
- ISO_8601_REGEX = /\A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?\Z/.freeze
407
+ ISO_8601_REGEX = /\A(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?\Z/.freeze
408
408
 
409
409
  # FLOAT recognition
410
410
  SAFE_FLOAT_REGEX = /\A[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]{1,2})?\Z/.freeze
@@ -91,8 +91,8 @@ module Axlsx
91
91
 
92
92
  # serialized instance values at text nodes on a camelized element of the
93
93
  # attribute name. You may pass in a block for evaluation against non nil
94
- # values. We use an array for element attributes becuase misordering will
95
- # break the xml and 1.8.7 does not support ordered hashes.
94
+ # values. We use an array for element attributes because misordering will
95
+ # break the xml.
96
96
  # @param [String] str The string instance to which serialized data is appended
97
97
  # @param [Array] additional_attributes An array of additional attribute names.
98
98
  # @return [String] The serialized output.
@@ -21,7 +21,7 @@ module Axlsx
21
21
  alias :== :equal?
22
22
  alias :eql? :equal?
23
23
 
24
- # Creats a new typed list
24
+ # Creates a new typed list
25
25
  # @param [Array, Class] type An array of Class objects or a single Class object
26
26
  # @param [String] serialize_as The tag name to use in serialization
27
27
  # @raise [ArgumentError] if all members of type are not Class objects
@@ -57,7 +57,7 @@ module Axlsx
57
57
  # Transposes the list (without blowing up like ruby does)
58
58
  # any non populated cell in the matrix will be a nil value
59
59
  def transpose
60
- return clone if size.zero?
60
+ return clone if size == 0
61
61
 
62
62
  row_count = size
63
63
  max_column_count = map { |row| row.cells.size }.max
@@ -90,21 +90,24 @@ module Axlsx
90
90
  self
91
91
  end
92
92
 
93
- # join operator
94
- # @param [Array] other the array to join
93
+ # Appends the elements of +others+ to self.
94
+ # @param [Array<Array>] others one or more arrays to join
95
95
  # @raise [ArgumentError] if any of the values being joined are not
96
96
  # one of the allowed types
97
97
  # @return [SimpleTypedList]
98
- def +(other)
99
- other.each do |item|
100
- self << item
98
+ def concat(*others)
99
+ others.each do |other|
100
+ other.each do |item|
101
+ self << item
102
+ end
101
103
  end
102
- super
104
+ self
103
105
  end
104
106
 
105
- # Concat operator
107
+ # Pushes the given object on to the end of this array and returns the index
108
+ # of the item added.
106
109
  # @param [Any] v the data to be added
107
- # @raise [ArgumentError] if the value being added is not one fo the allowed types
110
+ # @raise [ArgumentError] if the value being added is not one of the allowed types
108
111
  # @return [Integer] returns the index of the item added.
109
112
  def <<(v)
110
113
  DataTypeValidator.validate :SimpleTypedList_push, @allowed_types, v
@@ -112,7 +115,17 @@ module Axlsx
112
115
  size - 1
113
116
  end
114
117
 
115
- alias :push :<<
118
+ # Pushes the given object(s) on to the end of this array. This expression
119
+ # returns the array itself, so several appends may be chained together.
120
+ # @param [Any] values the data to be added
121
+ # @raise [ArgumentError] if any of the values being joined are not
122
+ # @return [SimpleTypedList]
123
+ def push(*values)
124
+ values.each do |value|
125
+ self << value
126
+ end
127
+ self
128
+ end
116
129
 
117
130
  # delete the item from the list
118
131
  # @param [Any] v The item to be deleted.
@@ -147,7 +160,7 @@ module Axlsx
147
160
  super
148
161
  end
149
162
 
150
- # inserts an item at the index specfied
163
+ # inserts an item at the index specified
151
164
  # @param [Integer] index
152
165
  # @param [Any] v
153
166
  # @raise [ArgumentError] if the index is protected by locking
@@ -85,16 +85,16 @@ module Axlsx
85
85
  # @return [Integer] sector
86
86
  attr_accessor :sector
87
87
 
88
- # The 0 based index in the directoies chain for this the left sibling of this storage.
88
+ # The 0 based index in the directories chain for this the left sibling of this storage.
89
89
 
90
90
  # @return [Integer] left
91
91
  attr_accessor :left
92
92
 
93
- # The 0 based index in the directoies chain for this the right sibling of this storage.
93
+ # The 0 based index in the directories chain for this the right sibling of this storage.
94
94
  # @return [Integer] right
95
95
  attr_accessor :right
96
96
 
97
- # The 0 based index in the directoies chain for the child of this storage.
97
+ # The 0 based index in the directories chain for the child of this storage.
98
98
  # @return [Integer] child
99
99
  attr_accessor :child
100
100
 
@@ -81,7 +81,7 @@ module Axlsx
81
81
  raise ArgumentError, format(ERR_ANGLE, v.inspect) unless v.to_i >= -5400000 && v.to_i <= 5400000
82
82
  end
83
83
 
84
- # Validates an unsigned intger
84
+ # Validates an unsigned integer
85
85
  UINT_VALIDATOR = ->(arg) { arg.respond_to?(:>=) && arg >= 0 }
86
86
 
87
87
  # Requires that the value is a Integer and is greater or equal to 0
data/lib/axlsx/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Axlsx
4
4
  # The current version
5
- VERSION = "4.1.0"
5
+ VERSION = "4.2.0"
6
6
  end
@@ -22,7 +22,7 @@
22
22
  # <xsd:attribute name="shortcutKey" type="s:ST_Xstring" use="optional"/>
23
23
  # <xsd:attribute name="publishToServer" type="xsd:boolean" use="optional" default="false"/>
24
24
  # <xsd:attribute name="workbookParameter" type="xsd:boolean" use="optional" default="false"/>
25
- # </xsd:extenstion>
25
+ # </xsd:extension>
26
26
  # </xsd:simpleContent>
27
27
 
28
28
  module Axlsx