ooxml_parser 0.14.2 → 0.15.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 (16) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ooxml_parser/version.rb +1 -1
  3. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/differential_formatting_records.rb +41 -0
  4. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb +5 -0
  5. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/color_scale.rb +32 -0
  6. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar/conditional_format_value_object.rb +44 -0
  7. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar.rb +102 -0
  8. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/differential_formatting_record.rb +34 -0
  9. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set/conditional_formatting_icon.rb +26 -0
  10. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set.rb +55 -0
  11. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule.rb +100 -0
  12. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting.rb +32 -0
  13. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings.rb +33 -0
  14. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb +5 -0
  15. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +5 -0
  16. metadata +13 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c95b99d5e8d76d3aa01ae9ede02b290bc97e8959dc61fbf33d50e51d52ec9ebc
4
- data.tar.gz: 053d4bd9fcd951f1e9507adc5dd1e281227e9c1643f8fdfc0ecdefea5462bab1
3
+ metadata.gz: 0d95158b66da173b7cc2b1c80b4780c0893cb840ff47a20bee389285054e3f4e
4
+ data.tar.gz: ec88614112d6ec0c69e5269dd8d128ead722cd1d338ac0500f7868409e8a5160
5
5
  SHA512:
6
- metadata.gz: 63c6f712cb033e723c63b44067d08323408cf6fc13472a0af57425899e74630f6389bc6ea77b4bf849d2745c04378f444c4c7932dfaafc94b7108bbeaeadf3e8
7
- data.tar.gz: 86d3dad08a7d0838b4a11cfaf4329b6806b786ee7f791aadf03ea68efcd8e1b94901e4a8b81420412868882b855a606b3144aa28a27d92c01c11e4ed3196881d
6
+ metadata.gz: ac0bae842196c698f38563be771715d3cb78de1081904528f4557fe6faf0c7b20199945f0b5da952da0eef238e5b38a80e06e3c65a64a76b44824d9a105a24b4
7
+ data.tar.gz: cec21fd072fc64cc6ec436b86a0f68a0a11fb42356ca6826f20e2e8ccaa3de291e2ba2e8f76bcda5243473a46217f1d3a6b04beedfa0e9b2ac00f11aa9a7983f
@@ -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.14.2'
7
+ STRING = '0.15.0'
8
8
  end
9
9
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Parsing `dxfs` tag
5
+ class DifferentialFormattingRecords < OOXMLDocumentObject
6
+ # @return [Array, DifferentialFormattingRecord] list of formatting records
7
+ attr_reader :differential_formatting_records
8
+ # @return [Integer] count of formats
9
+ attr_reader :count
10
+
11
+ def initialize(parent: nil)
12
+ @differential_formatting_records = []
13
+ super
14
+ end
15
+
16
+ # @return [Array, DifferentialFormattingRecord] accessor
17
+ def [](key)
18
+ @differential_formatting_records[key]
19
+ end
20
+
21
+ # Parse DifferentialFormattingRecords data
22
+ # @param [Nokogiri::XML:Element] node with DifferentialFormattingRecords data
23
+ # @return [DifferentialFormattingRecords] value of DifferentialFormattingRecords data
24
+ def parse(node)
25
+ node.attributes.each do |key, value|
26
+ case key
27
+ when 'count'
28
+ @count = value.value.to_i
29
+ end
30
+ end
31
+
32
+ node.xpath('*').each do |node_child|
33
+ case node_child.name
34
+ when 'dxf'
35
+ @differential_formatting_records << DifferentialFormattingRecord.new(parent: self).parse(node_child)
36
+ end
37
+ end
38
+ self
39
+ end
40
+ end
41
+ end
@@ -5,6 +5,7 @@ require_relative 'style_sheet/fills'
5
5
  require_relative 'style_sheet/fonts'
6
6
  require_relative 'style_sheet/number_formats'
7
7
  require_relative 'style_sheet/xlsx_borders'
8
+ require_relative 'style_sheet/differential_formatting_records'
8
9
  module OoxmlParser
9
10
  # Parsing file styles.xml
10
11
  class StyleSheet < OOXMLDocumentObject
@@ -18,6 +19,8 @@ module OoxmlParser
18
19
  attr_reader :cell_xfs
19
20
  # @return [XlsxBorders] Cell XFs
20
21
  attr_reader :borders
22
+ # @return [DifferentialFormattingRecords] list of differential formatting records
23
+ attr_reader :differential_formatting_records
21
24
 
22
25
  def initialize(parent: nil)
23
26
  @number_formats = NumberFormats.new(parent: self)
@@ -42,6 +45,8 @@ module OoxmlParser
42
45
  @cell_xfs = CellXfs.new(parent: self).parse(node_child)
43
46
  when 'borders'
44
47
  @borders = XlsxBorders.new(parent: self).parse(node_child)
48
+ when 'dxfs'
49
+ @differential_formatting_records = DifferentialFormattingRecords.new(parent: self).parse(node_child)
45
50
  end
46
51
  end
47
52
  self
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for `colorScale` data
5
+ class ColorScale < OOXMLDocumentObject
6
+ # @return [Array<ConditionalFormatValueObject>] list of values
7
+ attr_reader :values
8
+ # @return [Array<OoxmlColor>] list of colors
9
+ attr_reader :colors
10
+
11
+ def initialize(parent: nil)
12
+ @values = []
13
+ @colors = []
14
+ super
15
+ end
16
+
17
+ # Parse ColorScale data
18
+ # @param [Nokogiri::XML:Element] node with ColorScale data
19
+ # @return [ColorScale] value of ColorScale data
20
+ def parse(node)
21
+ node.xpath('*').each do |node_child|
22
+ case node_child.name
23
+ when 'cfvo'
24
+ @values << ConditionalFormatValueObject.new(parent: self).parse(node_child)
25
+ when 'color'
26
+ @colors << OoxmlColor.new(parent: self).parse(node_child)
27
+ end
28
+ end
29
+ self
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for `cfvo` data
5
+ class ConditionalFormatValueObject < OOXMLDocumentObject
6
+ # @return [Symbol] Value type
7
+ attr_reader :type
8
+ # @return [String] Value
9
+ attr_reader :value
10
+ # @return [Symbol] Specifies whether value uses greater than or equal to operator
11
+ attr_reader :greater_or_equal
12
+ # @return [Formula] Formula
13
+ attr_reader :formula
14
+
15
+ def initialize(parent: nil)
16
+ @greater_or_equal = true
17
+ super
18
+ end
19
+
20
+ # Parse ConditionalFormatValueObject data
21
+ # @param [Nokogiri::XML:Element] node with ConditionalFormatValueObject data
22
+ # @return [ConditionalFormatValueObject] value of ConditionalFormatValueObject data
23
+ def parse(node)
24
+ node.attributes.each do |key, value|
25
+ case key
26
+ when 'type'
27
+ @type = value.value.to_sym
28
+ when 'val'
29
+ @value = value.value.to_s
30
+ when 'gte'
31
+ @greater_or_equal = attribute_enabled?(value)
32
+ end
33
+ end
34
+
35
+ node.xpath('*').each do |node_child|
36
+ case node_child.name
37
+ when 'f'
38
+ @formula = Formula.new(parent: self).parse(node_child)
39
+ end
40
+ end
41
+ self
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'data_bar/conditional_format_value_object'
4
+ module OoxmlParser
5
+ # Class for `dataBar` data
6
+ class DataBar < OOXMLDocumentObject
7
+ # @return [Integer] Minimal length of the data bar as a percentage of the cell width
8
+ attr_reader :min_length
9
+ # @return [Integer] Maximal length of the data bar as a percentage of the cell width
10
+ attr_reader :max_length
11
+ # @return [Symbol] Specifies whether value is shown in a cell
12
+ attr_reader :show_value
13
+ # @return [Symbol] Position of axis in a cell
14
+ attr_reader :axis_position
15
+ # @return [Symbol] Data bar direction
16
+ attr_reader :direction
17
+ # @return [Symbol] Specifies whether data bar fill is gradient
18
+ attr_reader :gradient
19
+ # @return [Symbol] Specifies whether data bar has border
20
+ attr_reader :border
21
+ # @return [Symbol] Specifies whether fill color for negative values is same as for positive
22
+ attr_reader :negative_bar_same_as_positive
23
+ # @return [Symbol] Specifies whether border color for negative values is same as for positive
24
+ attr_reader :negative_border_same_as_positive
25
+ # @return [Array, ConditionalFormatValueObject] minimal and maximal value
26
+ attr_reader :values
27
+ # @return [Color] Fill color for positive values
28
+ attr_reader :fill_color
29
+ # @return [Color] Fill color for negative values
30
+ attr_reader :negative_fill_color
31
+ # @return [Color] Border color for positive values
32
+ attr_reader :border_color
33
+ # @return [Color] Border color for negative values
34
+ attr_reader :negative_border_color
35
+ # @return [Color] Axis color
36
+ attr_reader :axis_color
37
+
38
+ def initialize(parent: nil)
39
+ @values = []
40
+ @show_value = true
41
+ @gradient = true
42
+ @negative_border_same_as_positive = true
43
+ super
44
+ end
45
+
46
+ # Parse DataBar data
47
+ # @param [Nokogiri::XML:Element] node with DataBar data
48
+ # @return [DataBar] value of DataBar data
49
+ def parse(node)
50
+ node.attributes.each do |key, value|
51
+ case key
52
+ when 'minLength'
53
+ @min_length = value.value.to_i
54
+ when 'maxLength'
55
+ @max_length = value.value.to_i
56
+ when 'showValue'
57
+ @show_value = attribute_enabled?(value)
58
+ when 'axisPosition'
59
+ @axis_position = value.value.to_sym
60
+ when 'direction'
61
+ @direction = value.value.to_sym
62
+ when 'gradient'
63
+ @gradient = attribute_enabled?(value)
64
+ when 'border'
65
+ @border = attribute_enabled?(value)
66
+ when 'negativeBarColorSameAsPositive'
67
+ @negative_bar_same_as_positive = attribute_enabled?(value)
68
+ when 'negativeBarBorderColorSameAsPositive'
69
+ @negative_border_same_as_positive = attribute_enabled?(value)
70
+ end
71
+ end
72
+
73
+ node.xpath('*').each do |node_child|
74
+ case node_child.name
75
+ when 'cfvo'
76
+ @values << ConditionalFormatValueObject.new(parent: self).parse(node_child)
77
+ when 'fillColor'
78
+ @fill_color = OoxmlColor.new(parent: self).parse(node_child)
79
+ when 'negativeFillColor'
80
+ @negative_fill_color = OoxmlColor.new(parent: self).parse(node_child)
81
+ when 'borderColor'
82
+ @border_color = OoxmlColor.new(parent: self).parse(node_child)
83
+ when 'negativeBorderColor'
84
+ @negative_border_color = OoxmlColor.new(parent: self).parse(node_child)
85
+ when 'axisColor'
86
+ @axis_color = OoxmlColor.new(parent: self).parse(node_child)
87
+ end
88
+ end
89
+ self
90
+ end
91
+
92
+ # @return [ConditionalFormatValueObject] minimal value
93
+ def minimum
94
+ values[0]
95
+ end
96
+
97
+ # @return [ConditionalFormatValueObject] maximal value
98
+ def maximum
99
+ values[1]
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for `dxf` data
5
+ class DifferentialFormattingRecord < OOXMLDocumentObject
6
+ # @return [Font] Font
7
+ attr_reader :font
8
+ # @return [NumberFormat] Number format
9
+ attr_reader :number_format
10
+ # @return [Fill] Fill
11
+ attr_reader :fill
12
+ # @return [Borders] Borders
13
+ attr_reader :borders
14
+
15
+ # Parse DifferentialFormattingRecord data
16
+ # @param [Nokogiri::XML:Element] node with DifferentialFormattingRecord data
17
+ # @return [DifferentialFormattingRecord] value of DifferentialFormattingRecord data
18
+ def parse(node)
19
+ node.xpath('*').each do |node_child|
20
+ case node_child.name
21
+ when 'font'
22
+ @font = Font.new(parent: self).parse(node_child)
23
+ when 'numFmt'
24
+ @number_format = NumberFormat.new(parent: self).parse(node_child)
25
+ when 'fill'
26
+ @fill = Fill.new(parent: self).parse(node_child)
27
+ when 'border'
28
+ @borders = XlsxBorder.new(parent: self).parse(node_child)
29
+ end
30
+ end
31
+ self
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Class for `cfIcon` data
5
+ class ConditionalFormattingIcon < OOXMLDocumentObject
6
+ # @return [String] Name of icon set
7
+ attr_reader :icon_set
8
+ # @return [Integer] Id of icon in set
9
+ attr_reader :icon_id
10
+
11
+ # Parse ConditionalFormattingIcon data
12
+ # @param [Nokogiri::XML:Element] node with ConditionalFormattingIcon data
13
+ # @return [ConditionalFormattingIcon] value of ConditionalFormattingIcon data
14
+ def parse(node)
15
+ node.attributes.each do |key, value|
16
+ case key
17
+ when 'iconSet'
18
+ @icon_set = value.value.to_s
19
+ when 'iconId'
20
+ @icon_id = value.value.to_i
21
+ end
22
+ end
23
+ self
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'icon_set/conditional_formatting_icon'
4
+ module OoxmlParser
5
+ # Class for `iconSet` data
6
+ class IconSet < OOXMLDocumentObject
7
+ # @return [String] Name of icon set
8
+ attr_reader :set
9
+ # @return [Symbol] Specifies whether icons are shown in reverse order
10
+ attr_reader :reverse
11
+ # @return [Symbol] Specifies whether value is shown in a cell
12
+ attr_reader :show_value
13
+ # @return [Symbol] Specifies whether icon set is custom
14
+ attr_reader :custom
15
+ # @return [Array<ConditionalFormatValueObject>] list of values
16
+ attr_reader :values
17
+ # @return [Array<ConditionalFormattingIcon>] list of icons for custom sets
18
+ attr_reader :icons
19
+
20
+ def initialize(parent: nil)
21
+ @values = []
22
+ @icons = []
23
+ @show_value = true
24
+ super
25
+ end
26
+
27
+ # Parse IconSet data
28
+ # @param [Nokogiri::XML:Element] node with IconSet data
29
+ # @return [IconSet] value of IconSet data
30
+ def parse(node)
31
+ node.attributes.each do |key, value|
32
+ case key
33
+ when 'iconSet'
34
+ @set = value.value.to_s
35
+ when 'reverse'
36
+ @reverse = attribute_enabled?(value)
37
+ when 'showValue'
38
+ @show_value = attribute_enabled?(value)
39
+ when 'custom'
40
+ @custom = attribute_enabled?(value)
41
+ end
42
+ end
43
+
44
+ node.xpath('*').each do |node_child|
45
+ case node_child.name
46
+ when 'cfvo'
47
+ @values << ConditionalFormatValueObject.new(parent: self).parse(node_child)
48
+ when 'cfIcon'
49
+ @icons << ConditionalFormattingIcon.new(parent: self).parse(node_child)
50
+ end
51
+ end
52
+ self
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'conditional_formatting_rule/differential_formatting_record'
4
+ require_relative 'conditional_formatting_rule/data_bar'
5
+ require_relative 'conditional_formatting_rule/color_scale'
6
+ require_relative 'conditional_formatting_rule/icon_set'
7
+ module OoxmlParser
8
+ # Class for `cfRule` data
9
+ class ConditionalFormattingRule < OOXMLDocumentObject
10
+ # @return [Symbol] Type of rule
11
+ attr_reader :type
12
+ # @return [Integer] Specifies position on the list of rules
13
+ attr_reader :priority
14
+ # @return [String] ID of rule
15
+ attr_reader :id
16
+ # @return [Integer] index of format
17
+ attr_reader :format_index
18
+ # @return [Symbol] Specifies whether rules with lower priority should be applied over this rule
19
+ attr_reader :stop_if_true
20
+ # @return [Symbol] Relational operator in value rule
21
+ attr_reader :operator
22
+ # @return [Symbol] Specifies whether percent is used in top/bottom rule
23
+ attr_reader :percent
24
+ # @return [Integer] Number of items in top/bottom rule
25
+ attr_reader :rank
26
+ # @return [Integer] Number of standard deviations in above/below average rule
27
+ attr_reader :standard_deviation
28
+ # @return [String] text value in text rule
29
+ attr_reader :text
30
+ # @return [Array, Formula] Formulas to determine condition
31
+ attr_reader :formulas
32
+ # @return [DifferentialFormattingRecord] Format
33
+ attr_reader :rule_format
34
+ # @return [DataBar] data bar formatting
35
+ attr_reader :data_bar
36
+ # @return [ColorScale] color scale formatting
37
+ attr_reader :color_scale
38
+ # @return [IconSet] icon set formatting
39
+ attr_reader :icon_set
40
+
41
+ def initialize(parent: nil)
42
+ @formulas = []
43
+ super
44
+ end
45
+
46
+ # Parse ConditionalFormattingRule data
47
+ # @param [Nokogiri::XML:Element] node with ConditionalFormattingRule data
48
+ # @return [ConditionalFormattingRule] value of ConditionalFormattingRule data
49
+ def parse(node)
50
+ node.attributes.each do |key, value|
51
+ case key
52
+ when 'type'
53
+ @type = value.value.to_sym
54
+ when 'priority'
55
+ @priority = value.value.to_i
56
+ when 'id'
57
+ @id = value.value.to_s
58
+ when 'dxfId'
59
+ @format_index = value.value.to_i
60
+ when 'stopIfTrue'
61
+ @stop_if_true = attribute_enabled?(value)
62
+ when 'operator'
63
+ @operator = value.value.to_sym
64
+ when 'percent'
65
+ @percent = attribute_enabled?(value)
66
+ when 'rank'
67
+ @rank = value.value.to_i
68
+ when 'stdDev'
69
+ @standard_deviation = value.value.to_i
70
+ when 'text'
71
+ @text = value.text.to_s
72
+ end
73
+ end
74
+
75
+ node.xpath('*').each do |node_child|
76
+ case node_child.name
77
+ when 'f'
78
+ @formulas << Formula.new(parent: self).parse(node_child)
79
+ when 'dxf'
80
+ @rule_format = DifferentialFormattingRecord.new(parent: self).parse(node_child)
81
+ when 'dataBar'
82
+ @data_bar = DataBar.new(parent: self).parse(node_child)
83
+ when 'colorScale'
84
+ @color_scale = ColorScale.new(parent: self).parse(node_child)
85
+ when 'iconSet'
86
+ @icon_set = IconSet.new(parent: self).parse(node_child)
87
+ end
88
+ end
89
+ self
90
+ end
91
+
92
+ # @return [nil, DifferentialFormattingRecord] format of rule
93
+ def format
94
+ return @rule_format if @rule_format
95
+ return nil unless @format_index
96
+
97
+ root_object.style_sheet.differential_formatting_records[@format_index]
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'conditional_formatting/conditional_formatting_rule'
4
+ module OoxmlParser
5
+ # Class for `conditionalFormatting` data
6
+ class ConditionalFormatting < OOXMLDocumentObject
7
+ # @return [Array, ConditionalFormattingRule] list of conditional formatting rules
8
+ attr_reader :rules
9
+ # @return [String] Ranges to which conditional formatting is applied
10
+ attr_reader :reference_sequence
11
+
12
+ def initialize(parent: nil)
13
+ @rules = []
14
+ super
15
+ end
16
+
17
+ # Parse ConditionalFormatting data
18
+ # @param [Nokogiri::XML:Element] node with ConditionalFormatting data
19
+ # @return [ConditionalFormatting] value of ConditionalFormatting data
20
+ def parse(node)
21
+ node.xpath('*').each do |node_child|
22
+ case node_child.name
23
+ when 'cfRule'
24
+ @rules << ConditionalFormattingRule.new(parent: self).parse(node_child)
25
+ when 'sqref'
26
+ @reference_sequence = node_child.text
27
+ end
28
+ end
29
+ self
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'conditional_formattings/conditional_formatting'
4
+ module OoxmlParser
5
+ # Class for `conditionalFormattings` data
6
+ class ConditionalFormattings < OOXMLDocumentObject
7
+ # @return [Array<ConditionalFormatting>] list of conditional formattings
8
+ attr_reader :conditional_formattings_list
9
+
10
+ def initialize(parent: nil)
11
+ @conditional_formattings_list = []
12
+ super
13
+ end
14
+
15
+ # @return [Array, ConditionalFormatting] accessor
16
+ def [](key)
17
+ @conditional_formattings_list[key]
18
+ end
19
+
20
+ # Parse ConditionalFormattings data
21
+ # @param [Nokogiri::XML:Element] node with ConditionalFormattings data
22
+ # @return [ConditionalFormattings] value of ConditionalFormattings data
23
+ def parse(node)
24
+ node.xpath('*').each do |node_child|
25
+ case node_child.name
26
+ when 'conditionalFormatting'
27
+ @conditional_formattings_list << ConditionalFormatting.new(parent: self).parse(node_child)
28
+ end
29
+ end
30
+ self
31
+ end
32
+ end
33
+ end
@@ -3,11 +3,14 @@
3
3
  require_relative 'extension/data_validations'
4
4
  require_relative 'extension/sparkline_groups'
5
5
  require_relative 'extension/x14_table'
6
+ require_relative 'extension/conditional_formattings'
6
7
  module OoxmlParser
7
8
  # Class for `ext` data
8
9
  class Extension < OOXMLDocumentObject
9
10
  # @return [DataValidations] list of data validations
10
11
  attr_accessor :data_validations
12
+ # @return [ConditionalFormattings] list of conditional formattings
13
+ attr_reader :conditional_formattings
11
14
  # @return [X14Table] table data in x14 namespace
12
15
  attr_accessor :table
13
16
  # @return [SparklineGroups] list of groups
@@ -21,6 +24,8 @@ module OoxmlParser
21
24
  case column_node.name
22
25
  when 'dataValidations'
23
26
  @data_validations = DataValidations.new(parent: self).parse(column_node)
27
+ when 'conditionalFormattings'
28
+ @conditional_formattings = ConditionalFormattings.new(parent: self).parse(column_node)
24
29
  when 'table'
25
30
  @table = X14Table.new(parent: self).parse(column_node)
26
31
  when 'sparklineGroups'
@@ -31,6 +31,8 @@ module OoxmlParser
31
31
  attr_accessor :extension_list
32
32
  # @return [XlsxHeaderFooter] header and footer
33
33
  attr_reader :header_footer
34
+ # @return [Array<ConditionalFormatting>] list of conditional formattings
35
+ attr_reader :conditional_formattings
34
36
 
35
37
  def initialize(parent: nil)
36
38
  @columns = []
@@ -42,6 +44,7 @@ module OoxmlParser
42
44
  @drawings = []
43
45
  @sheet_views = []
44
46
  @table_parts = []
47
+ @conditional_formattings = []
45
48
  super
46
49
  end
47
50
 
@@ -129,6 +132,8 @@ module OoxmlParser
129
132
  @extension_list = ExtensionList.new(parent: self).parse(worksheet_node_child)
130
133
  when 'headerFooter'
131
134
  @header_footer = XlsxHeaderFooter.new(parent: self).parse(worksheet_node_child)
135
+ when 'conditionalFormatting'
136
+ @conditional_formattings << ConditionalFormatting.new(parent: self).parse(worksheet_node_child)
132
137
  end
133
138
  end
134
139
  parse_comments
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.14.2
4
+ version: 0.15.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: 2021-09-03 00:00:00.000000000 Z
13
+ date: 2021-09-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -509,6 +509,7 @@ files:
509
509
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs.rb
510
510
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/cell_style/alignment.rb
511
511
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/xf.rb
512
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/differential_formatting_records.rb
512
513
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills.rb
513
514
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb
514
515
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill/pattern_fill.rb
@@ -536,6 +537,15 @@ files:
536
537
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column/custom_filters/custom_filter.rb
537
538
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list.rb
538
539
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb
540
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings.rb
541
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting.rb
542
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule.rb
543
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/color_scale.rb
544
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar.rb
545
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/data_bar/conditional_format_value_object.rb
546
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/differential_formatting_record.rb
547
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set.rb
548
+ - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/conditional_formattings/conditional_formatting/conditional_formatting_rule/icon_set/conditional_formatting_icon.rb
539
549
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations.rb
540
550
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation.rb
541
551
  - lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/data_validations/data_validation/data_validation_formula.rb
@@ -579,7 +589,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
579
589
  - !ruby/object:Gem::Version
580
590
  version: '0'
581
591
  requirements: []
582
- rubygems_version: 3.2.26
592
+ rubygems_version: 3.2.27
583
593
  signing_key:
584
594
  specification_version: 4
585
595
  summary: OoxmlParser Gem