caxlsx 3.4.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +11 -12
  4. data/Rakefile +7 -5
  5. data/lib/axlsx/content_type/abstract_content_type.rb +9 -4
  6. data/lib/axlsx/content_type/content_type.rb +7 -5
  7. data/lib/axlsx/content_type/default.rb +4 -2
  8. data/lib/axlsx/content_type/override.rb +4 -2
  9. data/lib/axlsx/doc_props/app.rb +26 -24
  10. data/lib/axlsx/doc_props/core.rb +8 -6
  11. data/lib/axlsx/drawing/area_chart.rb +10 -8
  12. data/lib/axlsx/drawing/area_series.rb +12 -10
  13. data/lib/axlsx/drawing/ax_data_source.rb +2 -0
  14. data/lib/axlsx/drawing/axes.rb +6 -4
  15. data/lib/axlsx/drawing/axis.rb +21 -19
  16. data/lib/axlsx/drawing/bar_3D_chart.rb +14 -12
  17. data/lib/axlsx/drawing/bar_chart.rb +13 -11
  18. data/lib/axlsx/drawing/bar_series.rb +8 -6
  19. data/lib/axlsx/drawing/bubble_chart.rb +6 -4
  20. data/lib/axlsx/drawing/bubble_series.rb +8 -6
  21. data/lib/axlsx/drawing/cat_axis.rb +12 -10
  22. data/lib/axlsx/drawing/chart.rb +20 -18
  23. data/lib/axlsx/drawing/d_lbls.rb +7 -5
  24. data/lib/axlsx/drawing/drawing.rb +58 -56
  25. data/lib/axlsx/drawing/graphic_frame.rb +6 -4
  26. data/lib/axlsx/drawing/hyperlink.rb +10 -8
  27. data/lib/axlsx/drawing/line_3D_chart.rb +7 -5
  28. data/lib/axlsx/drawing/line_chart.rb +10 -8
  29. data/lib/axlsx/drawing/line_series.rb +12 -10
  30. data/lib/axlsx/drawing/marker.rb +9 -7
  31. data/lib/axlsx/drawing/num_data.rb +9 -7
  32. data/lib/axlsx/drawing/num_data_source.rb +9 -7
  33. data/lib/axlsx/drawing/num_val.rb +7 -5
  34. data/lib/axlsx/drawing/one_cell_anchor.rb +7 -5
  35. data/lib/axlsx/drawing/pic.rb +16 -14
  36. data/lib/axlsx/drawing/picture_locking.rb +3 -1
  37. data/lib/axlsx/drawing/pie_3D_chart.rb +5 -3
  38. data/lib/axlsx/drawing/pie_series.rb +8 -6
  39. data/lib/axlsx/drawing/scaling.rb +8 -6
  40. data/lib/axlsx/drawing/scatter_chart.rb +7 -5
  41. data/lib/axlsx/drawing/scatter_series.rb +14 -12
  42. data/lib/axlsx/drawing/ser_axis.rb +7 -5
  43. data/lib/axlsx/drawing/series.rb +6 -4
  44. data/lib/axlsx/drawing/series_title.rb +6 -4
  45. data/lib/axlsx/drawing/str_data.rb +7 -5
  46. data/lib/axlsx/drawing/str_val.rb +6 -4
  47. data/lib/axlsx/drawing/title.rb +13 -14
  48. data/lib/axlsx/drawing/two_cell_anchor.rb +4 -2
  49. data/lib/axlsx/drawing/val_axis.rb +4 -2
  50. data/lib/axlsx/drawing/view_3D.rb +9 -7
  51. data/lib/axlsx/drawing/vml_drawing.rb +18 -16
  52. data/lib/axlsx/drawing/vml_shape.rb +24 -22
  53. data/lib/axlsx/package.rb +69 -66
  54. data/lib/axlsx/rels/relationship.rb +10 -5
  55. data/lib/axlsx/rels/relationships.rb +5 -3
  56. data/lib/axlsx/stylesheet/border.rb +6 -4
  57. data/lib/axlsx/stylesheet/border_pr.rb +5 -3
  58. data/lib/axlsx/stylesheet/cell_alignment.rb +12 -10
  59. data/lib/axlsx/stylesheet/cell_protection.rb +5 -3
  60. data/lib/axlsx/stylesheet/cell_style.rb +10 -8
  61. data/lib/axlsx/stylesheet/color.rb +9 -7
  62. data/lib/axlsx/stylesheet/dxf.rb +5 -3
  63. data/lib/axlsx/stylesheet/fill.rb +3 -1
  64. data/lib/axlsx/stylesheet/font.rb +18 -16
  65. data/lib/axlsx/stylesheet/gradient_fill.rb +6 -4
  66. data/lib/axlsx/stylesheet/gradient_stop.rb +6 -4
  67. data/lib/axlsx/stylesheet/num_fmt.rb +8 -10
  68. data/lib/axlsx/stylesheet/pattern_fill.rb +5 -3
  69. data/lib/axlsx/stylesheet/styles.rb +69 -71
  70. data/lib/axlsx/stylesheet/table_style.rb +7 -5
  71. data/lib/axlsx/stylesheet/table_style_element.rb +6 -4
  72. data/lib/axlsx/stylesheet/table_styles.rb +6 -4
  73. data/lib/axlsx/stylesheet/xf.rb +18 -16
  74. data/lib/axlsx/util/accessors.rb +4 -2
  75. data/lib/axlsx/util/buffered_zip_output_stream.rb +60 -0
  76. data/lib/axlsx/util/constants.rb +117 -104
  77. data/lib/axlsx/util/mime_type_utils.rb +3 -5
  78. data/lib/axlsx/util/options_parser.rb +3 -1
  79. data/lib/axlsx/util/serialized_attributes.rb +42 -17
  80. data/lib/axlsx/util/simple_typed_list.rb +47 -47
  81. data/lib/axlsx/util/storage.rb +11 -10
  82. data/lib/axlsx/util/validators.rb +101 -41
  83. data/lib/axlsx/util/zip_command.rb +10 -10
  84. data/lib/axlsx/version.rb +3 -1
  85. data/lib/axlsx/workbook/defined_name.rb +6 -4
  86. data/lib/axlsx/workbook/defined_names.rb +3 -1
  87. data/lib/axlsx/workbook/shared_strings_table.rb +8 -6
  88. data/lib/axlsx/workbook/workbook.rb +78 -76
  89. data/lib/axlsx/workbook/workbook_view.rb +3 -1
  90. data/lib/axlsx/workbook/workbook_views.rb +3 -1
  91. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +65 -8
  92. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +7 -3
  93. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +11 -7
  94. data/lib/axlsx/workbook/worksheet/auto_filter/sort_condition.rb +51 -0
  95. data/lib/axlsx/workbook/worksheet/auto_filter/sort_state.rb +56 -0
  96. data/lib/axlsx/workbook/worksheet/border_creator.rb +5 -3
  97. data/lib/axlsx/workbook/worksheet/break.rb +3 -1
  98. data/lib/axlsx/workbook/worksheet/cell.rb +55 -48
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +31 -27
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +5 -3
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -1
  102. data/lib/axlsx/workbook/worksheet/col.rb +5 -3
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +5 -3
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +12 -10
  105. data/lib/axlsx/workbook/worksheet/cols.rb +3 -1
  106. data/lib/axlsx/workbook/worksheet/comment.rb +8 -6
  107. data/lib/axlsx/workbook/worksheet/comments.rb +6 -4
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +9 -4
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +18 -16
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +3 -1
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +14 -13
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +30 -28
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +3 -1
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +7 -5
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +4 -2
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +4 -2
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +23 -6
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +5 -5
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +6 -2
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +15 -10
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +6 -2
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +11 -9
  123. data/lib/axlsx/workbook/worksheet/pane.rb +11 -9
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +20 -19
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +8 -6
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +2 -0
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +3 -1
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +3 -1
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +5 -3
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +3 -1
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +16 -14
  132. data/lib/axlsx/workbook/worksheet/row.rb +6 -7
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +6 -4
  134. data/lib/axlsx/workbook/worksheet/selection.rb +9 -7
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +6 -2
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +3 -1
  137. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +6 -2
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +8 -4
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +10 -8
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +15 -13
  141. data/lib/axlsx/workbook/worksheet/table.rb +9 -7
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +4 -2
  143. data/lib/axlsx/workbook/worksheet/tables.rb +3 -1
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +38 -37
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +4 -2
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +8 -2
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +6 -4
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +4 -2
  149. data/lib/axlsx.rb +56 -42
  150. data/lib/caxlsx.rb +3 -1
  151. metadata +49 -43
data/lib/axlsx.rb CHANGED
@@ -1,41 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'htmlentities'
2
- require 'axlsx/version.rb'
4
+ require 'axlsx/version'
3
5
  require 'marcel'
4
6
 
5
- require 'axlsx/util/simple_typed_list.rb'
6
- require 'axlsx/util/constants.rb'
7
- require 'axlsx/util/validators.rb'
8
- require 'axlsx/util/accessors.rb'
7
+ require 'axlsx/util/simple_typed_list'
8
+ require 'axlsx/util/constants'
9
+ require 'axlsx/util/validators'
10
+ require 'axlsx/util/accessors'
9
11
  require 'axlsx/util/serialized_attributes'
10
12
  require 'axlsx/util/options_parser'
11
13
  require 'axlsx/util/mime_type_utils'
14
+ require 'axlsx/util/buffered_zip_output_stream'
12
15
  require 'axlsx/util/zip_command'
13
16
 
14
- require 'axlsx/stylesheet/styles.rb'
17
+ require 'axlsx/stylesheet/styles'
15
18
 
16
- require 'axlsx/doc_props/app.rb'
17
- require 'axlsx/doc_props/core.rb'
18
- require 'axlsx/content_type/content_type.rb'
19
- require 'axlsx/rels/relationships.rb'
19
+ require 'axlsx/doc_props/app'
20
+ require 'axlsx/doc_props/core'
21
+ require 'axlsx/content_type/content_type'
22
+ require 'axlsx/rels/relationships'
20
23
 
21
- require 'axlsx/drawing/drawing.rb'
22
- require 'axlsx/workbook/workbook.rb'
23
- require 'axlsx/package.rb'
24
+ require 'axlsx/drawing/drawing'
25
+ require 'axlsx/workbook/workbook'
26
+ require 'axlsx/package'
24
27
  # required gems
25
28
  require 'nokogiri'
26
29
  require 'zip'
27
30
 
28
31
  # core dependencies
29
32
  require 'bigdecimal'
33
+ require 'cgi'
30
34
  require 'set'
31
35
  require 'time'
32
36
 
33
- begin
34
- if Gem.loaded_specs.has_key?("axlsx_styler")
35
- raise StandardError.new("Please remove `axlsx_styler` from your Gemfile, the associated functionality is now built-in to `caxlsx` directly.")
36
- end
37
- rescue
38
- # Do nothing
37
+ if Gem.loaded_specs.key?("axlsx_styler")
38
+ raise StandardError, "Please remove `axlsx_styler` from your Gemfile, the associated functionality is now built-in to `caxlsx` directly."
39
39
  end
40
40
 
41
41
  # xlsx generation with charts, images, automated column width, customizable styles
@@ -50,7 +50,7 @@ module Axlsx
50
50
  #
51
51
  # Defining as a class method on Axlsx to refrain from monkeypatching Object for all users of this gem.
52
52
  def self.instance_values_for(object)
53
- Hash[object.instance_variables.map { |name| [name.to_s[1..-1], object.instance_variable_get(name)] }]
53
+ object.instance_variables.to_h { |name| [name.to_s[1..], object.instance_variable_get(name)] }
54
54
  end
55
55
 
56
56
  # determines the cell range for the items provided
@@ -88,7 +88,7 @@ module Axlsx
88
88
  letters_str = name[/[A-Z]+/]
89
89
 
90
90
  # capitalization?!?
91
- v = letters_str.reverse.chars.reduce({ :base => 1, :i => 0 }) do |val, c|
91
+ v = letters_str.reverse.chars.reduce({ base: 1, i: 0 }) do |val, c|
92
92
  val[:i] += ((c.bytes.first - 64) * val[:base])
93
93
 
94
94
  val[:base] *= 26
@@ -102,37 +102,51 @@ module Axlsx
102
102
 
103
103
  row_index = (numbers_str.to_i - 1)
104
104
 
105
- return [col_index, row_index]
105
+ [col_index, row_index]
106
106
  end
107
107
 
108
108
  # converts the column index into alphabetical values.
109
109
  # @note This follows the standard spreadsheet convention of naming columns A to Z, followed by AA to AZ etc.
110
110
  # @return [String]
111
111
  def self.col_ref(index)
112
- chars = ''
113
- while index >= 26 do
114
- index, char = index.divmod(26)
115
- chars.prepend((char + 65).chr)
116
- index -= 1
112
+ # Every row will call this for each column / cell and so we can cache result and avoid lots of small object
113
+ # allocations.
114
+ @col_ref ||= {}
115
+ @col_ref[index] ||= begin
116
+ i = index
117
+ chars = +''
118
+ while i >= 26
119
+ i, char = i.divmod(26)
120
+ chars.prepend((char + 65).chr)
121
+ i -= 1
122
+ end
123
+ chars.prepend((i + 65).chr)
124
+ chars.freeze
117
125
  end
118
- chars.prepend((index + 65).chr)
119
- chars
126
+ end
127
+
128
+ # converts the row index into string values.
129
+ # @note The spreadsheet rows are 1-based and the passed in index is 0-based, so we add 1.
130
+ # @return [String]
131
+ def self.row_ref(index)
132
+ @row_ref ||= {}
133
+ @row_ref[index] ||= (index + 1).to_s.freeze
120
134
  end
121
135
 
122
136
  # @return [String] The alpha(column)numeric(row) reference for this sell.
123
137
  # @example Relative Cell Reference
124
138
  # ws.rows.first.cells.first.r #=> "A1"
125
139
  def self.cell_r(c_index, r_index)
126
- col_ref(c_index) << (r_index + 1).to_s
140
+ col_ref(c_index) + row_ref(r_index)
127
141
  end
128
142
 
129
- # Creates an array of individual cell references based on an excel reference range.
143
+ # Creates an array of individual cell references based on an Excel reference range.
130
144
  # @param [String] range A cell range, for example A1:D5
131
145
  # @return [Array]
132
146
  def self.range_to_a(range)
133
- range.match(/^(\w+?\d+)\:(\w+?\d+)$/)
134
- start_col, start_row = name_to_indices($1)
135
- end_col, end_row = name_to_indices($2)
147
+ range =~ /^(\w+?\d+):(\w+?\d+)$/
148
+ start_col, start_row = name_to_indices(::Regexp.last_match(1))
149
+ end_col, end_row = name_to_indices(::Regexp.last_match(2))
136
150
  (start_row..end_row).to_a.map do |row_num|
137
151
  (start_col..end_col).to_a.map do |col_num|
138
152
  cell_r(col_num, row_num)
@@ -146,7 +160,7 @@ module Axlsx
146
160
  def self.camel(s = "", all_caps = true)
147
161
  s = s.to_s
148
162
  s = s.capitalize if all_caps
149
- s.gsub(/_(.)/) { $1.upcase }
163
+ s.gsub(/_(.)/) { ::Regexp.last_match(1).upcase }
150
164
  end
151
165
 
152
166
  # returns the provided string with all invalid control charaters
@@ -167,18 +181,18 @@ module Axlsx
167
181
  # @param [Object] value The value to process
168
182
  # @return [Object]
169
183
  def self.booleanize(value)
170
- if value == true || value == false
171
- value ? 1 : 0
184
+ if BOOLEAN_VALUES.include?(value)
185
+ value ? '1' : '0'
172
186
  else
173
187
  value
174
188
  end
175
189
  end
176
190
 
177
191
  # utility method for performing a deep merge on a Hash
178
- # @param [Hash] Hash to merge into
179
- # @param [Hash] Hash to be added
192
+ # @param [Hash] first_hash Hash to merge into
193
+ # @param [Hash] second_hash Hash to be added
180
194
  def self.hash_deep_merge(first_hash, second_hash)
181
- first_hash.merge(second_hash) do |key, this_val, other_val|
195
+ first_hash.merge(second_hash) do |_key, this_val, other_val|
182
196
  if this_val.is_a?(Hash) && other_val.is_a?(Hash)
183
197
  Axlsx.hash_deep_merge(this_val, other_val)
184
198
  else
@@ -189,7 +203,7 @@ module Axlsx
189
203
 
190
204
  # Instructs the serializer to not try to escape cell value input.
191
205
  # This will give you a huge speed bonus, but if you content has <, > or other xml character data
192
- # the workbook will be invalid and excel will complain.
206
+ # the workbook will be invalid and Excel will complain.
193
207
  def self.trust_input
194
208
  @trust_input ||= false
195
209
  end
@@ -206,7 +220,7 @@ module Axlsx
206
220
  # See https://www.owasp.org/index.php/CSV_Injection for details.
207
221
  # @return [Boolean]
208
222
  def self.escape_formulas
209
- !defined?(@escape_formulas) || @escape_formulas.nil? ? false : @escape_formulas
223
+ !defined?(@escape_formulas) || @escape_formulas.nil? ? true : @escape_formulas
210
224
  end
211
225
 
212
226
  # Sets whether to treat values starting with an equals sign as formulas or as literal strings.
data/lib/caxlsx.rb CHANGED
@@ -1 +1,3 @@
1
- require 'axlsx.rb'
1
+ # frozen_string_literal: true
2
+
3
+ require 'axlsx'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caxlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Randy Morgan
@@ -9,131 +9,133 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-04-12 00:00:00.000000000 Z
12
+ date: 2023-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: nokogiri
15
+ name: htmlentities
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.10'
20
+ version: '4.3'
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.10.4
23
+ version: 4.3.4
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - "~>"
29
29
  - !ruby/object:Gem::Version
30
- version: '1.10'
30
+ version: '4.3'
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.10.4
33
+ version: 4.3.4
34
34
  - !ruby/object:Gem::Dependency
35
- name: rubyzip
35
+ name: marcel
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 1.3.0
41
- - - "<"
38
+ - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '3'
40
+ version: '1.0'
44
41
  type: :runtime
45
42
  prerelease: false
46
43
  version_requirements: !ruby/object:Gem::Requirement
47
44
  requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 1.3.0
51
- - - "<"
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '3'
47
+ version: '1.0'
54
48
  - !ruby/object:Gem::Dependency
55
- name: htmlentities
49
+ name: nokogiri
56
50
  requirement: !ruby/object:Gem::Requirement
57
51
  requirements:
58
52
  - - "~>"
59
53
  - !ruby/object:Gem::Version
60
- version: '4.3'
54
+ version: '1.10'
61
55
  - - ">="
62
56
  - !ruby/object:Gem::Version
63
- version: 4.3.4
57
+ version: 1.10.4
64
58
  type: :runtime
65
59
  prerelease: false
66
60
  version_requirements: !ruby/object:Gem::Requirement
67
61
  requirements:
68
62
  - - "~>"
69
63
  - !ruby/object:Gem::Version
70
- version: '4.3'
64
+ version: '1.10'
71
65
  - - ">="
72
66
  - !ruby/object:Gem::Version
73
- version: 4.3.4
67
+ version: 1.10.4
74
68
  - !ruby/object:Gem::Dependency
75
- name: marcel
69
+ name: rubyzip
76
70
  requirement: !ruby/object:Gem::Requirement
77
71
  requirements:
78
- - - "~>"
72
+ - - ">="
79
73
  - !ruby/object:Gem::Version
80
- version: '1.0'
74
+ version: 1.3.0
75
+ - - "<"
76
+ - !ruby/object:Gem::Version
77
+ version: '3'
81
78
  type: :runtime
82
79
  prerelease: false
83
80
  version_requirements: !ruby/object:Gem::Requirement
84
81
  requirements:
85
- - - "~>"
82
+ - - ">="
86
83
  - !ruby/object:Gem::Version
87
- version: '1.0'
84
+ version: 1.3.0
85
+ - - "<"
86
+ - !ruby/object:Gem::Version
87
+ version: '3'
88
88
  - !ruby/object:Gem::Dependency
89
- name: yard
89
+ name: kramdown
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: 0.9.8
94
+ version: '2.3'
95
95
  type: :development
96
96
  prerelease: false
97
97
  version_requirements: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: 0.9.8
101
+ version: '2.3'
102
102
  - !ruby/object:Gem::Dependency
103
- name: kramdown
103
+ name: timecop
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: '2.3'
108
+ version: 0.9.0
109
109
  type: :development
110
110
  prerelease: false
111
111
  version_requirements: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: '2.3'
115
+ version: 0.9.0
116
116
  - !ruby/object:Gem::Dependency
117
- name: timecop
117
+ name: yard
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: 0.9.0
122
+ version: 0.9.8
123
123
  type: :development
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: 0.9.0
130
- description: " xlsx spreadsheet generation with charts, images, automated column
131
- width, customizable styles and full schema validation. Axlsx helps you create beautiful
132
- Office Open XML Spreadsheet documents ( Excel, Google Spreadsheets, Numbers, LibreOffice)
129
+ version: 0.9.8
130
+ description: 'xlsx spreadsheet generation with charts, images, automated column width,
131
+ customizable styles and full schema validation. Axlsx helps you create beautiful
132
+ Office Open XML Spreadsheet documents (Excel, Google Spreadsheets, Numbers, LibreOffice)
133
133
  without having to understand the entire ECMA specification. Check out the README
134
134
  for some examples of how easy it is. Best of all, you can validate your xlsx file
135
135
  before serialization so you know for sure that anything generated is going to load
136
- on your client's machine.\n"
136
+ on your client''s machine.
137
+
138
+ '
137
139
  email: noel@peden.biz
138
140
  executables: []
139
141
  extensions: []
@@ -218,6 +220,7 @@ files:
218
220
  - lib/axlsx/stylesheet/table_styles.rb
219
221
  - lib/axlsx/stylesheet/xf.rb
220
222
  - lib/axlsx/util/accessors.rb
223
+ - lib/axlsx/util/buffered_zip_output_stream.rb
221
224
  - lib/axlsx/util/constants.rb
222
225
  - lib/axlsx/util/mime_type_utils.rb
223
226
  - lib/axlsx/util/options_parser.rb
@@ -236,6 +239,8 @@ files:
236
239
  - lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb
237
240
  - lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb
238
241
  - lib/axlsx/workbook/worksheet/auto_filter/filters.rb
242
+ - lib/axlsx/workbook/worksheet/auto_filter/sort_condition.rb
243
+ - lib/axlsx/workbook/worksheet/auto_filter/sort_state.rb
239
244
  - lib/axlsx/workbook/worksheet/border_creator.rb
240
245
  - lib/axlsx/workbook/worksheet/break.rb
241
246
  - lib/axlsx/workbook/worksheet/cell.rb
@@ -328,7 +333,8 @@ files:
328
333
  homepage: https://github.com/caxlsx/caxlsx
329
334
  licenses:
330
335
  - MIT
331
- metadata: {}
336
+ metadata:
337
+ rubygems_mfa_required: 'true'
332
338
  post_install_message:
333
339
  rdoc_options: []
334
340
  require_paths:
@@ -337,7 +343,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
337
343
  requirements:
338
344
  - - ">="
339
345
  - !ruby/object:Gem::Version
340
- version: '2.3'
346
+ version: '2.6'
341
347
  required_rubygems_version: !ruby/object:Gem::Requirement
342
348
  requirements:
343
349
  - - ">="