ooxml_parser 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +17 -1
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/chart_style.rb +4 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis.rb +9 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis/scaling.rb +20 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_size.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +3 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_body_properties/ooxml_shape_body_properties.rb +8 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/text_box.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/borders_properties.rb +2 -2
- data/lib/ooxml_parser/common_parser/common_data/color.rb +11 -20
- data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/color/ooxml_color.rb +57 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/theme_colors.rb +3 -6
- data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +17 -1
- data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +12 -1
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +4 -4
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_document_object_helper.rb +30 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb +5 -2
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb +9 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/text.rb +23 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb +2 -2
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +0 -1
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs.rb +2 -2
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/{tab_list/presentation_tab.rb → tabs/tab.rb} +17 -4
- data/lib/ooxml_parser/common_parser/common_data/table.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/table/margins/table_margins.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style.rb +31 -37
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties.rb +4 -0
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties/table_style_properties_helper.rb +2 -2
- data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell.rb +4 -4
- data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/border.rb +1 -1
- data/lib/ooxml_parser/common_parser/common_data/table/table_properties.rb +1 -16
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +14 -7
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comment.rb +2 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments_extended.rb +39 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments_extended/comment_extended.rb +24 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_background.rb +9 -12
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style.rb +1 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +51 -73
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/delimeter.rb +2 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_helper.rb +8 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +8 -56
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +2 -12
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/inserted.rb +15 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/sdt/sdt_content.rb +30 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/sdt/sdt_properties.rb +28 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/structured_document_tag.rb +26 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +1 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +10 -10
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_margins.rb +9 -16
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_properties.rb +11 -9
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +5 -2
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/theme_color.rb +1 -3
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide.rb +35 -24
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/common_slide_data.rb +26 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/common_slide_data/shape_tree.rb +33 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/connection_shape.rb +5 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/graphic_frame/graphic_frame.rb +2 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/presentation_notes.rb +21 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/shapes_grouping.rb +2 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide_helper.rb +3 -3
- data/lib/ooxml_parser/version.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +20 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill/pattern_fill.rb +2 -2
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts/font.rb +5 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +10 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/ole_objects.rb +18 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_view.rb +1 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part.rb +7 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter.rb +34 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column.rb +28 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups.rb +31 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups/sparkline_group.rb +113 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/table_style_info.rb +41 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing.rb +5 -11
- metadata +31 -14
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tab_list.rb +0 -36
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs/paragraph_tab.rb +0 -26
data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/common_slide_data/shape_tree.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
module OoxmlParser
|
2
|
+
# Class for parsing `spTree` tag
|
3
|
+
class ShapeTree < OOXMLDocumentObject
|
4
|
+
# @return [Array] elements of shape tree
|
5
|
+
attr_reader :elements
|
6
|
+
|
7
|
+
def initialize(parent: nil)
|
8
|
+
@elements = []
|
9
|
+
@parent = parent
|
10
|
+
end
|
11
|
+
|
12
|
+
# Parse ShapeTree object
|
13
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
14
|
+
# @return [ShapeTree] result of parsing
|
15
|
+
def parse(node)
|
16
|
+
node.xpath('*').each do |node_child|
|
17
|
+
case node_child.name
|
18
|
+
when 'sp'
|
19
|
+
@elements << DocxShape.new(parent: self).parse(node_child).dup
|
20
|
+
when 'pic'
|
21
|
+
@elements << DocxPicture.new(parent: self).parse(node_child)
|
22
|
+
when 'graphicFrame'
|
23
|
+
@elements << GraphicFrame.new(parent: self).parse(node_child)
|
24
|
+
when 'grpSp'
|
25
|
+
@elements << ShapesGrouping.new(parent: self).parse(node_child)
|
26
|
+
when 'cxnSp'
|
27
|
+
@elements << ConnectionShape.new(parent: self).parse(node_child)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
self
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/graphic_frame/graphic_frame.rb
CHANGED
@@ -30,6 +30,8 @@ module OoxmlParser
|
|
30
30
|
OOXMLDocumentObject.add_to_xmls_stack(OOXMLDocumentObject.get_link_from_rels(graphic_node_child.attribute('id').value))
|
31
31
|
graphic_data << Chart.parse
|
32
32
|
OOXMLDocumentObject.xmls_stack.pop
|
33
|
+
when 'oleObj'
|
34
|
+
graphic_data << OleObject.new(parent: self).parse(graphic_node_child)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module OoxmlParser
|
2
|
+
# Class for p:notes
|
3
|
+
class PresentationNotes < OOXMLDocumentObject
|
4
|
+
# @return [CommonSlideData] common slide data
|
5
|
+
attr_reader :common_slide_data
|
6
|
+
|
7
|
+
# Parse PresentationNotes object
|
8
|
+
# @param file [String] file to parse
|
9
|
+
# @return [PresentationNotes] result of parsing
|
10
|
+
def parse(file)
|
11
|
+
node = Nokogiri::XML(File.open(file))
|
12
|
+
node.xpath('p:notes/*').each do |node_child|
|
13
|
+
case node_child.name
|
14
|
+
when 'cSld'
|
15
|
+
@common_slide_data = CommonSlideData.new(parent: self).parse(node_child)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
self
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -14,6 +14,8 @@ module OoxmlParser
|
|
14
14
|
def parse(node)
|
15
15
|
node.xpath('*').each do |child_node|
|
16
16
|
case child_node.name
|
17
|
+
when 'cxnSp'
|
18
|
+
@elements << ConnectionShape.new(parent: self).parse(child_node)
|
17
19
|
when 'grpSpPr'
|
18
20
|
@properties = DocxShapeProperties.new(parent: self).parse(child_node)
|
19
21
|
when 'pic'
|
@@ -2,11 +2,11 @@ module OoxmlParser
|
|
2
2
|
# Methods to help working with slide data
|
3
3
|
module SlideHelper
|
4
4
|
def nonempty_elements
|
5
|
-
|
5
|
+
elements.reject { |cur_shape| cur_shape.text_body.paragraphs.first.characters.empty? }
|
6
6
|
end
|
7
7
|
|
8
8
|
def graphic_frames
|
9
|
-
|
9
|
+
elements.select { |cur_element| cur_element.is_a?(GraphicFrame) }
|
10
10
|
end
|
11
11
|
|
12
12
|
# Get transform property of object, by object type
|
@@ -44,7 +44,7 @@ module OoxmlParser
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def content_distribute(object, slide_size)
|
47
|
-
return [
|
47
|
+
return %i[horizontally vertically] if content_horizontal_align(object, slide_size) == :center && content_vertical_align(object, slide_size) == :middle
|
48
48
|
return [:horizontally] if content_horizontal_align(object, slide_size) == :center
|
49
49
|
return [:vertically] if content_vertical_align(object, slide_size) == :middle
|
50
50
|
end
|
data/lib/ooxml_parser/version.rb
CHANGED
@@ -98,7 +98,7 @@ module OoxmlParser
|
|
98
98
|
|
99
99
|
class << self
|
100
100
|
# @return [Array, Nokogiri::XML::Eelement] list of shared strings
|
101
|
-
|
101
|
+
attr_writer :shared_strings
|
102
102
|
attr_accessor :styles_node
|
103
103
|
|
104
104
|
# Accessor for shared string. Initialization for this array
|
@@ -4,11 +4,31 @@ module OoxmlParser
|
|
4
4
|
class Fill < OOXMLDocumentObject
|
5
5
|
# @return [PatternFill] pattern fill
|
6
6
|
attr_accessor :pattern_fill
|
7
|
+
# @return [Color] second color
|
8
|
+
attr_reader :color2
|
9
|
+
# @return [String] id of file
|
10
|
+
attr_reader :id
|
11
|
+
# @return [FileReference] file of fill
|
12
|
+
attr_reader :file
|
13
|
+
# @return [Symbol] value
|
14
|
+
attr_reader :value
|
7
15
|
|
8
16
|
# Parse Fill data
|
9
17
|
# @param [Nokogiri::XML:Element] node with Fill data
|
10
18
|
# @return [Fill] value of Fill data
|
11
19
|
def parse(node)
|
20
|
+
node.attributes.each do |key, value|
|
21
|
+
case key
|
22
|
+
when 'color2'
|
23
|
+
@color2 = Color.new(parent: self).parse_hex_string(value.value.split(' ').first.delete('#'))
|
24
|
+
when 'id'
|
25
|
+
@id = value.value.to_s
|
26
|
+
@file = FileReference.new(parent: self).parse(node)
|
27
|
+
when 'type'
|
28
|
+
@type = value_to_symbol(value)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
12
32
|
node.xpath('*').each do |node_child|
|
13
33
|
case node_child.name
|
14
34
|
when 'patternFill'
|
@@ -22,9 +22,9 @@ module OoxmlParser
|
|
22
22
|
node.xpath('*').each do |node_child|
|
23
23
|
case node_child.name
|
24
24
|
when 'fgColor'
|
25
|
-
@foreground_color =
|
25
|
+
@foreground_color = OoxmlColor.new(parent: self).parse(node_child)
|
26
26
|
when 'bgColor'
|
27
|
-
@background_color =
|
27
|
+
@background_color = OoxmlColor.new(parent: self).parse(node_child)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
self
|
@@ -2,6 +2,8 @@ module OoxmlParser
|
|
2
2
|
# Parsing `fonts` tag
|
3
3
|
class Font < OOXMLDocumentObject
|
4
4
|
attr_accessor :name, :size, :font_style, :color
|
5
|
+
# @return [ValuedChild] vertical alignment of font
|
6
|
+
attr_reader :vertical_alignment
|
5
7
|
|
6
8
|
def initialize(parent: nil)
|
7
9
|
@name = 'Calibri'
|
@@ -26,7 +28,9 @@ module OoxmlParser
|
|
26
28
|
when 'u'
|
27
29
|
@font_style.underlined = Underline.new(:single)
|
28
30
|
when 'color'
|
29
|
-
@color =
|
31
|
+
@color = OoxmlColor.new(parent: self).parse(node_child)
|
32
|
+
when 'vertAlign'
|
33
|
+
@vertical_alignment = ValuedChild.new(:symbol, parent: self).parse(node_child)
|
30
34
|
end
|
31
35
|
end
|
32
36
|
self
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative 'worksheet/excel_comments'
|
2
|
+
require_relative 'worksheet/ole_objects'
|
2
3
|
require_relative 'worksheet/sheet_format_properties'
|
3
4
|
require_relative 'worksheet/sheet_view'
|
4
5
|
require_relative 'worksheet/table_part'
|
@@ -14,6 +15,10 @@ module OoxmlParser
|
|
14
15
|
attr_accessor :xml_name
|
15
16
|
# @return [Relationships] array of relationships
|
16
17
|
attr_accessor :relationships
|
18
|
+
# @return [Relationships] array of ole objects
|
19
|
+
attr_accessor :ole_objects
|
20
|
+
# @return [ExtensionList] list of extensions
|
21
|
+
attr_accessor :extension_list
|
17
22
|
|
18
23
|
def initialize
|
19
24
|
@columns = []
|
@@ -88,7 +93,7 @@ module OoxmlParser
|
|
88
93
|
when 'cols'
|
89
94
|
worksheet.columns = XlsxColumnProperties.parse_list(worksheet_node_child, parent: worksheet)
|
90
95
|
when 'autoFilter'
|
91
|
-
worksheet.autofilter =
|
96
|
+
worksheet.autofilter = Autofilter.new(parent: self).parse(worksheet_node_child)
|
92
97
|
when 'tableParts'
|
93
98
|
worksheet_node_child.xpath('*').each do |part_node|
|
94
99
|
worksheet.table_parts << TablePart.new(parent: worksheet).parse(part_node)
|
@@ -97,6 +102,10 @@ module OoxmlParser
|
|
97
102
|
worksheet_node_child.xpath('*').each do |view_child|
|
98
103
|
worksheet.sheet_views << SheetView.new(parent: worksheet).parse(view_child)
|
99
104
|
end
|
105
|
+
when 'oleObjects'
|
106
|
+
worksheet.ole_objects = OleObjects.new(parent: worksheet).parse(worksheet_node_child)
|
107
|
+
when 'extLst'
|
108
|
+
worksheet.extension_list = ExtensionList.new(parent: self).parse(worksheet_node_child)
|
100
109
|
end
|
101
110
|
end
|
102
111
|
worksheet.comments = ExcelComments.parse_file(File.basename(path_to_xml_file), OOXMLDocumentObject.path_to_folder)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module OoxmlParser
|
2
|
+
# Class for parsing `oleObjects`
|
3
|
+
class OleObjects < OOXMLDocumentObject
|
4
|
+
# Parse OleObjects object
|
5
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
6
|
+
# @return [Array] list of OleObjects
|
7
|
+
def parse(node)
|
8
|
+
list = []
|
9
|
+
node.xpath('*').each do |node_child|
|
10
|
+
case node_child.name
|
11
|
+
when 'AlternateContent'
|
12
|
+
list << AlternateContent.new(parent: self).parse(node_child)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
list
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -18,7 +18,7 @@ module OoxmlParser
|
|
18
18
|
# @param node [Nokogiri::XML:Element] node to parse
|
19
19
|
# @return [SheetView] result of parsing
|
20
20
|
def parse(node)
|
21
|
-
node.attributes.
|
21
|
+
node.attributes.each_key do |key|
|
22
22
|
case key
|
23
23
|
when 'showGridLines'
|
24
24
|
@show_gridlines = attribute_enabled?(node, key)
|
@@ -1,10 +1,14 @@
|
|
1
|
+
require_relative 'table_part/autofilter'
|
1
2
|
require_relative 'table_part/extension_list'
|
3
|
+
require_relative 'table_part/table_style_info'
|
2
4
|
module OoxmlParser
|
3
5
|
# Class for `tablePart` data
|
4
6
|
class TablePart < OOXMLDocumentObject
|
5
7
|
attr_accessor :name, :display_name, :reference, :autofilter, :columns
|
6
8
|
# @return [ExtensionList] list of extensions
|
7
9
|
attr_accessor :extension_list
|
10
|
+
# @return [TableStyleInfo] describe style of table
|
11
|
+
attr_accessor :table_style_info
|
8
12
|
|
9
13
|
# Parse TablePart object
|
10
14
|
# @param node [Nokogiri::XML:Element] node to parse
|
@@ -26,9 +30,11 @@ module OoxmlParser
|
|
26
30
|
table_node.xpath('*').each do |node_child|
|
27
31
|
case node_child.name
|
28
32
|
when 'autoFilter'
|
29
|
-
@autofilter =
|
33
|
+
@autofilter = Autofilter.new(parent: self).parse(node_child)
|
30
34
|
when 'extLst'
|
31
35
|
@extension_list = ExtensionList.new(parent: self).parse(node_child)
|
36
|
+
when 'tableStyleInfo'
|
37
|
+
@table_style_info = TableStyleInfo.new(parent: self).parse(node_child)
|
32
38
|
end
|
33
39
|
end
|
34
40
|
self
|
data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'autofilter/filter_column'
|
2
|
+
module OoxmlParser
|
3
|
+
# Class for `autoFilter` data
|
4
|
+
# AutoFilter temporarily hides rows based on a
|
5
|
+
# filter criteria, which is applied column by column
|
6
|
+
# to a table of data in the worksheet.
|
7
|
+
# This collection expresses AutoFilter settings.
|
8
|
+
class Autofilter < OOXMLDocumentObject
|
9
|
+
# @return [Coordinates] Reference to the cell range to which the AutoFilter is applied.
|
10
|
+
attr_accessor :ref
|
11
|
+
# @return [FilterColumn] data of filter column
|
12
|
+
attr_accessor :filter_column
|
13
|
+
|
14
|
+
# Parse Autofilter data
|
15
|
+
# @param [Nokogiri::XML:Element] node with Autofilter data
|
16
|
+
# @return [Autofilter] value of Autofilter data
|
17
|
+
def parse(node)
|
18
|
+
node.attributes.each do |key, value|
|
19
|
+
case key
|
20
|
+
when 'ref'
|
21
|
+
@ref = Coordinates.parser_coordinates_range(value.value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
node.xpath('*').each do |node_child|
|
26
|
+
case node_child.name
|
27
|
+
when 'filterColumn'
|
28
|
+
@filter_column = FilterColumn.new(parent: self).parse(node_child)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
self
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module OoxmlParser
|
2
|
+
# Class for `filterColumn` data
|
3
|
+
# The filterColumn collection identifies a particular
|
4
|
+
# column in the AutoFilter range and specifies
|
5
|
+
# filter information that has been applied to this column.
|
6
|
+
class FilterColumn < OOXMLDocumentObject
|
7
|
+
# @return [True, False] Flag indicating whether the filter button is visible.
|
8
|
+
attr_accessor :show_button
|
9
|
+
|
10
|
+
def initialize(parent: nil)
|
11
|
+
@show_button = true
|
12
|
+
@parent = parent
|
13
|
+
end
|
14
|
+
|
15
|
+
# Parse FilterColumn data
|
16
|
+
# @param [Nokogiri::XML:Element] node with FilterColumn data
|
17
|
+
# @return [FilterColumn] value of FilterColumn data
|
18
|
+
def parse(node)
|
19
|
+
node.attributes.each do |key, value|
|
20
|
+
case key
|
21
|
+
when 'showButton'
|
22
|
+
@show_button = attribute_enabled?(value)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
self
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,9 +1,12 @@
|
|
1
|
+
require_relative 'extension/sparkline_groups'
|
1
2
|
require_relative 'extension/x14_table'
|
2
3
|
module OoxmlParser
|
3
4
|
# Class for `ext` data
|
4
5
|
class Extension < OOXMLDocumentObject
|
5
6
|
# @return [X14Table] table data in x14 namespace
|
6
7
|
attr_accessor :table
|
8
|
+
# @return [SparklineGroups] list of groups
|
9
|
+
attr_reader :sparkline_groups
|
7
10
|
|
8
11
|
# Parse Extension data
|
9
12
|
# @param [Nokogiri::XML:Element] node with Extension data
|
@@ -13,6 +16,8 @@ module OoxmlParser
|
|
13
16
|
case column_node.name
|
14
17
|
when 'table'
|
15
18
|
@table = X14Table.new(parent: self).parse(column_node)
|
19
|
+
when 'sparklineGroups'
|
20
|
+
@sparkline_groups = SparklineGroups.new(parent: self).parse(column_node)
|
16
21
|
end
|
17
22
|
end
|
18
23
|
self
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative 'sparkline_groups/sparkline_group'
|
2
|
+
module OoxmlParser
|
3
|
+
# Class for `sparklineGroups` data
|
4
|
+
class SparklineGroups < OOXMLDocumentObject
|
5
|
+
# @return [Array<SparklineGroup>] list of sparkline group
|
6
|
+
attr_reader :sparklines_groups
|
7
|
+
|
8
|
+
def initialize(parent: nil)
|
9
|
+
@sparklines_groups = []
|
10
|
+
@parent = parent
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [Array, SparklineGroups] accessor
|
14
|
+
def [](key)
|
15
|
+
sparklines_groups[key]
|
16
|
+
end
|
17
|
+
|
18
|
+
# Parse SparklineGroups data
|
19
|
+
# @param [Nokogiri::XML:Element] node with SparklineGroups data
|
20
|
+
# @return [SparklineGroups] value of SparklineGroups data
|
21
|
+
def parse(node)
|
22
|
+
node.xpath('*').each do |column_node|
|
23
|
+
case column_node.name
|
24
|
+
when 'sparklineGroup'
|
25
|
+
@sparklines_groups << SparklineGroup.new(parent: self).parse(column_node)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
self
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module OoxmlParser
|
2
|
+
# Class for `sparklineGroup` data
|
3
|
+
class SparklineGroup < OOXMLDocumentObject
|
4
|
+
# @return [Symbol] display empty cells as
|
5
|
+
attr_reader :display_empty_cells_as
|
6
|
+
# @return [True, False] display empty cells as
|
7
|
+
attr_reader :display_hidden
|
8
|
+
# @return [True, False] display x axis
|
9
|
+
attr_reader :display_x_axis
|
10
|
+
# @return [True, False] right to left
|
11
|
+
attr_reader :right_to_left
|
12
|
+
# @return [True, False] minimal axis type
|
13
|
+
attr_reader :min_axis_type
|
14
|
+
# @return [True, False] maximal axis type
|
15
|
+
attr_reader :max_axis_type
|
16
|
+
# @return [Float] manual minimum value
|
17
|
+
attr_reader :manual_min
|
18
|
+
# @return [[Float] manual maximum value
|
19
|
+
attr_reader :manual_max
|
20
|
+
# @return [Symbol] type of group
|
21
|
+
attr_reader :type
|
22
|
+
# @return [OoxmlSize] line weight
|
23
|
+
attr_reader :line_weight
|
24
|
+
# @return [True, False] show high point
|
25
|
+
attr_reader :high_point
|
26
|
+
# @return [True, False] show low point
|
27
|
+
attr_reader :low_point
|
28
|
+
# @return [True, False] show first point
|
29
|
+
attr_reader :first_point
|
30
|
+
# @return [True, False] show last point
|
31
|
+
attr_reader :last_point
|
32
|
+
# @return [True, False] show negative point
|
33
|
+
attr_reader :negative_point
|
34
|
+
# @return [True, False] show markers
|
35
|
+
attr_reader :markers
|
36
|
+
# @return [OoxmlColor] color of series
|
37
|
+
attr_reader :color_series
|
38
|
+
# @return [OoxmlColor] high points color
|
39
|
+
attr_reader :color_high
|
40
|
+
# @return [OoxmlColor] low points color
|
41
|
+
attr_reader :color_low
|
42
|
+
# @return [OoxmlColor] first points color
|
43
|
+
attr_reader :color_first
|
44
|
+
# @return [OoxmlColor] last points color
|
45
|
+
attr_reader :color_last
|
46
|
+
# @return [OoxmlColor] negative points color
|
47
|
+
attr_reader :color_negative
|
48
|
+
# @return [OoxmlColor] markers color
|
49
|
+
attr_reader :color_markers
|
50
|
+
|
51
|
+
# Parse SparklineGroup
|
52
|
+
# @param [Nokogiri::XML:Node] node with SparklineGroup
|
53
|
+
# @return [SparklineGroup] result of parsing
|
54
|
+
def parse(node)
|
55
|
+
node.attributes.each do |key, value|
|
56
|
+
case key
|
57
|
+
when 'type'
|
58
|
+
@type = value_to_symbol(value)
|
59
|
+
when 'displayEmptyCellsAs'
|
60
|
+
@display_empty_cells_as = value_to_symbol(value)
|
61
|
+
when 'displayHidden'
|
62
|
+
@display_hidden = attribute_enabled?(value)
|
63
|
+
when 'displayXAxis'
|
64
|
+
@display_x_axis = attribute_enabled?(value)
|
65
|
+
when 'rightToLeft'
|
66
|
+
@right_to_left = attribute_enabled?(value)
|
67
|
+
when 'minAxisType'
|
68
|
+
@min_axis_type = value_to_symbol(value)
|
69
|
+
when 'maxAxisType'
|
70
|
+
@max_axis_type = value_to_symbol(value)
|
71
|
+
when 'manualMin'
|
72
|
+
@manual_min = value.value.to_f
|
73
|
+
when 'manualMax'
|
74
|
+
@manual_max = value.value.to_f
|
75
|
+
when 'lineWeight'
|
76
|
+
@line_weight = OoxmlSize.new(value.value.to_f, :point)
|
77
|
+
when 'high'
|
78
|
+
@high_point = attribute_enabled?(value)
|
79
|
+
when 'low'
|
80
|
+
@low_point = attribute_enabled?(value)
|
81
|
+
when 'first'
|
82
|
+
@first_point = attribute_enabled?(value)
|
83
|
+
when 'last'
|
84
|
+
@last_point = attribute_enabled?(value)
|
85
|
+
when 'negative'
|
86
|
+
@negative_point = attribute_enabled?(value)
|
87
|
+
when 'markers'
|
88
|
+
@markers = attribute_enabled?(value)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
node.xpath('*').each do |node_child|
|
93
|
+
case node_child.name
|
94
|
+
when 'colorSeries'
|
95
|
+
@color_series = OoxmlColor.new(parent: self).parse(node_child)
|
96
|
+
when 'colorHigh'
|
97
|
+
@color_high = OoxmlColor.new(parent: self).parse(node_child)
|
98
|
+
when 'colorLow'
|
99
|
+
@color_low = OoxmlColor.new(parent: self).parse(node_child)
|
100
|
+
when 'colorFirst'
|
101
|
+
@color_first = OoxmlColor.new(parent: self).parse(node_child)
|
102
|
+
when 'colorLast'
|
103
|
+
@color_last = OoxmlColor.new(parent: self).parse(node_child)
|
104
|
+
when 'colorNegative'
|
105
|
+
@color_negative = OoxmlColor.new(parent: self).parse(node_child)
|
106
|
+
when 'colorMarkers'
|
107
|
+
@color_markers = OoxmlColor.new(parent: self).parse(node_child)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
self
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|