ooxml_parser 0.6.0 → 0.7.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.
- checksums.yaml +4 -4
- data/lib/ooxml_parser.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart.rb +6 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series.rb +2 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text.rb +0 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_distance_from_text.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_coordinates.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_size.rb +4 -1
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +4 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_picture.rb +0 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/ooxml_text_box.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_color_scheme.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/custom_geometry/docx_custom_geometry/docx_shape_line_path/docx_shape_line_element.rb +0 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_line.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/old_docx_picture.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_properties.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/borders_properties.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/color.rb +36 -4
- data/lib/ooxml_parser/common_parser/common_data/color/ooxml_color.rb +5 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/hsl_color.rb +11 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/scheme_color.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/theme_colors.rb +4 -0
- data/lib/ooxml_parser/common_parser/common_data/content_types.rb +2 -0
- data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_default.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_override.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +7 -0
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +24 -2
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +0 -8
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering_properties.rb +2 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +16 -13
- data/lib/ooxml_parser/common_parser/common_data/table.rb +2 -0
- data/lib/ooxml_parser/common_parser/common_data/table/margins/paragraph_margins.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/table/margins/table_margins.rb +7 -0
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_position.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties/table_style_properties_helper.rb +4 -4
- data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties.rb +4 -7
- data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/borders.rb +6 -0
- data/lib/ooxml_parser/common_parser/common_data/table/table_grid.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/underline.rb +4 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +27 -3
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments/comment.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style.rb +2 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +22 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/bookmark_end.rb +1 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/comment_range_start.rb +1 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/pre_sub_superscript.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +13 -3
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +4 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape.rb +0 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/frame_properties.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/indents.rb +2 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +0 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb +5 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_size.rb +1 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles.rb +2 -0
- data/lib/ooxml_parser/docx_parser/docx_parser.rb +3 -0
- data/lib/ooxml_parser/name.rb +1 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +2 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/theme_color.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide_helper.rb +15 -1
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_parser.rb +3 -0
- data/lib/ooxml_parser/version.rb +2 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +21 -2
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb +3 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache.rb +41 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb +37 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source.rb +33 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source/worksheet_source.rb +26 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb +2 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/xf.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +2 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts/font.rb +3 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments.rb +4 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_column_properties.rb +4 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_parser.rb +3 -0
- metadata +64 -4
|
@@ -6,6 +6,10 @@ module OoxmlParser
|
|
|
6
6
|
# @return [Hash] list of colors
|
|
7
7
|
attr_accessor :list
|
|
8
8
|
|
|
9
|
+
# Parse color theme
|
|
10
|
+
# @param theme [String] name of theme
|
|
11
|
+
# @param tint [Integer] tint of theme
|
|
12
|
+
# @return [Color] color of theme
|
|
9
13
|
def parse_color_theme(theme, tint)
|
|
10
14
|
themes_array = root_object.theme.color_scheme.values
|
|
11
15
|
# TODO: if no swap performed - incorrect color parsing. But don't know why it needed
|
|
@@ -18,6 +18,8 @@ module OoxmlParser
|
|
|
18
18
|
@content_types_list[key]
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
# Parse ContentTypes object
|
|
22
|
+
# @return [ContentTypes] result of parsing
|
|
21
23
|
def parse
|
|
22
24
|
doc = Nokogiri::XML.parse(File.open("#{OOXMLDocumentObject.path_to_folder}/[Content_Types].xml"))
|
|
23
25
|
node = doc.xpath('*').first
|
|
@@ -8,6 +8,9 @@ module OoxmlParser
|
|
|
8
8
|
# @return [String] extension
|
|
9
9
|
attr_reader :extension
|
|
10
10
|
|
|
11
|
+
# Parse ContentTypeDefault object
|
|
12
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
|
13
|
+
# @return [ContentTypeDefault] result of parsing
|
|
11
14
|
def parse(node)
|
|
12
15
|
node.attributes.each do |key, value|
|
|
13
16
|
case key
|
|
@@ -8,6 +8,9 @@ module OoxmlParser
|
|
|
8
8
|
# @return [String] part name
|
|
9
9
|
attr_reader :part_name
|
|
10
10
|
|
|
11
|
+
# Parse ContentTypeOverride object
|
|
12
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
|
13
|
+
# @return [ContentTypeOverride] result of parsing
|
|
11
14
|
def parse(node)
|
|
12
15
|
node.attributes.each do |key, value|
|
|
13
16
|
case key
|
|
@@ -29,6 +29,9 @@ module OoxmlParser
|
|
|
29
29
|
coordinates
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
# Parse range of coordinates
|
|
33
|
+
# @param arguments_string [String] data to parse
|
|
34
|
+
# @return [Array] result
|
|
32
35
|
def parser_coordinates_range(arguments_string)
|
|
33
36
|
return parse_coordinates_array(arguments_string) if arguments_string.include?(',')
|
|
34
37
|
return warn "Formulas with # is unsupported: #{arguments_string}" if arguments_string.include?('#')
|
|
@@ -133,6 +136,7 @@ module OoxmlParser
|
|
|
133
136
|
column_number > other_cell.column_number
|
|
134
137
|
end
|
|
135
138
|
|
|
139
|
+
# @return [String] result of convert of object to string
|
|
136
140
|
def to_s
|
|
137
141
|
"#{@column}#{@row} #{@list ? "list: #{@list}" : ''}"
|
|
138
142
|
end
|
|
@@ -141,6 +145,9 @@ module OoxmlParser
|
|
|
141
145
|
@column.nil? && @list.nil? && @row.nil?
|
|
142
146
|
end
|
|
143
147
|
|
|
148
|
+
# Compare this object to other
|
|
149
|
+
# @param other [Object] any other object
|
|
150
|
+
# @return [True, False] result of comparision
|
|
144
151
|
def ==(other)
|
|
145
152
|
other.is_a?(Coordinates) ? (@row == other.row && @column == other.column) : false
|
|
146
153
|
end
|
|
@@ -19,7 +19,12 @@ module OoxmlParser
|
|
|
19
19
|
@parent = parent
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
# Compare this object to other
|
|
23
|
+
# @param other [Object] any other object
|
|
24
|
+
# @return [True, False] result of comparision
|
|
22
25
|
def ==(other)
|
|
26
|
+
return false if self.class != other.class
|
|
27
|
+
|
|
23
28
|
instance_variables.each do |current_attribute|
|
|
24
29
|
next if current_attribute == :@parent
|
|
25
30
|
return false unless instance_variable_get(current_attribute) == other.instance_variable_get(current_attribute)
|
|
@@ -44,9 +49,11 @@ module OoxmlParser
|
|
|
44
49
|
attr_accessor :path_to_folder
|
|
45
50
|
|
|
46
51
|
# @param path_to_file [String] file
|
|
52
|
+
# @param ignore_system [True, False] should host system be ignored, since
|
|
53
|
+
# this method is OS-dependent
|
|
47
54
|
# @return [True, False] Check if file is protected by password on open
|
|
48
|
-
def encrypted_file?(path_to_file)
|
|
49
|
-
if Gem.win_platform?
|
|
55
|
+
def encrypted_file?(path_to_file, ignore_system: false)
|
|
56
|
+
if Gem.win_platform? || ignore_system
|
|
50
57
|
warn 'FileMagic and checking file for encryption is not supported on Windows'
|
|
51
58
|
return false
|
|
52
59
|
end
|
|
@@ -63,6 +70,9 @@ module OoxmlParser
|
|
|
63
70
|
false
|
|
64
71
|
end
|
|
65
72
|
|
|
73
|
+
# Copy this file and rename to zip
|
|
74
|
+
# @param path [String] path to file
|
|
75
|
+
# @return [String] path to result zip
|
|
66
76
|
def copy_file_and_rename_to_zip(path)
|
|
67
77
|
file_name = File.basename(path)
|
|
68
78
|
tmp_folder = Dir.mktmpdir('ruby-ooxml-parser')
|
|
@@ -75,6 +85,10 @@ module OoxmlParser
|
|
|
75
85
|
file_path
|
|
76
86
|
end
|
|
77
87
|
|
|
88
|
+
# Unzip specified file
|
|
89
|
+
# @param path_to_file [String] path to zip file
|
|
90
|
+
# @param destination [String] folder to extract
|
|
91
|
+
# @return [void]
|
|
78
92
|
def unzip_file(path_to_file, destination)
|
|
79
93
|
Zip.warn_invalid_date = false
|
|
80
94
|
Zip::File.open(path_to_file) do |zip_file|
|
|
@@ -88,14 +102,19 @@ module OoxmlParser
|
|
|
88
102
|
end
|
|
89
103
|
end
|
|
90
104
|
|
|
105
|
+
# @return [String] dir to base of file
|
|
91
106
|
def dir
|
|
92
107
|
OOXMLDocumentObject.path_to_folder + File.dirname(OOXMLDocumentObject.xmls_stack.last) + '/'
|
|
93
108
|
end
|
|
94
109
|
|
|
110
|
+
# @return [String] path to current xml file
|
|
95
111
|
def current_xml
|
|
96
112
|
OOXMLDocumentObject.path_to_folder + OOXMLDocumentObject.xmls_stack.last
|
|
97
113
|
end
|
|
98
114
|
|
|
115
|
+
# Add file to parsing stack
|
|
116
|
+
# @param path [String] path of file to add to stack
|
|
117
|
+
# @return [void]
|
|
99
118
|
def add_to_xmls_stack(path)
|
|
100
119
|
OOXMLDocumentObject.xmls_stack << if path.include?('..')
|
|
101
120
|
"#{File.dirname(OOXMLDocumentObject.xmls_stack.last)}/#{path}"
|
|
@@ -106,6 +125,9 @@ module OoxmlParser
|
|
|
106
125
|
end
|
|
107
126
|
end
|
|
108
127
|
|
|
128
|
+
# Get link to file from rels file
|
|
129
|
+
# @param id [String] file to get
|
|
130
|
+
# @return [String] result
|
|
109
131
|
def get_link_from_rels(id)
|
|
110
132
|
rels_path = dir + "_rels/#{File.basename(OOXMLDocumentObject.xmls_stack.last)}.rels"
|
|
111
133
|
raise LoadError, "Cannot find .rels file by path: #{rels_path}" unless File.exist?(rels_path)
|
|
@@ -40,14 +40,17 @@ module OoxmlParser
|
|
|
40
40
|
text.empty?
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
+
# @return [String] instruction applied to paragraph
|
|
43
44
|
def instruction
|
|
44
45
|
parent.instruction
|
|
45
46
|
end
|
|
46
47
|
|
|
48
|
+
# @return [True, False] is page number applyed
|
|
47
49
|
def page_number
|
|
48
50
|
parent.page_numbering?
|
|
49
51
|
end
|
|
50
52
|
|
|
53
|
+
# @return [Hyperlink] link of run
|
|
51
54
|
def link
|
|
52
55
|
parent.parent.hyperlink
|
|
53
56
|
end
|
|
@@ -29,10 +29,6 @@ module OoxmlParser
|
|
|
29
29
|
attr_accessor :shade
|
|
30
30
|
# @return [RunStyle] run style
|
|
31
31
|
attr_accessor :run_style
|
|
32
|
-
# @return [Float]
|
|
33
|
-
# This element specifies the font size which shall be applied to all
|
|
34
|
-
# complex script characters in the contents of this run when displayed
|
|
35
|
-
attr_accessor :font_size_complex
|
|
36
32
|
|
|
37
33
|
def initialize(parent: nil)
|
|
38
34
|
@font_name = ''
|
|
@@ -50,8 +46,6 @@ module OoxmlParser
|
|
|
50
46
|
case key
|
|
51
47
|
when 'sz'
|
|
52
48
|
@font_size = value.value.to_f / 100.0
|
|
53
|
-
when 'szCs'
|
|
54
|
-
@font_size_complex = node.attribute('val').value.to_i / 2.0
|
|
55
49
|
when 'spc'
|
|
56
50
|
@space = OoxmlSize.new(value.value.to_f, :one_100th_point)
|
|
57
51
|
when 'b'
|
|
@@ -66,8 +60,6 @@ module OoxmlParser
|
|
|
66
60
|
case value.value.to_i
|
|
67
61
|
when -25_000, -30_000
|
|
68
62
|
@baseline = :subscript
|
|
69
|
-
when 30_000
|
|
70
|
-
@baseline = :superscript
|
|
71
63
|
when 0
|
|
72
64
|
@baseline = :baseline
|
|
73
65
|
end
|
|
@@ -10,6 +10,7 @@ module OoxmlParser
|
|
|
10
10
|
@parent = parent
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
+
# @return [AbstractNumbering] AbstractNumbering of current properties
|
|
13
14
|
def abstruct_numbering
|
|
14
15
|
root_object.numbering.properties_by_num_id(@numbering_properties)
|
|
15
16
|
end
|
|
@@ -29,6 +30,7 @@ module OoxmlParser
|
|
|
29
30
|
self
|
|
30
31
|
end
|
|
31
32
|
|
|
33
|
+
# @return [AbstractNumbering] level list of current numbering
|
|
32
34
|
def numbering_level_current
|
|
33
35
|
abstruct_numbering.level_list.each do |current_ilvl|
|
|
34
36
|
return current_ilvl if current_ilvl.ilvl == @ilvl
|
|
@@ -24,28 +24,26 @@ module OoxmlParser
|
|
|
24
24
|
@line_rule = line_rule
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
# Compare this object to other
|
|
28
|
+
# @param other [Object] any other object
|
|
29
|
+
# @return [True, False] result of comparision
|
|
27
30
|
def ==(other)
|
|
28
31
|
self.line_rule = :at_least if line_rule == 'atLeast'
|
|
29
32
|
self.line_rule = :multiple if line_rule == :auto
|
|
30
33
|
other.line_rule = :multiple if other.line_rule == :auto
|
|
31
|
-
|
|
32
|
-
return true if self.class == NilClass && other.class == NilClass
|
|
34
|
+
self.line_rule = line_rule.to_sym if line_rule.instance_of?(String)
|
|
33
35
|
|
|
34
|
-
|
|
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
|
|
35
41
|
else
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if @before == other.before &&
|
|
39
|
-
@after == other.after &&
|
|
40
|
-
@line == other.line &&
|
|
41
|
-
@line_rule.to_s == other.line_rule.to_s
|
|
42
|
-
true
|
|
43
|
-
else
|
|
44
|
-
false
|
|
45
|
-
end
|
|
42
|
+
false
|
|
46
43
|
end
|
|
47
44
|
end
|
|
48
45
|
|
|
46
|
+
# @return [String] result of convert of object to string
|
|
49
47
|
def to_s
|
|
50
48
|
result_string = ''
|
|
51
49
|
variables = instance_variables
|
|
@@ -55,10 +53,15 @@ module OoxmlParser
|
|
|
55
53
|
result_string
|
|
56
54
|
end
|
|
57
55
|
|
|
56
|
+
# Method to copy object
|
|
57
|
+
# @return [Spacing] copied object
|
|
58
58
|
def copy
|
|
59
59
|
Spacing.new(@before, @after, @line, @line_rule)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
+
# Round value of spacing
|
|
63
|
+
# @param count_of_digits [Integer] how digits to left
|
|
64
|
+
# @return [Spacing] result of round
|
|
62
65
|
def round(count_of_digits = 1)
|
|
63
66
|
before = @before.to_f.round(count_of_digits)
|
|
64
67
|
after = @after.to_f.round(count_of_digits)
|
|
@@ -17,10 +17,12 @@ module OoxmlParser
|
|
|
17
17
|
|
|
18
18
|
alias table_properties properties
|
|
19
19
|
|
|
20
|
+
# @return [String] result of convert of object to string
|
|
20
21
|
def to_s
|
|
21
22
|
"Rows: #{@rows.join(',')}"
|
|
22
23
|
end
|
|
23
24
|
|
|
25
|
+
# @return [String] inspect of object for debug means
|
|
24
26
|
def inspect
|
|
25
27
|
to_s
|
|
26
28
|
end
|
|
@@ -15,6 +15,9 @@ module OoxmlParser
|
|
|
15
15
|
@parent = parent
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
# Parse ParagraphMargins object
|
|
19
|
+
# @param text_body_props_node [Nokogiri::XML:Element] node to parse
|
|
20
|
+
# @return [ParagraphMargins] result of parsing
|
|
18
21
|
def parse(text_body_props_node)
|
|
19
22
|
text_body_props_node.attributes.each do |key, value|
|
|
20
23
|
case key
|
|
@@ -15,6 +15,9 @@ module OoxmlParser
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
# TODO: Separate @is_default attribute and remove this method
|
|
18
|
+
# Compare this object to other
|
|
19
|
+
# @param other [Object] any other object
|
|
20
|
+
# @return [True, False] result of comparision
|
|
18
21
|
def ==(other)
|
|
19
22
|
instance_variables.each do |current_attribute|
|
|
20
23
|
next if current_attribute == :@parent
|
|
@@ -24,10 +27,14 @@ module OoxmlParser
|
|
|
24
27
|
true
|
|
25
28
|
end
|
|
26
29
|
|
|
30
|
+
# @return [String] result of convert of object to string
|
|
27
31
|
def to_s
|
|
28
32
|
'Default: ' + is_default.to_s + ' top: ' + @top.to_s + ', bottom: ' + @bottom.to_s + ', left: ' + @left.to_s + ', right: ' + @right.to_s
|
|
29
33
|
end
|
|
30
34
|
|
|
35
|
+
# Parse TableMargins object
|
|
36
|
+
# @param margin_node [Nokogiri::XML:Element] node to parse
|
|
37
|
+
# @return [TableMargins] result of parsing
|
|
31
38
|
def parse(margin_node)
|
|
32
39
|
margin_node.xpath('*').each do |cell_margin_node|
|
|
33
40
|
case cell_margin_node.name
|
|
@@ -6,6 +6,7 @@ module OoxmlParser
|
|
|
6
6
|
attr_accessor :left, :right, :top, :bottom, :position_x, :position_y, :horizontal_anchor, :vertical_anchor, :vertical_align_from_anchor,
|
|
7
7
|
:horizontal_align_from_anchor
|
|
8
8
|
|
|
9
|
+
# @return [String] result of convert of object to string
|
|
9
10
|
def to_s
|
|
10
11
|
"Table position left: #{left}, "\
|
|
11
12
|
"right: #{right}, "\
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
module OoxmlParser
|
|
4
4
|
# Helper method for working with TableStyleProperties
|
|
5
5
|
module TableStylePropertiesHelper
|
|
6
|
+
# [Hash] short names for table styles
|
|
6
7
|
TABLE_STYLES_NAMES_HASH = { first_column: :firstCol,
|
|
7
8
|
last_column: :lastCol,
|
|
8
9
|
whole_table: :wholeTbl,
|
|
@@ -17,12 +18,11 @@ module OoxmlParser
|
|
|
17
18
|
first_row: :firstRow,
|
|
18
19
|
last_row: :lastRow }.freeze
|
|
19
20
|
|
|
20
|
-
TABLE_STYLES_NAMES_HASH.
|
|
21
|
-
define_method(
|
|
21
|
+
TABLE_STYLES_NAMES_HASH.each do |key, value|
|
|
22
|
+
define_method(key) do
|
|
22
23
|
@table_style_properties_list.each do |table_style|
|
|
23
|
-
return table_style if table_style.type ==
|
|
24
|
+
return table_style if table_style.type == value
|
|
24
25
|
end
|
|
25
|
-
nil
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
@@ -4,7 +4,7 @@ require_relative 'grid_span'
|
|
|
4
4
|
module OoxmlParser
|
|
5
5
|
# Class for parsing 'w:tcPr' element
|
|
6
6
|
class CellProperties < OOXMLDocumentObject
|
|
7
|
-
attr_accessor :fill, :color, :borders, :text_direction, :anchor, :
|
|
7
|
+
attr_accessor :fill, :color, :borders, :text_direction, :anchor, :table_cell_width, :borders_properties, :vertical_align
|
|
8
8
|
# @return [GridSpan] data about grid span
|
|
9
9
|
attr_accessor :grid_span
|
|
10
10
|
# @return [TableMargins] margins
|
|
@@ -25,6 +25,9 @@ module OoxmlParser
|
|
|
25
25
|
|
|
26
26
|
alias table_cell_borders borders_properties
|
|
27
27
|
|
|
28
|
+
# Parse CellProperties object
|
|
29
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
|
30
|
+
# @return [CellProperties] result of parsing
|
|
28
31
|
def parse(node)
|
|
29
32
|
@borders_properties = Borders.new
|
|
30
33
|
@margins = ParagraphMargins.new(parent: self).parse(node)
|
|
@@ -74,14 +77,8 @@ module OoxmlParser
|
|
|
74
77
|
|
|
75
78
|
node.attributes.each do |key, value|
|
|
76
79
|
case key
|
|
77
|
-
when 'vert'
|
|
78
|
-
@text_direction = value.value.to_sym
|
|
79
80
|
when 'anchor'
|
|
80
81
|
@anchor = value_to_symbol(value)
|
|
81
|
-
when 'anchorCtr'
|
|
82
|
-
@anchor_center = value.value
|
|
83
|
-
when 'horzOverflow'
|
|
84
|
-
@horizontal_overflow = value.value.to_sym
|
|
85
82
|
end
|
|
86
83
|
end
|
|
87
84
|
self
|
|
@@ -18,6 +18,8 @@ module OoxmlParser
|
|
|
18
18
|
@parent = parent
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
# Method to copy object
|
|
22
|
+
# @return [Borders] copied object
|
|
21
23
|
def copy
|
|
22
24
|
new_borders = Borders.new
|
|
23
25
|
new_borders.left = @left if @left
|
|
@@ -32,6 +34,9 @@ module OoxmlParser
|
|
|
32
34
|
new_borders
|
|
33
35
|
end
|
|
34
36
|
|
|
37
|
+
# Compare this object to other
|
|
38
|
+
# @param other [Object] any other object
|
|
39
|
+
# @return [True, False] result of comparision
|
|
35
40
|
def ==(other)
|
|
36
41
|
@left == other.left && @right == other.right && @top == other.top && @bottom == other.bottom if other.is_a?(Borders)
|
|
37
42
|
end
|
|
@@ -52,6 +57,7 @@ module OoxmlParser
|
|
|
52
57
|
yield(top)
|
|
53
58
|
end
|
|
54
59
|
|
|
60
|
+
# @return [String] result of convert of object to string
|
|
55
61
|
def to_s
|
|
56
62
|
"Left border: #{left}, Right: #{right}, Top: #{top}, Bottom: #{bottom}"
|
|
57
63
|
end
|
|
@@ -12,6 +12,9 @@ module OoxmlParser
|
|
|
12
12
|
@parent = parent
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
# Compare this object to other
|
|
16
|
+
# @param other [Object] any other object
|
|
17
|
+
# @return [True, False] result of comparision
|
|
15
18
|
def ==(other)
|
|
16
19
|
@columns.each_with_index do |cur_column, index|
|
|
17
20
|
return false unless cur_column == other.columns[index]
|
|
@@ -11,6 +11,9 @@ module OoxmlParser
|
|
|
11
11
|
@parent = parent
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
# Compare this object to other
|
|
15
|
+
# @param other [Object] any other object
|
|
16
|
+
# @return [True, False] result of comparision
|
|
14
17
|
def ==(other)
|
|
15
18
|
if other.is_a? Underline
|
|
16
19
|
@style.to_sym == other.style.to_sym && @color == other.color
|
|
@@ -21,6 +24,7 @@ module OoxmlParser
|
|
|
21
24
|
end
|
|
22
25
|
end
|
|
23
26
|
|
|
27
|
+
# @return [String] result of convert of object to string
|
|
24
28
|
def to_s
|
|
25
29
|
if @color.nil?
|
|
26
30
|
@style.to_s
|