ooxml_parser 0.15.0 → 0.18.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.
- checksums.yaml +4 -4
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +3 -3
- data/lib/ooxml_parser/common_parser/common_data/color.rb +11 -3
- data/lib/ooxml_parser/common_parser/common_data/colors/hsl_color.rb +4 -4
- data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object/nokogiri_parsing_exception.rb +6 -0
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +7 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +28 -16
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +12 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +1 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +2 -6
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_size.rb +2 -2
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition/sound_action/sound.rb +8 -2
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_layout_file.rb +25 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_layouts_helper.rb +20 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_master_file.rb +25 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_masters_helper.rb +20 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +14 -0
- data/lib/ooxml_parser/version.rb +1 -1
- 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 +19 -2
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd9cd17bc24141fd5500ae8233240e5a8370fcc7aa8606211dfbdd7638b720af
|
4
|
+
data.tar.gz: a460aaf4e3216c0e627520c133d821b9310307c783712b6fd0f7c2f8879bf164
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39a1f7298c1c51da2e27f313cd6873924896c8dc71f46fa40760f520e746532cf6c50ba8d70829b4a36873f543e8dec8ceb920013531d1ac1d44c9ea44ce7706
|
7
|
+
data.tar.gz: ea140f577de7d3f47b37dcaf1909c2e1ae90b28356085c380caa6eecb508d205e95dccc198100cbd513918b7fecfb65e34df2877434c184b3b8ece431a695ef8
|
@@ -35,7 +35,7 @@ module OoxmlParser
|
|
35
35
|
|
36
36
|
full_path_to_file = OOXMLDocumentObject.path_to_folder + OOXMLDocumentObject.root_subfolder + @path.gsub('..', '')
|
37
37
|
if File.exist?(full_path_to_file)
|
38
|
-
@content =
|
38
|
+
@content = File.binread(full_path_to_file)
|
39
39
|
else
|
40
40
|
warn "Couldn't find #{full_path_to_file} file on filesystem. Possible problem in original document"
|
41
41
|
end
|
@@ -45,11 +45,11 @@ module OoxmlParser
|
|
45
45
|
hls_color.h = if max == red && green >= blue
|
46
46
|
60.0 * (green - blue) / delta
|
47
47
|
elsif max == red && green < blue
|
48
|
-
60.0 * (green - blue) / delta + 360.0
|
48
|
+
(60.0 * (green - blue) / delta) + 360.0
|
49
49
|
elsif max == green
|
50
|
-
60.0 * (blue - red) / delta + 120.0
|
50
|
+
(60.0 * (blue - red) / delta) + 120.0
|
51
51
|
else
|
52
|
-
60.0 * (red - green) / delta + 240.0
|
52
|
+
(60.0 * (red - green) / delta) + 240.0
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -48,7 +48,7 @@ module OoxmlParser
|
|
48
48
|
|
49
49
|
# @return [String] result of convert of object to string
|
50
50
|
def to_s
|
51
|
-
if
|
51
|
+
if primary_colors_none?
|
52
52
|
'none'
|
53
53
|
else
|
54
54
|
"RGB (#{@red}, #{@green}, #{@blue})"
|
@@ -69,8 +69,8 @@ module OoxmlParser
|
|
69
69
|
|
70
70
|
# @return [True, False] is color default
|
71
71
|
def none?
|
72
|
-
|
73
|
-
|
72
|
+
primary_colors_none? ||
|
73
|
+
style == :nil
|
74
74
|
end
|
75
75
|
|
76
76
|
# @return [True, False] is color not default
|
@@ -83,6 +83,14 @@ module OoxmlParser
|
|
83
83
|
(@red == 255) && (@green == 255) && (@blue == 255)
|
84
84
|
end
|
85
85
|
|
86
|
+
# Check if all three primary colors are none
|
87
|
+
# @return [Boolean]
|
88
|
+
def primary_colors_none?
|
89
|
+
@red == VALUE_FOR_NONE_COLOR &&
|
90
|
+
@green == VALUE_FOR_NONE_COLOR &&
|
91
|
+
@blue == VALUE_FOR_NONE_COLOR
|
92
|
+
end
|
93
|
+
|
86
94
|
# Method to copy object
|
87
95
|
# @return [Color] copied object
|
88
96
|
def copy
|
@@ -22,9 +22,9 @@ module OoxmlParser
|
|
22
22
|
# Chroma - The "colorfulness relative to the brightness of a similarly illuminated white".
|
23
23
|
# @return [Color] result
|
24
24
|
def to_rgb
|
25
|
-
chroma = (1 - (2 * @l - 1).abs) * @s
|
26
|
-
x = chroma * (1 - ((@h / 60.0) % 2.0 - 1).abs)
|
27
|
-
m = @l - chroma / 2.0
|
25
|
+
chroma = (1 - ((2 * @l) - 1).abs) * @s
|
26
|
+
x = chroma * (1 - (((@h / 60.0) % 2.0) - 1).abs)
|
27
|
+
m = @l - (chroma / 2.0)
|
28
28
|
|
29
29
|
rgb = if @h.zero?
|
30
30
|
Color.new(0, 0, 0)
|
@@ -52,7 +52,7 @@ module OoxmlParser
|
|
52
52
|
if tint.nil?
|
53
53
|
lum
|
54
54
|
else
|
55
|
-
tint.negative? ? lum * (1.0 + tint) : lum * (1.0 - tint) + (255 - 255 * (1.0 - tint))
|
55
|
+
tint.negative? ? lum * (1.0 + tint) : (lum * (1.0 - tint)) + (255 - (255 * (1.0 - tint)))
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -114,7 +114,7 @@ module OoxmlParser
|
|
114
114
|
# and converts into integer
|
115
115
|
def column_number
|
116
116
|
@column.reverse.each_char.reduce(0) do |result, char|
|
117
|
-
result + (char.downcase.ord - 96) * (26**@column.reverse.index(char))
|
117
|
+
result + ((char.downcase.ord - 96) * (26**@column.reverse.index(char)))
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
@@ -4,6 +4,7 @@ require 'filemagic' unless Gem.win_platform?
|
|
4
4
|
require 'securerandom'
|
5
5
|
require 'nokogiri'
|
6
6
|
require 'zip'
|
7
|
+
require_relative 'ooxml_document_object/nokogiri_parsing_exception'
|
7
8
|
require_relative 'ooxml_document_object/ooxml_document_object_helper'
|
8
9
|
require_relative 'ooxml_document_object/ooxml_object_attribute_helper'
|
9
10
|
|
@@ -39,7 +40,12 @@ module OoxmlParser
|
|
39
40
|
|
40
41
|
# @return [Nokogiri::XML::Document] result of parsing xml via nokogiri
|
41
42
|
def parse_xml(xml_path)
|
42
|
-
Nokogiri::XML(File.open(xml_path), &:strict)
|
43
|
+
xml = Nokogiri::XML(File.open(xml_path), &:strict)
|
44
|
+
unless xml.errors.empty?
|
45
|
+
raise NokogiriParsingException,
|
46
|
+
"Nokogiri found errors in file: #{xml_path}. Errors: #{xml.errors}"
|
47
|
+
end
|
48
|
+
xml
|
43
49
|
end
|
44
50
|
|
45
51
|
class << self
|
@@ -15,10 +15,6 @@ module OoxmlParser
|
|
15
15
|
attr_reader :font_color
|
16
16
|
# @return [OoxmlSize] space size
|
17
17
|
attr_reader :space
|
18
|
-
# @return [string] name of font
|
19
|
-
attr_reader :font_name
|
20
|
-
# @return [Float] font size
|
21
|
-
attr_reader :font_size
|
22
18
|
# @return [Symbol] baseline of run
|
23
19
|
attr_reader :baseline
|
24
20
|
# @return [Hyperlink] hyperlink of run
|
@@ -79,14 +75,7 @@ module OoxmlParser
|
|
79
75
|
when 'strike'
|
80
76
|
@font_style.strike = value_to_symbol(value)
|
81
77
|
when 'baseline'
|
82
|
-
|
83
|
-
when -25_000, -30_000
|
84
|
-
@baseline = :subscript
|
85
|
-
when 30_000
|
86
|
-
@baseline = :superscript
|
87
|
-
when 0
|
88
|
-
@baseline = :baseline
|
89
|
-
end
|
78
|
+
@baseline = parse_baseline(value)
|
90
79
|
when 'cap'
|
91
80
|
@caps = value.value.to_sym
|
92
81
|
end
|
@@ -107,8 +96,6 @@ module OoxmlParser
|
|
107
96
|
@spacing = RunSpacing.new(parent: self).parse(node_child)
|
108
97
|
when 'color'
|
109
98
|
@color = OoxmlColor.new(parent: self).parse(node_child)
|
110
|
-
when 'solidFill'
|
111
|
-
@font_color = Color.new(parent: self).parse_color(node_child.xpath('*').first)
|
112
99
|
when 'latin'
|
113
100
|
@font_name = node_child.attribute('typeface').value
|
114
101
|
when 'b'
|
@@ -140,9 +127,34 @@ module OoxmlParser
|
|
140
127
|
end
|
141
128
|
end
|
142
129
|
@font_color = DocxColorScheme.new(parent: self).parse(node)
|
143
|
-
@font_name = root_object.default_font_typeface if @font_name.empty?
|
144
|
-
@font_size ||= root_object.default_font_size
|
145
130
|
self
|
146
131
|
end
|
132
|
+
|
133
|
+
# @return [Float] font size
|
134
|
+
def font_size
|
135
|
+
@font_size ||= root_object.default_font_size
|
136
|
+
end
|
137
|
+
|
138
|
+
# @return [String] name of font
|
139
|
+
def font_name
|
140
|
+
return @font_name unless @font_name.empty?
|
141
|
+
|
142
|
+
root_object.default_font_typeface
|
143
|
+
end
|
144
|
+
|
145
|
+
private
|
146
|
+
|
147
|
+
# @param value [Nokogiri::XML::Attr] nokogiri parameter to parse
|
148
|
+
# @return [Symbol] baseline value depending of type
|
149
|
+
def parse_baseline(value)
|
150
|
+
case value.value.to_i
|
151
|
+
when -25_000, -30_000
|
152
|
+
:subscript
|
153
|
+
when 30_000
|
154
|
+
:superscript
|
155
|
+
when 0
|
156
|
+
:baseline
|
157
|
+
end
|
158
|
+
end
|
147
159
|
end
|
148
160
|
end
|
@@ -96,5 +96,17 @@ module OoxmlParser
|
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
99
|
+
|
100
|
+
# Fetch data from `ParagraphSpacing`
|
101
|
+
# Which have values with parameters
|
102
|
+
# @param valued_spacing [ParagraphSpacing] spacing to get params
|
103
|
+
# @return [Spacing]
|
104
|
+
def fetch_from_valued_spacing(valued_spacing)
|
105
|
+
@before = valued_spacing.before.to_unit(:centimeter).value if valued_spacing.before
|
106
|
+
@after = valued_spacing.after.to_unit(:centimeter).value if valued_spacing.after
|
107
|
+
@line = valued_spacing.line.to_unit(:centimeter).value if valued_spacing.line
|
108
|
+
@line_rule = valued_spacing.line_rule if valued_spacing.line_rule
|
109
|
+
self
|
110
|
+
end
|
99
111
|
end
|
100
112
|
end
|
@@ -33,7 +33,7 @@ module OoxmlParser
|
|
33
33
|
when 'effect'
|
34
34
|
self.effect = node_child.attribute('val').value
|
35
35
|
when 'position'
|
36
|
-
self.position = (node_child.attribute('val').value.to_f / (28.0 + 1.0 / 3.0) / 2.0).round(1)
|
36
|
+
self.position = (node_child.attribute('val').value.to_f / (28.0 + (1.0 / 3.0)) / 2.0).round(1)
|
37
37
|
when 'em'
|
38
38
|
self.em = node_child.attribute('val').value
|
39
39
|
when 'spacing'
|
@@ -216,12 +216,8 @@ module OoxmlParser
|
|
216
216
|
@align = node_child.attribute('val').value.to_sym unless node_child.attribute('val').nil?
|
217
217
|
@align = :justify if node_child.attribute('val').value == 'both'
|
218
218
|
when 'spacing'
|
219
|
-
@
|
220
|
-
@spacing
|
221
|
-
@spacing.line_rule = node_child.attribute('lineRule').value.sub('atLeast', 'at_least').to_sym unless node_child.attribute('lineRule').nil?
|
222
|
-
unless node_child.attribute('line').nil?
|
223
|
-
@spacing.line = (@spacing.line_rule == :auto ? (node_child.attribute('line').value.to_f / 240.0).round(2) : (node_child.attribute('line').value.to_f / 566.9).round(2))
|
224
|
-
end
|
219
|
+
@valued_spacing = ParagraphSpacing.new(parent: self).parse(node_child)
|
220
|
+
@spacing = @spacing.fetch_from_valued_spacing(@valued_spacing)
|
225
221
|
when 'sectPr'
|
226
222
|
@sector_properties = PageProperties.new(parent: self).parse(node_child, self, default_char_style)
|
227
223
|
@section_break = case @sector_properties.type
|
@@ -19,8 +19,8 @@ module OoxmlParser
|
|
19
19
|
|
20
20
|
# @return [True, False] compare dimensions of size, ignoring orientation
|
21
21
|
def same_dimensions?(other)
|
22
|
-
(@height == other.height) && (@width == other.width) ||
|
23
|
-
(@height == other.width) && (@width == other.height)
|
22
|
+
((@height == other.height) && (@width == other.width)) ||
|
23
|
+
((@height == other.width) && (@width == other.height))
|
24
24
|
end
|
25
25
|
|
26
26
|
# @return [String] get human format name
|
@@ -3,7 +3,8 @@
|
|
3
3
|
module OoxmlParser
|
4
4
|
# Class for parsing `snd` tags
|
5
5
|
class Sound < OOXMLDocumentObject
|
6
|
-
|
6
|
+
# @return [String] name of sound
|
7
|
+
attr_reader :name
|
7
8
|
# @return [FileReference] image structure
|
8
9
|
attr_accessor :file_reference
|
9
10
|
|
@@ -18,7 +19,12 @@ module OoxmlParser
|
|
18
19
|
# @return [Sound] result of parsing
|
19
20
|
def parse(node)
|
20
21
|
@file_reference = FileReference.new(parent: self).parse(node)
|
21
|
-
|
22
|
+
node.attributes.each do |key, value|
|
23
|
+
case key
|
24
|
+
when 'name'
|
25
|
+
@name = value.value.to_s
|
26
|
+
end
|
27
|
+
end
|
22
28
|
self
|
23
29
|
end
|
24
30
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing SlideLayout files
|
5
|
+
class SlideLayoutFile < OOXMLDocumentObject
|
6
|
+
# @return [CommonSlideData] common slide data
|
7
|
+
attr_reader :common_slide_data
|
8
|
+
|
9
|
+
# Parse SlideLayoutFile
|
10
|
+
# @param file [String] path to file to parse
|
11
|
+
# @return [SlideLayoutFile] result of parsing
|
12
|
+
def parse(file)
|
13
|
+
OOXMLDocumentObject.add_to_xmls_stack(file.gsub(OOXMLDocumentObject.path_to_folder, ''))
|
14
|
+
doc = parse_xml(file)
|
15
|
+
doc.xpath('p:sldLayout/*').each do |node_child|
|
16
|
+
case node_child.name
|
17
|
+
when 'cSld'
|
18
|
+
@common_slide_data = CommonSlideData.new(parent: self).parse(node_child)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
OOXMLDocumentObject.xmls_stack.pop
|
22
|
+
self
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# method to help to work with SlideLayouts
|
5
|
+
module SlideLayoutsHelper
|
6
|
+
# @return [Array<String>] list of slide layouts files
|
7
|
+
def slide_layouts_files
|
8
|
+
Dir["#{OOXMLDocumentObject.path_to_folder}ppt/slideLayouts/*.xml"]
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
# Parse slide layouts file
|
14
|
+
def parse_slide_layouts
|
15
|
+
slide_layouts_files.each do |file|
|
16
|
+
@slide_layouts << SlideLayoutFile.new(parent: self).parse(file)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# Class for parsing SlideMaster files
|
5
|
+
class SlideMasterFile < OOXMLDocumentObject
|
6
|
+
# @return [CommonSlideData] common slide data
|
7
|
+
attr_reader :common_slide_data
|
8
|
+
|
9
|
+
# Parse SlideMaster
|
10
|
+
# @param file [String] path to file to parse
|
11
|
+
# @return [SlideMasterFile] result of parsing
|
12
|
+
def parse(file)
|
13
|
+
OOXMLDocumentObject.add_to_xmls_stack(file.gsub(OOXMLDocumentObject.path_to_folder, ''))
|
14
|
+
doc = parse_xml(file)
|
15
|
+
doc.xpath('p:sldMaster/*').each do |node_child|
|
16
|
+
case node_child.name
|
17
|
+
when 'cSld'
|
18
|
+
@common_slide_data = CommonSlideData.new(parent: self).parse(node_child)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
OOXMLDocumentObject.xmls_stack.pop
|
22
|
+
self
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OoxmlParser
|
4
|
+
# method to help to work with SlideMasters
|
5
|
+
module SlideMastersHelper
|
6
|
+
# @return [Array<String>] list of slide masters files
|
7
|
+
def slide_masters_files
|
8
|
+
Dir["#{OOXMLDocumentObject.path_to_folder}ppt/slideMasters/*.xml"]
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
# Parse slide masters file
|
14
|
+
def parse_slide_masters
|
15
|
+
slide_masters_files.each do |file|
|
16
|
+
@slide_masters << SlideMasterFile.new(parent: self).parse(file)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -5,12 +5,18 @@ require_relative 'presentation/presentation_comments'
|
|
5
5
|
require_relative 'presentation/presentation_helpers'
|
6
6
|
require_relative 'presentation/presentation_theme'
|
7
7
|
require_relative 'presentation/slide'
|
8
|
+
require_relative 'presentation/slide_master_file'
|
9
|
+
require_relative 'presentation/slide_masters_helper'
|
10
|
+
require_relative 'presentation/slide_layout_file'
|
11
|
+
require_relative 'presentation/slide_layouts_helper'
|
8
12
|
require_relative 'presentation/slide_size'
|
9
13
|
require_relative 'presentation/table_styles'
|
10
14
|
module OoxmlParser
|
11
15
|
# Basic class for all parsed pptx data
|
12
16
|
class Presentation < CommonDocumentStructure
|
13
17
|
include PresentationHelpers
|
18
|
+
include SlideLayoutsHelper
|
19
|
+
include SlideMastersHelper
|
14
20
|
attr_accessor :slides, :theme, :slide_size
|
15
21
|
# @return [Relationships] relationships of presentation
|
16
22
|
attr_accessor :relationships
|
@@ -20,10 +26,16 @@ module OoxmlParser
|
|
20
26
|
attr_reader :comment_authors
|
21
27
|
# @return [PresentationComments] comments of presentation
|
22
28
|
attr_reader :comments
|
29
|
+
# @return [Array<SlideMasterFile>] list of slide master
|
30
|
+
attr_reader :slide_masters
|
31
|
+
# @return [Array<SlideLayout>] list of slide layouts
|
32
|
+
attr_reader :slide_layouts
|
23
33
|
|
24
34
|
def initialize(params = {})
|
25
35
|
@slides = []
|
26
36
|
@comments = []
|
37
|
+
@slide_masters = []
|
38
|
+
@slide_layouts = []
|
27
39
|
super
|
28
40
|
end
|
29
41
|
|
@@ -56,6 +68,8 @@ module OoxmlParser
|
|
56
68
|
end
|
57
69
|
OOXMLDocumentObject.xmls_stack.pop
|
58
70
|
@relationships = Relationships.new(parent: self).parse_file("#{OOXMLDocumentObject.path_to_folder}/ppt/_rels/presentation.xml.rels")
|
71
|
+
parse_slide_layouts
|
72
|
+
parse_slide_masters
|
59
73
|
self
|
60
74
|
end
|
61
75
|
end
|
data/lib/ooxml_parser/version.rb
CHANGED
@@ -19,15 +19,23 @@ module OoxmlParser
|
|
19
19
|
attr_reader :stop_if_true
|
20
20
|
# @return [Symbol] Relational operator in value rule
|
21
21
|
attr_reader :operator
|
22
|
+
# @return [Symbol] Specifies whether top/bottom rule highlights bottom values
|
23
|
+
attr_reader :bottom
|
22
24
|
# @return [Symbol] Specifies whether percent is used in top/bottom rule
|
23
25
|
attr_reader :percent
|
24
26
|
# @return [Integer] Number of items in top/bottom rule
|
25
27
|
attr_reader :rank
|
28
|
+
# @return [Boolean] Specifies whether rule highlights values above average
|
29
|
+
attr_reader :above_average
|
30
|
+
# @return [Boolean] Specifies whether rule highlights values equal to average
|
31
|
+
attr_reader :equal_average
|
26
32
|
# @return [Integer] Number of standard deviations in above/below average rule
|
27
33
|
attr_reader :standard_deviation
|
28
|
-
# @return [String]
|
34
|
+
# @return [String] Text value in text rule
|
29
35
|
attr_reader :text
|
30
|
-
# @return [
|
36
|
+
# @return [Symbol] Time period in date rule
|
37
|
+
attr_reader :time_period
|
38
|
+
# @return [Array<Formula>] Formulas to determine condition
|
31
39
|
attr_reader :formulas
|
32
40
|
# @return [DifferentialFormattingRecord] Format
|
33
41
|
attr_reader :rule_format
|
@@ -39,6 +47,7 @@ module OoxmlParser
|
|
39
47
|
attr_reader :icon_set
|
40
48
|
|
41
49
|
def initialize(parent: nil)
|
50
|
+
@above_average = true
|
42
51
|
@formulas = []
|
43
52
|
super
|
44
53
|
end
|
@@ -61,14 +70,22 @@ module OoxmlParser
|
|
61
70
|
@stop_if_true = attribute_enabled?(value)
|
62
71
|
when 'operator'
|
63
72
|
@operator = value.value.to_sym
|
73
|
+
when 'bottom'
|
74
|
+
@bottom = attribute_enabled?(value)
|
64
75
|
when 'percent'
|
65
76
|
@percent = attribute_enabled?(value)
|
66
77
|
when 'rank'
|
67
78
|
@rank = value.value.to_i
|
79
|
+
when 'aboveAverage'
|
80
|
+
@above_average = attribute_enabled?(value)
|
81
|
+
when 'equalAverage'
|
82
|
+
@equal_average = attribute_enabled?(value)
|
68
83
|
when 'stdDev'
|
69
84
|
@standard_deviation = value.value.to_i
|
70
85
|
when 'text'
|
71
86
|
@text = value.text.to_s
|
87
|
+
when 'timePeriod'
|
88
|
+
@time_period = value.value.to_sym
|
72
89
|
end
|
73
90
|
end
|
74
91
|
|
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.
|
4
|
+
version: 0.18.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: 2021-
|
13
|
+
date: 2021-11-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -305,6 +305,7 @@ files:
|
|
305
305
|
- lib/ooxml_parser/common_parser/common_data/font_style.rb
|
306
306
|
- lib/ooxml_parser/common_parser/common_data/hyperlink.rb
|
307
307
|
- lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb
|
308
|
+
- lib/ooxml_parser/common_parser/common_data/ooxml_document_object/nokogiri_parsing_exception.rb
|
308
309
|
- lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_document_object_helper.rb
|
309
310
|
- lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_object_attribute_helper.rb
|
310
311
|
- lib/ooxml_parser/common_parser/common_data/paragraph.rb
|
@@ -480,6 +481,10 @@ files:
|
|
480
481
|
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition/sound_action/sound.rb
|
481
482
|
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition_properties/transition_properties.rb
|
482
483
|
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition_properties/transition_properties/wheel.rb
|
484
|
+
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_layout_file.rb
|
485
|
+
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_layouts_helper.rb
|
486
|
+
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_master_file.rb
|
487
|
+
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_masters_helper.rb
|
483
488
|
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_size.rb
|
484
489
|
- lib/ooxml_parser/pptx_parser/pptx_data/presentation/table_styles.rb
|
485
490
|
- lib/ooxml_parser/pptx_parser/pptx_parser.rb
|
@@ -589,7 +594,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
589
594
|
- !ruby/object:Gem::Version
|
590
595
|
version: '0'
|
591
596
|
requirements: []
|
592
|
-
rubygems_version: 3.2.
|
597
|
+
rubygems_version: 3.2.29
|
593
598
|
signing_key:
|
594
599
|
specification_version: 4
|
595
600
|
summary: OoxmlParser Gem
|