ooxml_parser 0.9.0 → 0.12.1

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ooxml_parser/common_parser/common_data/color.rb +5 -9
  3. data/lib/ooxml_parser/common_parser/common_data/content_types.rb +7 -0
  4. data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +2 -2
  5. data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +1 -1
  6. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb +5 -3
  7. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/shade.rb +13 -0
  8. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +4 -8
  9. data/lib/ooxml_parser/common_parser/common_data/table/margins/paragraph_margins.rb +1 -5
  10. data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +1 -1
  11. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +4 -8
  12. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_helper.rb +7 -0
  13. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +3 -1
  14. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +8 -4
  15. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape.rb +1 -1
  16. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide_helper.rb +1 -3
  17. data/lib/ooxml_parser/version.rb +1 -1
  18. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +17 -3
  19. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb +6 -0
  20. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields.rb +43 -0
  21. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields/cache_field.rb +37 -0
  22. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields/cache_field/shared_items.rb +42 -0
  23. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition.rb +114 -0
  24. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items.rb +43 -0
  25. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items/column_row_item.rb +22 -0
  26. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/location.rb +34 -0
  27. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields.rb +43 -0
  28. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field.rb +37 -0
  29. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items.rb +43 -0
  30. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items/item.rb +26 -0
  31. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_table_style_info.rb +42 -0
  32. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +1 -1
  33. metadata +111 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8e3e91e0a460a222a1b728590f787326cc5dcccbb08ca49609dde048038592a
4
- data.tar.gz: 75cafd238d3318956e9df7ae7101914d7ab66d7719ecbbb8eac7c6ad620330fd
3
+ metadata.gz: 70f22490ee51df42e0fcdab9b647c19ee44adcef3ad22a2af2ee68de346b8fcd
4
+ data.tar.gz: e7faaec854030bb9b6b435401c78d50f1421bbf12eac175c8772eba608b92ed6
5
5
  SHA512:
6
- metadata.gz: e6f5ca51269103d59ebb7199dd98dd123dbc6b4a7d007f2a41a08ba7f26f3291433cb5d4188e0218e0d5d87b3066d9e4513b7ce75b3a49b4a74e18252acb465f
7
- data.tar.gz: a155b362cb64c70a70a367fb99ec499c9b9eb282deeb1451f77a99efecae19a4f549f76178643889011e5dc3831eca2f02ff8cb6b9bbc619a4de3511aa86845c
6
+ metadata.gz: b3c1dadbed29dddce8f84bb2df7c09b50fa117608f66fb5f4895259618d7659e772cf7617de7e5ea7979d914800d589eff122a6022670daeaad73de1817b013c
7
+ data.tar.gz: bb7a942fbc164badb3b066bd5fea520f972b8821929f10027f3f4be9e91161cbe7d11f4f5c519559da51280db12d7aa9f487dd31a24179e2bb8846b167e25cae
@@ -94,13 +94,9 @@ module OoxmlParser
94
94
  # @return [True, False] result of comparision
95
95
  def ==(other)
96
96
  if other.is_a?(Color)
97
- if (@red == other.red) && (@green == other.green) && (@blue == other.blue)
98
- true
99
- elsif (none? && other.white?) || (white? && other.none?)
100
- true
101
- else
102
- false
103
- end
97
+ ((@red == other.red) && (@green == other.green) && (@blue == other.blue)) ||
98
+ (none? && other.white?) ||
99
+ (white? && other.none?)
104
100
  else
105
101
  false
106
102
  end
@@ -125,7 +121,7 @@ module OoxmlParser
125
121
  red = color_to_check.red
126
122
  green = color_to_check.green
127
123
  blue = color_to_check.blue
128
- (self.red - red).abs < delta && (self.green - green).abs < delta && (self.blue - blue).abs < delta ? true : false
124
+ (self.red - red).abs < delta && (self.green - green).abs < delta && (self.blue - blue).abs < delta
129
125
  end
130
126
 
131
127
  # Apply tint to color
@@ -268,7 +264,7 @@ module OoxmlParser
268
264
  return Color.new(VALUE_FOR_NONE_COLOR, VALUE_FOR_NONE_COLOR, VALUE_FOR_NONE_COLOR) if str == 'none' || str == '' || str == 'transparent' || str.nil?
269
265
 
270
266
  split = if str.include?('RGB (') || str.include?('rgb(')
271
- str.gsub(/[(RGBrgb() )]/, '').split(',')
267
+ str.gsub(/[(RGBrgb) ]/, '').split(',')
272
268
  elsif str.include?('RGB ') || str.include?('rgb')
273
269
  str.gsub(/RGB |rgb/, '').split(', ')
274
270
  else
@@ -34,5 +34,12 @@ module OoxmlParser
34
34
  end
35
35
  self
36
36
  end
37
+
38
+ # Get content definition by type
39
+ # @param [String] type of definition
40
+ # @return [Object] resulting objects
41
+ def by_type(type)
42
+ @content_types_list.select { |item| item.content_type == type }
43
+ end
37
44
  end
38
45
  end
@@ -23,8 +23,8 @@ module OoxmlParser
23
23
  end
24
24
  string = string.split('!').last
25
25
  if coordinates?(string)
26
- coordinates.row = string.scan(/[0-9]/).join('').to_i
27
- coordinates.column = string.scan(/[A-Z]/).join('')
26
+ coordinates.row = string.scan(/[0-9]/).join.to_i
27
+ coordinates.column = string.scan(/[A-Z]/).join
28
28
  end
29
29
  coordinates
30
30
  end
@@ -76,7 +76,7 @@ module OoxmlParser
76
76
  @action = :last_slide
77
77
  when 'ppaction://hlinksldjump'
78
78
  @action = :slide
79
- @url = OOXMLDocumentObject.get_link_from_rels(@id).scan(/\d+/).join('').to_i
79
+ @url = OOXMLDocumentObject.get_link_from_rels(@id).scan(/\d+/).join.to_i
80
80
  else
81
81
  if @id && !@id.empty?
82
82
  @action = :external_link
@@ -30,6 +30,8 @@ module OoxmlParser
30
30
  attr_accessor :contextual_spacing
31
31
  # @return [Symbol] The alignment or justification to be applied to a paragraph
32
32
  attr_accessor :justification
33
+ # @return [Shade] Shade property
34
+ attr_accessor :shade
33
35
 
34
36
  def initialize(numbering = NumberingProperties.new, parent: nil)
35
37
  @numbering = numbering
@@ -74,9 +76,7 @@ module OoxmlParser
74
76
  @numbering.start_at = node_child.attribute('startAt').value if node_child.attribute('startAt')
75
77
  when 'framePr'
76
78
  @frame_properties = FrameProperties.new(parent: self).parse(node_child)
77
- when 'tabs'
78
- @tabs = Tabs.new(parent: self).parse(node_child)
79
- when 'tabLst'
79
+ when 'tabs', 'tabLst'
80
80
  @tabs = Tabs.new(parent: self).parse(node_child)
81
81
  when 'ind'
82
82
  @indent = Indents.new(parent: self).parse(node_child)
@@ -88,6 +88,8 @@ module OoxmlParser
88
88
  @keep_next = true
89
89
  when 'sectPr'
90
90
  @section_properties = PageProperties.new(parent: self).parse(node_child, @parent, DocxParagraphRun.new)
91
+ when 'shd'
92
+ @shade = Shade.new(parent: self).parse(node_child)
91
93
  when 'spacing'
92
94
  @spacing = ParagraphSpacing.new(parent: self).parse(node_child)
93
95
  when 'jc'
@@ -43,5 +43,18 @@ module OoxmlParser
43
43
  end
44
44
  self
45
45
  end
46
+
47
+ # Helper method to get background color
48
+ # @return [OoxmlParser::Color]
49
+ def to_background_color
50
+ return nil unless fill
51
+
52
+ background_color = fill
53
+ background_color.set_style(value) if value
54
+ background_color
55
+ end
56
+
57
+ extend Gem::Deprecate
58
+ deprecate :to_background_color, 'use shade direct methods', 2077, 1
46
59
  end
47
60
  end
@@ -33,14 +33,10 @@ module OoxmlParser
33
33
  other.line_rule = :multiple if other.line_rule == :auto
34
34
  self.line_rule = line_rule.to_sym if line_rule.instance_of?(String)
35
35
 
36
- if @before == other.before &&
37
- @after == other.after &&
38
- @line == other.line &&
39
- @line_rule.to_s == other.line_rule.to_s
40
- true
41
- else
42
- false
43
- end
36
+ @before == other.before &&
37
+ @after == other.after &&
38
+ @line == other.line &&
39
+ @line_rule.to_s == other.line_rule.to_s
44
40
  end
45
41
 
46
42
  # @return [String] result of convert of object to string
@@ -8,11 +8,7 @@ module OoxmlParser
8
8
  left = OoxmlSize.new(0),
9
9
  right = OoxmlSize.new(0),
10
10
  parent: nil)
11
- @top = top
12
- @bottom = bottom
13
- @left = left
14
- @right = right
15
- super(parent: parent)
11
+ super(true, top, bottom, left, right, parent: parent)
16
12
  end
17
13
 
18
14
  # Parse ParagraphMargins object
@@ -180,7 +180,7 @@ module OoxmlParser
180
180
  case element.name
181
181
  when 'p'
182
182
  child = element.child
183
- unless child.nil? && doc_structure.elements.last.class == Table
183
+ unless child.nil? && doc_structure.elements.last.instance_of?(Table)
184
184
  paragraph_style = DocumentStructure.default_paragraph_style.dup.parse(element, number, DocumentStructure.default_run_style, parent: doc_structure)
185
185
  number += 1
186
186
  doc_structure.elements << paragraph_style.dup
@@ -18,7 +18,7 @@ module OoxmlParser
18
18
  # Class for data of DocxParagraph
19
19
  class DocxParagraph < OOXMLDocumentObject
20
20
  include DocxParagraphHelper
21
- attr_accessor :number, :bookmark_start, :bookmark_end, :align, :spacing, :background_color, :ind, :numbering,
21
+ attr_accessor :number, :bookmark_start, :bookmark_end, :align, :spacing, :ind, :numbering,
22
22
  :character_style_array, :page_break, :borders, :keep_lines,
23
23
  :contextual_spacing, :sector_properties, :page_numbering, :section_break, :style, :keep_next,
24
24
  :orphan_control
@@ -41,7 +41,7 @@ module OoxmlParser
41
41
  @number = 0
42
42
  @bookmark_start = []
43
43
  @bookmark_end = []
44
- @align = 'left'
44
+ @align = :left
45
45
  @spacing = Spacing.new
46
46
  @ind = Indents.new
47
47
  @character_style_array = []
@@ -129,8 +129,8 @@ module OoxmlParser
129
129
  when 'bookmarkEnd'
130
130
  character_styles_array << BookmarkEnd.new(parent: self).parse(node_child)
131
131
  when 'pPr'
132
- parse_paragraph_style(node_child, custom_character_style)
133
132
  @paragraph_properties = ParagraphProperties.new(parent: self).parse(node_child)
133
+ parse_paragraph_style(node_child, custom_character_style)
134
134
  when 'commentRangeStart'
135
135
  character_styles_array << CommentRangeStart.new(parent: self).parse(node_child)
136
136
  when 'commentRangeEnd'
@@ -177,7 +177,7 @@ module OoxmlParser
177
177
  end
178
178
  end
179
179
  @number = par_number
180
- character_styles_array.last.text = character_styles_array.last.text.rstrip if character_styles_array.last.class == DocxParagraphRun
180
+ character_styles_array.last.text = character_styles_array.last.text.rstrip if character_styles_array.last.instance_of?(DocxParagraphRun)
181
181
  @character_style_array = character_styles_array
182
182
  @parent = parent
183
183
  self
@@ -206,10 +206,6 @@ module OoxmlParser
206
206
  @keep_next = true
207
207
  when 'contextualSpacing'
208
208
  @contextual_spacing = true
209
- when 'shd'
210
- background_color_string = node_child.attribute('fill').value
211
- @background_color = Color.new(parent: self).parse_hex_string(background_color_string)
212
- @background_color.set_style(node_child.attribute('val').value.to_sym) unless node_child.attribute('val').nil?
213
209
  when 'pStyle'
214
210
  parse_paragraph_style_xml(node_child.attribute('val').value, default_char_style)
215
211
  when 'ind'
@@ -9,5 +9,12 @@ module OoxmlParser
9
9
 
10
10
  root_object.comments_extended.by_id(@paragraph_id)
11
11
  end
12
+
13
+ # Temp method to return background color
14
+ # Need to be compatible with older versions
15
+ # @return [OoxmlParser::Color]
16
+ def background_color
17
+ paragraph_properties.shade.to_background_color
18
+ end
12
19
  end
13
20
  end
@@ -11,7 +11,7 @@ module OoxmlParser
11
11
  # Class for working with DocxParagraphRun
12
12
  class DocxParagraphRun < OOXMLDocumentObject
13
13
  include DocxParagraphRunHelpers
14
- attr_accessor :number, :font, :vertical_align, :size, :font_color, :background_color, :font_style, :text, :drawings,
14
+ attr_accessor :number, :font, :vertical_align, :size, :font_color, :font_style, :text, :drawings,
15
15
  :link, :highlight, :effect, :caps, :w,
16
16
  :position, :em, :spacing, :break, :touch, :shape, :footnote, :endnote, :fld_char, :style,
17
17
  :comments, :alternate_content, :page_number, :text_outline, :text_fill
@@ -22,6 +22,8 @@ module OoxmlParser
22
22
  attr_accessor :run_properties
23
23
  # @return [RunObject] object of run
24
24
  attr_accessor :object
25
+ # @return [Shade] shade properties
26
+ attr_accessor :shade
25
27
 
26
28
  def initialize(parent: nil)
27
29
  @number = 0
@@ -53,10 +53,7 @@ module OoxmlParser
53
53
  when 'color'
54
54
  parse_color_tag(node_child)
55
55
  when 'shd'
56
- self.background_color = node_child.attribute('fill').value
57
- unless node_child.attribute('fill').value == 'auto' || node_child.attribute('fill').value == '' || node_child.attribute('fill').value == 'null'
58
- self.background_color = Color.new(parent: self).parse_hex_string(node_child.attribute('fill').value)
59
- end
56
+ @shade = Shade.new(parent: self).parse(node_child)
60
57
  when 'u', 'uCs'
61
58
  parse_underline(node_child)
62
59
  when 'strike'
@@ -68,6 +65,13 @@ module OoxmlParser
68
65
  self
69
66
  end
70
67
 
68
+ # Temp method to return background color
69
+ # Need to be compatible with older versions
70
+ # @return [OoxmlParser::Color]
71
+ def background_color
72
+ shade.to_background_color
73
+ end
74
+
71
75
  private
72
76
 
73
77
  # Parse `color` tag
@@ -70,7 +70,7 @@ module OoxmlParser
70
70
  def value_to_hex(value)
71
71
  value.to_s
72
72
  .sub('#', '')
73
- .split(' ')
73
+ .split
74
74
  .first
75
75
  end
76
76
  end
@@ -20,9 +20,7 @@ module OoxmlParser
20
20
  case object
21
21
  when :image
22
22
  elements.find { |e| e.is_a? DocxPicture }.properties.transform
23
- when :chart
24
- elements.find { |e| e.is_a? GraphicFrame }.transform
25
- when :table
23
+ when :chart, :table
26
24
  elements.find { |e| e.is_a? GraphicFrame }.transform
27
25
  when :shape
28
26
  elements.find { |e| !e.shape_properties.preset.nil? }.shape_properties.transform
@@ -4,6 +4,6 @@ module OoxmlParser
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
6
  # [String] Version of Gem
7
- STRING = '0.9.0'
7
+ STRING = '0.12.1'
8
8
  end
9
9
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative 'workbook/chartsheet'
4
4
  require_relative 'workbook/pivot_cache'
5
+ require_relative 'workbook/pivot_table_definition'
5
6
  require_relative 'workbook/shared_string_table'
6
7
  require_relative 'workbook/style_sheet'
7
8
  require_relative 'workbook/worksheet'
@@ -21,10 +22,13 @@ module OoxmlParser
21
22
  attr_accessor :shared_strings_table
22
23
  # @return [Array<PivotCache>] list of pivot caches
23
24
  attr_accessor :pivot_caches
25
+ # @return [Array<PivotTableDefintion>] list of pivot table defitions
26
+ attr_accessor :pivot_table_definitions
24
27
 
25
28
  def initialize(params = {})
26
29
  @worksheets = []
27
30
  @pivot_caches = []
31
+ @pivot_table_definitions = []
28
32
  super
29
33
  end
30
34
 
@@ -43,9 +47,10 @@ module OoxmlParser
43
47
  return row.cells[column.to_i - 1]
44
48
  elsif sheet.is_a?(String)
45
49
  @worksheets.each do |worksheet|
46
- if worksheet.name == sheet
47
- return worksheet.rows[row.to_i - 1].cells[column.to_i - 1] unless worksheet.rows[row.to_i - 1].nil?
48
- end
50
+ next unless worksheet.name == sheet
51
+ next unless worksheet.rows[row.to_i - 1]
52
+
53
+ return worksheet.rows[row.to_i - 1].cells[column.to_i - 1]
49
54
  end
50
55
  return nil
51
56
  end
@@ -119,6 +124,7 @@ module OoxmlParser
119
124
  end
120
125
  end
121
126
  parse_pivot_cache
127
+ parse_pivot_table
122
128
  OOXMLDocumentObject.xmls_stack.pop
123
129
  self
124
130
  end
@@ -135,5 +141,13 @@ module OoxmlParser
135
141
  @pivot_caches << PivotCache.new(parent: self).parse(pivot_cache)
136
142
  end
137
143
  end
144
+
145
+ # Perform parsing of pivot table
146
+ def parse_pivot_table
147
+ files = @content_types.by_type('application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml')
148
+ files.each do |file|
149
+ @pivot_table_definitions << PivotTableDefinition.new(parent: self).parse(file.part_name)
150
+ end
151
+ end
138
152
  end
139
153
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'pivot_cache_definition/cache_source'
4
+ require_relative 'pivot_cache_definition/cache_fields'
5
+
4
6
  module OoxmlParser
5
7
  # Class for parsing <pivotCacheDefinition> file
6
8
  class PivotCacheDefinition < OOXMLDocumentObject
@@ -8,6 +10,8 @@ module OoxmlParser
8
10
  attr_reader :id
9
11
  # @return [CacheSource] source of pivot cache
10
12
  attr_reader :cache_source
13
+ # @return [CacheFields] fields of pivot cache
14
+ attr_reader :cache_fields
11
15
 
12
16
  # Parse PivotCacheDefinition file
13
17
  # @param file [String] path to file
@@ -29,6 +33,8 @@ module OoxmlParser
29
33
  case node_child.name
30
34
  when 'cacheSource'
31
35
  @cache_source = CacheSource.new(parent: self).parse(node_child)
36
+ when 'cacheFields'
37
+ @cache_fields = CacheFields.new(parent: self).parse(node_child)
32
38
  end
33
39
  end
34
40
  self
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'cache_fields/cache_field'
4
+
5
+ module OoxmlParser
6
+ # Class for parsing <cacheFields> tag
7
+ class CacheFields < OOXMLDocumentObject
8
+ # @return [Integer] count
9
+ attr_reader :count
10
+ # @return [Array<CacheField>] list of CacheField object
11
+ attr_reader :cache_field
12
+
13
+ def initialize(parent: nil)
14
+ @cache_field = []
15
+ super
16
+ end
17
+
18
+ # @return [CacheField] accessor
19
+ def [](key)
20
+ @cache_field[key]
21
+ end
22
+
23
+ # Parse `<cacheFields>` tag
24
+ # @param [Nokogiri::XML:Element] node with cacheFields data
25
+ # @return [cacheFields]
26
+ def parse(node)
27
+ node.attributes.each do |key, value|
28
+ case key
29
+ when 'count'
30
+ @count = value.value.to_i
31
+ end
32
+ end
33
+
34
+ node.xpath('*').each do |node_child|
35
+ case node_child.name
36
+ when 'cacheField'
37
+ @cache_field << CacheField.new(parent: self).parse(node_child)
38
+ end
39
+ end
40
+ self
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'cache_field/shared_items'
4
+
5
+ module OoxmlParser
6
+ # Class for parsing <cacheField> tag
7
+ class CacheField < OOXMLDocumentObject
8
+ # @return [String] name of field
9
+ attr_reader :name
10
+ # @return [Integer] number format id
11
+ attr_reader :number_format_id
12
+ # @return [SharedItems] shared items
13
+ attr_reader :shared_items
14
+
15
+ # Parse `<cacheField>` tag
16
+ # # @param [Nokogiri::XML:Element] node with WorksheetSource data
17
+ # @return [CacheField]
18
+ def parse(node)
19
+ node.attributes.each do |key, value|
20
+ case key
21
+ when 'name'
22
+ @name = value.value.to_s
23
+ when 'numFmtId'
24
+ @number_format_id = value.value.to_i
25
+ end
26
+ end
27
+
28
+ node.xpath('*').each do |node_child|
29
+ case node_child.name
30
+ when 'sharedItems'
31
+ @shared_items = SharedItems.new(parent: self).parse(node_child)
32
+ end
33
+ end
34
+ self
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for parsing <sharedItems> tag
5
+ class SharedItems < OOXMLDocumentObject
6
+ # @return [True, False] is contains_semi_mixed_types
7
+ attr_reader :contains_semi_mixed_types
8
+ # @return [True, False] is contains_string
9
+ attr_reader :contains_string
10
+ # @return [True, False] is contains_number
11
+ attr_reader :contains_number
12
+ # @return [True, False] is contains_integer
13
+ attr_reader :contains_integer
14
+ # @return [Integer] min value
15
+ attr_reader :min_value
16
+ # @return [Integer] max value
17
+ attr_reader :max_value
18
+
19
+ # Parse `<sharedItems>` tag
20
+ # # @param [Nokogiri::XML:Element] node with WorksheetSource data
21
+ # @return [sharedItems]
22
+ def parse(node)
23
+ node.attributes.each do |key, value|
24
+ case key
25
+ when 'containsSemiMixedTypes'
26
+ @contains_semi_mixed_types = attribute_enabled?(value)
27
+ when 'containsString'
28
+ @contains_string = attribute_enabled?(value)
29
+ when 'containsNumber'
30
+ @contains_number = attribute_enabled?(value)
31
+ when 'containsInteger'
32
+ @contains_integer = attribute_enabled?(value)
33
+ when 'minValue'
34
+ @min_value = value.value.to_i
35
+ when 'maxValue'
36
+ @max_value = value.value.to_i
37
+ end
38
+ end
39
+ self
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'pivot_table_definition/column_row_items'
4
+ require_relative 'pivot_table_definition/location'
5
+ require_relative 'pivot_table_definition/pivot_fields'
6
+ require_relative 'pivot_table_definition/pivot_table_style_info'
7
+
8
+ module OoxmlParser
9
+ # Class for parsing <PivotTableDefinition> tag
10
+ class PivotTableDefinition < OOXMLDocumentObject
11
+ # @return [String] name of table
12
+ attr_reader :name
13
+ # @return [Integer] id of cache
14
+ attr_reader :cache_id
15
+ # @return [True, False] should number formats be applied
16
+ attr_reader :apply_number_formats
17
+ # @return [True, False] should border formats be applied
18
+ attr_reader :apply_border_formats
19
+ # @return [True, False] should font formats be applied
20
+ attr_reader :apply_font_formats
21
+ # @return [True, False] should pattern formats be applied
22
+ attr_reader :apply_pattern_formats
23
+ # @return [True, False] should alignment formats be applied
24
+ attr_reader :apply_alignment_formats
25
+ # @return [True, False] should width height formats be applied
26
+ attr_reader :apply_width_height_formats
27
+ # @return [True, False] should auto formatting be used
28
+ attr_reader :use_auto_formatting
29
+ # @return [True, False] should item print titles
30
+ attr_reader :item_print_titles
31
+ # @return [String] data caption
32
+ attr_reader :data_caption
33
+ # @return [Integer] creation version
34
+ attr_reader :created_version
35
+ # @return [Integer] indent
36
+ attr_reader :indent
37
+ # @return [True, False] outline
38
+ attr_reader :outline
39
+ # @return [True, False] outline data
40
+ attr_reader :outline_data
41
+ # @return [True, False] is there multiple fields filters
42
+ attr_reader :multiple_field_filters
43
+ # @return [Location] location data
44
+ attr_reader :location
45
+ # @return [PivotFields] pivot fields
46
+ attr_reader :pivot_fields
47
+ # @return [ColumnRowItems] column items
48
+ attr_reader :column_items
49
+ # @return [ColumnRowItems] row items
50
+ attr_reader :row_items
51
+ # @return [PivotTableStyleInfo] style info
52
+ attr_reader :style_info
53
+
54
+ # Parse PivotTableDefinition object
55
+ # @param [String] file path
56
+ # @return [PivotTableDefinition] result of parsing
57
+ def parse(file)
58
+ doc = Nokogiri::XML.parse(File.open("#{OOXMLDocumentObject.path_to_folder}/#{file}"))
59
+ node = doc.xpath('//xmlns:pivotTableDefinition').first
60
+ node.attributes.each do |key, value|
61
+ case key
62
+ when 'name'
63
+ @name = value.value.to_s
64
+ when 'cacheId'
65
+ @cache_id = value.value.to_i
66
+ when 'applyNumberFormats'
67
+ @apply_number_formats = attribute_enabled?(value)
68
+ when 'applyBorderFormats'
69
+ @apply_border_formats = attribute_enabled?(value)
70
+ when 'applyFontFormats'
71
+ @apply_font_formats = attribute_enabled?(value)
72
+ when 'applyPatternFormats'
73
+ @apply_pattern_formats = attribute_enabled?(value)
74
+ when 'applyAlignmentFormats'
75
+ @apply_alignment_formats = attribute_enabled?(value)
76
+ when 'applyWidthHeightFormats'
77
+ @apply_width_height_formats = attribute_enabled?(value)
78
+ when 'useAutoFormatting'
79
+ @use_auto_formatting = attribute_enabled?(value)
80
+ when 'itemPrintTitles'
81
+ @item_print_titles = attribute_enabled?(value)
82
+ when 'dataCaption'
83
+ @data_caption = value.value.to_s
84
+ when 'createdVersion'
85
+ @created_version = value.value.to_i
86
+ when 'indent'
87
+ @indent = value.value.to_i
88
+ when 'outline'
89
+ @outline = attribute_enabled?(value)
90
+ when 'outlineData'
91
+ @outline_data = attribute_enabled?(value)
92
+ when 'multipleFieldFilters'
93
+ @multiple_field_filters = attribute_enabled?(value)
94
+ end
95
+ end
96
+
97
+ node.xpath('*').each do |node_child|
98
+ case node_child.name
99
+ when 'location'
100
+ @location = Location.new(parent: self).parse(node_child)
101
+ when 'pivotFields'
102
+ @pivot_fields = PivotFields.new(parent: self).parse(node_child)
103
+ when 'rowItems'
104
+ @row_items = ColumnRowItems.new(parent: self).parse(node_child)
105
+ when 'colItems'
106
+ @column_items = ColumnRowItems.new(parent: self).parse(node_child)
107
+ when 'pivotTableStyleInfo'
108
+ @style_info = PivotTableStyleInfo.new(parent: self).parse(node_child)
109
+ end
110
+ end
111
+ self
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'column_row_items/column_row_item'
4
+
5
+ module OoxmlParser
6
+ # Class for parsing <rowItems> and <colItems> tag
7
+ class ColumnRowItems < OOXMLDocumentObject
8
+ # @return [Integer] count of items
9
+ attr_reader :count
10
+ # @return [Array<RowColumnItem>] list of RowColumnItem object
11
+ attr_reader :items
12
+
13
+ def initialize(parent: nil)
14
+ @items = []
15
+ super
16
+ end
17
+
18
+ # @return [RowColumnItem] accessor
19
+ def [](key)
20
+ @items[key]
21
+ end
22
+
23
+ # Parse `<cacheField>` tag
24
+ # # @param [Nokogiri::XML:Element] node with WorksheetSource data
25
+ # @return [CacheField]
26
+ def parse(node)
27
+ node.attributes.each do |key, value|
28
+ case key
29
+ when 'count'
30
+ @count = value.value.to_i
31
+ end
32
+ end
33
+
34
+ node.xpath('*').each do |node_child|
35
+ case node_child.name
36
+ when 'i'
37
+ @items << ColumnRowItem.new(parent: self).parse(node_child)
38
+ end
39
+ end
40
+ self
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for parsing <i> tag
5
+ class ColumnRowItem < OOXMLDocumentObject
6
+ # @return [Symbol] type of item
7
+ attr_reader :type
8
+
9
+ # Parse `<location>` tag
10
+ # @param [Nokogiri::XML:Element] node with location data
11
+ # @return [Location]
12
+ def parse(node)
13
+ node.attributes.each do |key, value|
14
+ case key
15
+ when 't'
16
+ @type = value.value.to_sym
17
+ end
18
+ end
19
+ self
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for parsing <location> tag
5
+ class Location < OOXMLDocumentObject
6
+ # @return [String] ref of location
7
+ attr_reader :ref
8
+ # @return [True, False] first header row
9
+ attr_reader :first_header_row
10
+ # @return [True, False] first data row
11
+ attr_reader :first_data_row
12
+ # @return [True, False] first data column
13
+ attr_reader :first_data_column
14
+
15
+ # Parse `<location>` tag
16
+ # @param [Nokogiri::XML:Element] node with location data
17
+ # @return [Location]
18
+ def parse(node)
19
+ node.attributes.each do |key, value|
20
+ case key
21
+ when 'ref'
22
+ @ref = value.value.to_s
23
+ when 'firstHeaderRow'
24
+ @first_header_row = attribute_enabled?(value)
25
+ when 'firstDataRow'
26
+ @first_data_row = attribute_enabled?(value)
27
+ when 'firstDataCol'
28
+ @first_data_column = attribute_enabled?(value)
29
+ end
30
+ end
31
+ self
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'pivot_fields/pivot_field'
4
+
5
+ module OoxmlParser
6
+ # Class for parsing <pivotFields> tag
7
+ class PivotFields < OOXMLDocumentObject
8
+ # @return [Integer] count
9
+ attr_reader :count
10
+ # @return [Array<PivotField>] list of PivotField object
11
+ attr_reader :pivot_field
12
+
13
+ def initialize(parent: nil)
14
+ @pivot_field = []
15
+ super
16
+ end
17
+
18
+ # @return [PivotField] accessor
19
+ def [](key)
20
+ @pivot_field[key]
21
+ end
22
+
23
+ # Parse `<pivotFields>` tag
24
+ # @param [Nokogiri::XML:Element] node with pivotFields data
25
+ # @return [PivotFields]
26
+ def parse(node)
27
+ node.attributes.each do |key, value|
28
+ case key
29
+ when 'count'
30
+ @count = value.value.to_i
31
+ end
32
+ end
33
+
34
+ node.xpath('*').each do |node_child|
35
+ case node_child.name
36
+ when 'pivotField'
37
+ @pivot_field << PivotField.new(parent: self).parse(node_child)
38
+ end
39
+ end
40
+ self
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'pivot_field/items'
4
+
5
+ module OoxmlParser
6
+ # Class for parsing <pivotField> tag
7
+ class PivotField < OOXMLDocumentObject
8
+ # @return [String] axis value
9
+ attr_reader :axis
10
+ # @return [True, False] should show all
11
+ attr_reader :show_all
12
+ # @return [Items] contain item
13
+ attr_reader :items
14
+
15
+ # Parse `<pivotField>` tag
16
+ # # @param [Nokogiri::XML:Element] node with PivotField data
17
+ # @return [PivotField]
18
+ def parse(node)
19
+ node.attributes.each do |key, value|
20
+ case key
21
+ when 'axis'
22
+ @axis = value.value.to_s
23
+ when 'showAll'
24
+ @show_all = attribute_enabled?(value)
25
+ end
26
+ end
27
+
28
+ node.xpath('*').each do |node_child|
29
+ case node_child.name
30
+ when 'items'
31
+ @items = Items.new(parent: self).parse(node_child)
32
+ end
33
+ end
34
+ self
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'items/item'
4
+
5
+ module OoxmlParser
6
+ # Class for parsing <items> tag
7
+ class Items < OOXMLDocumentObject
8
+ # @return [Integer] count
9
+ attr_reader :count
10
+ # @return [Array<Item>] list of items
11
+ attr_reader :items
12
+
13
+ def initialize(parent: nil)
14
+ @items = []
15
+ super
16
+ end
17
+
18
+ # @return [Item] accessor
19
+ def [](key)
20
+ @items[key]
21
+ end
22
+
23
+ # Parse `<items>` tag
24
+ # @param [Nokogiri::XML:Element] node with items data
25
+ # @return [Items]
26
+ def parse(node)
27
+ node.attributes.each do |key, value|
28
+ case key
29
+ when 'count'
30
+ @count = value.value.to_i
31
+ end
32
+ end
33
+
34
+ node.xpath('*').each do |node_child|
35
+ case node_child.name
36
+ when 'item'
37
+ @items << Item.new(parent: self).parse(node_child)
38
+ end
39
+ end
40
+ self
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for parsing <item> tag
5
+ class Item < OOXMLDocumentObject
6
+ # @return [Integer] index of item
7
+ attr_reader :index
8
+ # @return [Symbol] type of item
9
+ attr_reader :type
10
+
11
+ # Parse `<item>` tag
12
+ # # @param [Nokogiri::XML:Element] node with Item data
13
+ # @return [item]
14
+ def parse(node)
15
+ node.attributes.each do |key, value|
16
+ case key
17
+ when 'x'
18
+ @index = value.value.to_i
19
+ when 't'
20
+ @type = value.value.to_sym
21
+ end
22
+ end
23
+ self
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for parsing <pivotTableStyleInfo> tag
5
+ class PivotTableStyleInfo < OOXMLDocumentObject
6
+ # @return [String] name of style
7
+ attr_reader :name
8
+ # @return [True, False] show row header
9
+ attr_reader :show_row_header
10
+ # @return [True, False] show column header
11
+ attr_reader :show_column_header
12
+ # @return [True, False] show row stripes
13
+ attr_reader :show_row_stripes
14
+ # @return [True, False] show column stripes
15
+ attr_reader :show_column_stripes
16
+ # @return [True, False] show last column
17
+ attr_reader :show_last_column
18
+
19
+ # Parse `<pivotTableStyleInfo>` tag
20
+ # @param [Nokogiri::XML:Element] node with PivotTableStyleInfo data
21
+ # @return [PivotTableStyleInfo]
22
+ def parse(node)
23
+ node.attributes.each do |key, value|
24
+ case key
25
+ when 'name'
26
+ @name = value.value.to_s
27
+ when 'showRowHeaders'
28
+ @show_row_header = attribute_enabled?(value)
29
+ when 'showColHeaders'
30
+ @show_column_header = attribute_enabled?(value)
31
+ when 'showRowStripes'
32
+ @show_row_stripes = attribute_enabled?(value)
33
+ when 'showColStripes'
34
+ @show_column_stripes = attribute_enabled?(value)
35
+ when 'showLastColumn'
36
+ @show_last_column = attribute_enabled?(value)
37
+ end
38
+ end
39
+ self
40
+ end
41
+ end
42
+ end
@@ -22,7 +22,7 @@ module OoxmlParser
22
22
  node.attributes.each do |key, value|
23
23
  case key
24
24
  when 'color2'
25
- @color2 = Color.new(parent: self).parse_hex_string(value.value.split(' ').first.delete('#'))
25
+ @color2 = Color.new(parent: self).parse_hex_string(value.value.split.first.delete('#'))
26
26
  when 'id'
27
27
  @id = value.value.to_s
28
28
  @file = FileReference.new(parent: self).parse(node)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ooxml_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ONLYOFFICE
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-08-20 00:00:00.000000000 Z
13
+ date: 2021-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -18,118 +18,182 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '1.6'
21
+ version: '1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '1.6'
28
+ version: '1'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: ruby-filemagic
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '0.1'
35
+ version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.1'
42
+ version: '0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rubyzip
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '1.1'
50
- - - "<"
47
+ - - "~>"
51
48
  - !ruby/object:Gem::Version
52
- version: '3.0'
49
+ version: '2'
53
50
  type: :runtime
54
51
  prerelease: false
55
52
  version_requirements: !ruby/object:Gem::Requirement
56
53
  requirements:
57
- - - ">="
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '2'
57
+ - !ruby/object:Gem::Dependency
58
+ name: overcommit
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: parallel_tests
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
58
76
  - !ruby/object:Gem::Version
59
- version: '1.1'
60
- - - "<"
77
+ version: '3'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
61
83
  - !ruby/object:Gem::Version
62
- version: '3.0'
84
+ version: '3'
63
85
  - !ruby/object:Gem::Dependency
64
86
  name: rake
65
87
  requirement: !ruby/object:Gem::Requirement
66
88
  requirements:
67
89
  - - "~>"
68
90
  - !ruby/object:Gem::Version
69
- version: '13.0'
91
+ version: '13'
70
92
  type: :development
71
93
  prerelease: false
72
94
  version_requirements: !ruby/object:Gem::Requirement
73
95
  requirements:
74
96
  - - "~>"
75
97
  - !ruby/object:Gem::Version
76
- version: '13.0'
98
+ version: '13'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rspec
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '3'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '3'
77
113
  - !ruby/object:Gem::Dependency
78
114
  name: rubocop
79
115
  requirement: !ruby/object:Gem::Requirement
80
116
  requirements:
81
- - - '='
117
+ - - "~>"
82
118
  - !ruby/object:Gem::Version
83
- version: 0.89.1
119
+ version: '1'
84
120
  type: :development
85
121
  prerelease: false
86
122
  version_requirements: !ruby/object:Gem::Requirement
87
123
  requirements:
88
- - - '='
124
+ - - "~>"
89
125
  - !ruby/object:Gem::Version
90
- version: 0.89.1
126
+ version: '1'
91
127
  - !ruby/object:Gem::Dependency
92
128
  name: rubocop-performance
93
129
  requirement: !ruby/object:Gem::Requirement
94
130
  requirements:
95
- - - '='
131
+ - - "~>"
96
132
  - !ruby/object:Gem::Version
97
- version: 1.7.1
133
+ version: '1'
98
134
  type: :development
99
135
  prerelease: false
100
136
  version_requirements: !ruby/object:Gem::Requirement
101
137
  requirements:
102
- - - '='
138
+ - - "~>"
103
139
  - !ruby/object:Gem::Version
104
- version: 1.7.1
140
+ version: '1'
105
141
  - !ruby/object:Gem::Dependency
106
142
  name: rubocop-rake
107
143
  requirement: !ruby/object:Gem::Requirement
108
144
  requirements:
109
- - - '='
145
+ - - "~>"
110
146
  - !ruby/object:Gem::Version
111
- version: 0.5.1
147
+ version: '0'
112
148
  type: :development
113
149
  prerelease: false
114
150
  version_requirements: !ruby/object:Gem::Requirement
115
151
  requirements:
116
- - - '='
152
+ - - "~>"
117
153
  - !ruby/object:Gem::Version
118
- version: 0.5.1
154
+ version: '0'
119
155
  - !ruby/object:Gem::Dependency
120
156
  name: rubocop-rspec
121
157
  requirement: !ruby/object:Gem::Requirement
122
158
  requirements:
123
- - - '='
159
+ - - "~>"
124
160
  - !ruby/object:Gem::Version
125
- version: 1.43.1
161
+ version: '2'
126
162
  type: :development
127
163
  prerelease: false
128
164
  version_requirements: !ruby/object:Gem::Requirement
129
165
  requirements:
130
- - - '='
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: '2'
169
+ - !ruby/object:Gem::Dependency
170
+ name: simplecov
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ - !ruby/object:Gem::Dependency
184
+ name: yard
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: 0.9.20
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
131
195
  - !ruby/object:Gem::Version
132
- version: 1.43.1
196
+ version: 0.9.20
133
197
  description: Parse OOXML files (docx, xlsx, pptx)
134
198
  email:
135
199
  - shockwavenn@gmail.com
@@ -423,8 +487,20 @@ files:
423
487
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb
424
488
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache.rb
425
489
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb
490
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields.rb
491
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields/cache_field.rb
492
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields/cache_field/shared_items.rb
426
493
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source.rb
427
494
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source/worksheet_source.rb
495
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition.rb
496
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items.rb
497
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items/column_row_item.rb
498
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/location.rb
499
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields.rb
500
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field.rb
501
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items.rb
502
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items/item.rb
503
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_table_style_info.rb
428
504
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/shared_string_table.rb
429
505
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/shared_string_table/string_index.rb
430
506
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb
@@ -489,14 +565,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
489
565
  requirements:
490
566
  - - ">="
491
567
  - !ruby/object:Gem::Version
492
- version: '2.4'
568
+ version: '2.5'
493
569
  required_rubygems_version: !ruby/object:Gem::Requirement
494
570
  requirements:
495
571
  - - ">="
496
572
  - !ruby/object:Gem::Version
497
573
  version: '0'
498
574
  requirements: []
499
- rubygems_version: 3.1.4
575
+ rubygems_version: 3.2.9
500
576
  signing_key:
501
577
  specification_version: 4
502
578
  summary: OoxmlParser Gem