ooxml_parser 0.10.0 → 0.13.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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ooxml_parser/common_parser/common_data/color.rb +4 -8
  3. data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +1 -1
  4. data/lib/ooxml_parser/common_parser/common_data/content_types.rb +7 -0
  5. data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +2 -2
  6. data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +1 -1
  7. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb +9 -0
  8. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/shade.rb +13 -0
  9. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_stlye_ref.rb +27 -0
  10. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +4 -8
  11. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +2 -12
  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/version.rb +1 -1
  17. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +13 -0
  18. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb +6 -0
  19. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields.rb +43 -0
  20. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields/cache_field.rb +37 -0
  21. 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
  22. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition.rb +114 -0
  23. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items.rb +43 -0
  24. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items/column_row_item.rb +22 -0
  25. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/location.rb +34 -0
  26. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields.rb +43 -0
  27. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field.rb +37 -0
  28. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items.rb +43 -0
  29. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items/item.rb +26 -0
  30. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_table_style_info.rb +42 -0
  31. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +1 -1
  32. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb +5 -0
  33. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations.rb +47 -0
  34. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation.rb +88 -0
  35. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation/data_validation_formula.rb +22 -0
  36. metadata +19 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 728a4727e30c90aebf48cd417a9865dbf3726719e08bd20403b558377311105d
4
- data.tar.gz: b73f86cce58d63354209f84fbe9d496301acb3d3b5ae7973639912d87b85b599
3
+ metadata.gz: e8d43b880b2291d11e75cf1107c546077d36d4123044cf71d0b85a5f7a62487b
4
+ data.tar.gz: 6690b7dad0c09b17ac772af66a6f614a8e68331c6ddb247597cf818887e4b16e
5
5
  SHA512:
6
- metadata.gz: d985dddf15a50d7ec8796805009057f7149a3958a24e735279a9fcdc622156c1837662a56947a841d68958ac5eedb9afae7947eba48cf8929941def9e34c1832
7
- data.tar.gz: '08ded5794f5a0745ee001b0a993d82c5790eb058d49436149ea13f65ebcd650da8e64cbbc9f8949a705a985d20b3e5d34f83552f264b441abd6a128923809013'
6
+ metadata.gz: c6c51d4331048c7250d9724da8c00354d235df4dbe8fad57cc81783133a4d0a030ce02056000afb4a5f5d13a91e4f8f28ce51d82f4d581b55da6902fe2927f1a
7
+ data.tar.gz: abc21e3b8151d29985cdb96a05e60eef69feb949fc6b12f24c225ba050d08ad021de39745250dbdef4920965dcca430473d0b3f089c4ca122ea790a612026ecc
@@ -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
- (none? && other.white?) ||
99
- (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
@@ -8,7 +8,7 @@ module OoxmlParser
8
8
  def parse_hex_string(hex_string)
9
9
  return self if %w[auto null].include?(hex_string)
10
10
 
11
- char_array = hex_string.split(//)
11
+ char_array = hex_string.chars
12
12
  case char_array.length
13
13
  when 3
14
14
  @red = char_array[0].hex
@@ -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
@@ -3,6 +3,7 @@
3
3
  require_relative 'paragrpah_properties/numbering_properties'
4
4
  require_relative 'paragrpah_properties/paragraph_borders'
5
5
  require_relative 'paragrpah_properties/paragraph_spacing'
6
+ require_relative 'paragrpah_properties/paragraph_stlye_ref'
6
7
  require_relative 'paragrpah_properties/spacing'
7
8
  require_relative 'paragrpah_properties/tabs'
8
9
  module OoxmlParser
@@ -17,6 +18,8 @@ module OoxmlParser
17
18
  attr_accessor :run_properties
18
19
  # @return [Borders] borders of paragraph
19
20
  attr_accessor :paragraph_borders
21
+ # @return [ParagraphStyleRef] Referenced Paragraph Style
22
+ attr_accessor :paragraph_style_ref
20
23
  # @return [True, False] Specifies that the paragraph
21
24
  # (or at least part of it) should be rendered on
22
25
  # the same page as the next paragraph when possible
@@ -30,6 +33,8 @@ module OoxmlParser
30
33
  attr_accessor :contextual_spacing
31
34
  # @return [Symbol] The alignment or justification to be applied to a paragraph
32
35
  attr_accessor :justification
36
+ # @return [Shade] Shade property
37
+ attr_accessor :shade
33
38
 
34
39
  def initialize(numbering = NumberingProperties.new, parent: nil)
35
40
  @numbering = numbering
@@ -82,10 +87,14 @@ module OoxmlParser
82
87
  @run_properties = RunProperties.new(parent: self).parse(node_child)
83
88
  when 'pBdr'
84
89
  @paragraph_borders = ParagraphBorders.new(parent: self).parse(node_child)
90
+ when 'pStyle'
91
+ @paragraph_style_ref = ParagraphStyleRef.new(parent: self).parse(node_child)
85
92
  when 'keepNext'
86
93
  @keep_next = true
87
94
  when 'sectPr'
88
95
  @section_properties = PageProperties.new(parent: self).parse(node_child, @parent, DocxParagraphRun.new)
96
+ when 'shd'
97
+ @shade = Shade.new(parent: self).parse(node_child)
89
98
  when 'spacing'
90
99
  @spacing = ParagraphSpacing.new(parent: self).parse(node_child)
91
100
  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
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for parsing `pStyle` tags
5
+ class ParagraphStyleRef < OOXMLDocumentObject
6
+ # @return [Integer] value of ParagraphStyleRef
7
+ attr_reader :value
8
+
9
+ # Parse ParagraphStyleRef object
10
+ # @param node [Nokogiri::XML:Element] node to parse
11
+ # @return [ParagraphStyleRef] result of parsing
12
+ def parse(node)
13
+ node.attributes.each do |key, value|
14
+ case key
15
+ when 'val'
16
+ @value = value.value.to_s
17
+ end
18
+ end
19
+ self
20
+ end
21
+
22
+ # @return [ParagraphStyle] which was referenced
23
+ def referenced_style
24
+ root_object.document_style_by_id(value)
25
+ end
26
+ end
27
+ 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
@@ -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
@@ -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'
@@ -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'
@@ -273,11 +269,5 @@ module OoxmlParser
273
269
  nil
274
270
  end
275
271
  deprecate :sdt, 'nonempty_runs[i]', 2020, 1
276
-
277
- # @return [OoxmlParser::FrameProperties] Return frame properties
278
- def frame_properties
279
- paragraph_properties.frame_properties
280
- end
281
- deprecate :frame_properties, 'paragraph_properties.frame_properties', 2020, 1
282
272
  end
283
273
  end
@@ -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
@@ -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.10.0'
7
+ STRING = '0.13.0'
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
 
@@ -120,6 +124,7 @@ module OoxmlParser
120
124
  end
121
125
  end
122
126
  parse_pivot_cache
127
+ parse_pivot_table
123
128
  OOXMLDocumentObject.xmls_stack.pop
124
129
  self
125
130
  end
@@ -136,5 +141,13 @@ module OoxmlParser
136
141
  @pivot_caches << PivotCache.new(parent: self).parse(pivot_cache)
137
142
  end
138
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
139
152
  end
140
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)
@@ -1,10 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'extension/data_validations'
3
4
  require_relative 'extension/sparkline_groups'
4
5
  require_relative 'extension/x14_table'
5
6
  module OoxmlParser
6
7
  # Class for `ext` data
7
8
  class Extension < OOXMLDocumentObject
9
+ # @return [DataValidations] list of data validations
10
+ attr_accessor :data_validations
8
11
  # @return [X14Table] table data in x14 namespace
9
12
  attr_accessor :table
10
13
  # @return [SparklineGroups] list of groups
@@ -16,6 +19,8 @@ module OoxmlParser
16
19
  def parse(node)
17
20
  node.xpath('*').each do |column_node|
18
21
  case column_node.name
22
+ when 'dataValidations'
23
+ @data_validations = DataValidations.new(parent: self).parse(column_node)
19
24
  when 'table'
20
25
  @table = X14Table.new(parent: self).parse(column_node)
21
26
  when 'sparklineGroups'
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'data_validations/data_validation'
4
+
5
+ module OoxmlParser
6
+ # Class for `dataValidations` data
7
+ class DataValidations < OOXMLDocumentObject
8
+ # @return [Integer] count of validations
9
+ attr_reader :count
10
+ # @return [Array<DataValidation>] list of data validations
11
+ attr_reader :data_validations
12
+ # @return [Boolean] is prompts disabled
13
+ attr_reader :disable_prompts
14
+
15
+ def initialize(parent: nil)
16
+ @data_validations = []
17
+ super
18
+ end
19
+
20
+ # @return [SparklineGroup] accessor
21
+ def [](key)
22
+ data_validations[key]
23
+ end
24
+
25
+ # Parse DataValidations data
26
+ # @param [Nokogiri::XML:Element] node with DataValidations data
27
+ # @return [DataValidations] value of DataValidations data
28
+ def parse(node)
29
+ node.attributes.each do |key, value|
30
+ case key
31
+ when 'count'
32
+ @count = value.value.to_i
33
+ when 'disablePrompts'
34
+ @disable_prompts = attribute_enabled?(value)
35
+ end
36
+ end
37
+
38
+ node.xpath('*').each do |node_child|
39
+ case node_child.name
40
+ when 'dataValidation'
41
+ @data_validations << DataValidation.new(parent: self).parse(node_child)
42
+ end
43
+ end
44
+ self
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'data_validation/data_validation_formula'
4
+ module OoxmlParser
5
+ # Class for `dataValidation` data
6
+ class DataValidation < OOXMLDocumentObject
7
+ # @return [Boolean] should blank entries be valid
8
+ attr_reader :allow_blank
9
+ # @return [String] Specifies the message text of the error alert
10
+ attr_reader :error
11
+ # @return [Symbol] Type of error
12
+ attr_reader :error_style
13
+ # @return [String] The text of the title bar of the error alert
14
+ attr_reader :error_title
15
+ # @return [DataValidationFormula] first formula of data validation
16
+ attr_reader :formula1
17
+ # @return [DataValidationFormula] second formula of data validation
18
+ attr_reader :formula2
19
+ # @return [Symbol] Input Method Editor (IME) mode
20
+ attr_reader :ime_mode
21
+ # @return [Symbol] Relational operator used with this data validation
22
+ attr_reader :operator
23
+ # @return [String] Message text of the input prompt
24
+ attr_reader :prompt
25
+ # @return [String] Text of the title bar of the input prompt
26
+ attr_reader :prompt_title
27
+ # @return [String] Ranges to which data validation is applied
28
+ attr_reader :reference_sequence
29
+ # @return [Symbol] Specifies whether to display the drop-down combo box
30
+ attr_reader :show_dropdown
31
+ # @return [Symbol] Specifies whether to display the input prompt
32
+ attr_reader :show_input_message
33
+ # @return [Symbol] Specifies whether to display error alert message
34
+ attr_reader :show_error_message
35
+ # @return [Symbol] Type of validation
36
+ attr_reader :type
37
+ # @return [String] UID of validation
38
+ attr_reader :uid
39
+
40
+ # Parse DataValidation data
41
+ # @param [Nokogiri::XML:Element] node with DataValidation data
42
+ # @return [DataValidation] value of DataValidation data
43
+ def parse(node)
44
+ node.attributes.each do |key, value|
45
+ case key
46
+ when 'allowBlank'
47
+ @allow_blank = attribute_enabled?(value)
48
+ when 'error'
49
+ @error = value.value.to_s
50
+ when 'errorStyle'
51
+ @error_style = value.value.to_sym
52
+ when 'errorTitle'
53
+ @error_title = value.value.to_s
54
+ when 'imeMode'
55
+ @ime_mode = value.value.to_sym
56
+ when 'operator'
57
+ @operator = value.value.to_sym
58
+ when 'type'
59
+ @type = value.value.to_sym
60
+ when 'prompt'
61
+ @prompt = value.value.to_s
62
+ when 'promptTitle'
63
+ @prompt_title = value.value.to_s
64
+ when 'showDropDown'
65
+ @show_dropdown = attribute_enabled?(value)
66
+ when 'showInputMessage'
67
+ @show_input_message = attribute_enabled?(value)
68
+ when 'showErrorMessage'
69
+ @show_error_message = attribute_enabled?(value)
70
+ when 'uid'
71
+ @uid = value.value.to_s
72
+ end
73
+ end
74
+
75
+ node.xpath('*').each do |node_child|
76
+ case node_child.name
77
+ when 'formula1'
78
+ @formula1 = DataValidationFormula.new(parent: self).parse(node_child)
79
+ when 'formula2'
80
+ @formula2 = DataValidationFormula.new(parent: self).parse(node_child)
81
+ when 'sqref'
82
+ @reference_sequence = node_child.text
83
+ end
84
+ end
85
+ self
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for `x14:formula1` or `x14:formula2` data
5
+ class DataValidationFormula < OOXMLDocumentObject
6
+ # @return [Formula] value of formula
7
+ attr_reader :formula
8
+
9
+ # Parse DataValidationFormula data
10
+ # @param [Nokogiri::XML:Element] node with DataValidationFormula data
11
+ # @return [DataValidationFormula] value of DataValidationFormula data
12
+ def parse(node)
13
+ node.xpath('*').each do |node_child|
14
+ case node_child.name
15
+ when 'f'
16
+ @formula = Formula.new(parent: self).parse(node_child)
17
+ end
18
+ end
19
+ self
20
+ end
21
+ end
22
+ end
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.10.0
4
+ version: 0.13.0
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-11-15 00:00:00.000000000 Z
13
+ date: 2021-05-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -321,6 +321,7 @@ files:
321
321
  - lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering_properties.rb
322
322
  - lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb
323
323
  - lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_spacing.rb
324
+ - lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_stlye_ref.rb
324
325
  - lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb
325
326
  - lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing/line_spacing.rb
326
327
  - lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs.rb
@@ -487,8 +488,20 @@ files:
487
488
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb
488
489
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache.rb
489
490
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb
491
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields.rb
492
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields/cache_field.rb
493
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_fields/cache_field/shared_items.rb
490
494
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source.rb
491
495
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source/worksheet_source.rb
496
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition.rb
497
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items.rb
498
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/column_row_items/column_row_item.rb
499
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/location.rb
500
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields.rb
501
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field.rb
502
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items.rb
503
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_fields/pivot_field/items/item.rb
504
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_table_definition/pivot_table_style_info.rb
492
505
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/shared_string_table.rb
493
506
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/shared_string_table/string_index.rb
494
507
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb
@@ -522,6 +535,9 @@ files:
522
535
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column/custom_filters/custom_filter.rb
523
536
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list.rb
524
537
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb
538
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations.rb
539
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation.rb
540
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation/data_validation_formula.rb
525
541
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups.rb
526
542
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups/sparkline_group.rb
527
543
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/x14_table.rb
@@ -560,7 +576,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
560
576
  - !ruby/object:Gem::Version
561
577
  version: '0'
562
578
  requirements: []
563
- rubygems_version: 3.1.4
579
+ rubygems_version: 3.1.6
564
580
  signing_key:
565
581
  specification_version: 4
566
582
  summary: OoxmlParser Gem