ooxml_parser 0.5.1 → 0.8.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/alternate_content/choice.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text/math_paragraph.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/docx_drawing.rb +1 -20
- 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/docx_drawing_properties.rb +51 -4
- 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.rb +3 -0
- 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/docx_shape/shape_style.rb +42 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/effect_reference.rb +35 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/fill_reference.rb +35 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/font_reference.rb +35 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/line_reference.rb +35 -0
- 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 +12 -4
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_size.rb +10 -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 +48 -82
- data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +4 -3
- data/lib/ooxml_parser/common_parser/common_data/color/color_indexes.list +66 -0
- data/lib/ooxml_parser/common_parser/common_data/color/ooxml_color.rb +5 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/color_properties.rb +8 -2
- 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/hyperlink.rb +14 -3
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +28 -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 +28 -12
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb +4 -2
- 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.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 -5
- 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 +7 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +41 -9
- 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 +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +25 -8
- 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 +4 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +8 -4
- 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/columns.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +6 -2
- 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 +5 -2
- 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 +4 -1
- 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 +70 -4
|
@@ -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)
|
|
@@ -78,10 +81,6 @@ module OoxmlParser
|
|
|
78
81
|
@text_direction = value.value.to_sym
|
|
79
82
|
when 'anchor'
|
|
80
83
|
@anchor = value_to_symbol(value)
|
|
81
|
-
when 'anchorCtr'
|
|
82
|
-
@anchor_center = value.value
|
|
83
|
-
when 'horzOverflow'
|
|
84
|
-
@horizontal_overflow = value.value.to_sym
|
|
85
84
|
end
|
|
86
85
|
end
|
|
87
86
|
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,16 +11,21 @@ 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
|
+
case other
|
|
19
|
+
when Underline
|
|
16
20
|
@style.to_sym == other.style.to_sym && @color == other.color
|
|
17
|
-
|
|
21
|
+
when Symbol
|
|
18
22
|
@style.to_sym == other
|
|
19
23
|
else
|
|
20
24
|
false
|
|
21
25
|
end
|
|
22
26
|
end
|
|
23
27
|
|
|
28
|
+
# @return [String] result of convert of object to string
|
|
24
29
|
def to_s
|
|
25
30
|
if @color.nil?
|
|
26
31
|
@style.to_s
|
|
@@ -18,12 +18,23 @@ module OoxmlParser
|
|
|
18
18
|
class DocumentStructure < CommonDocumentStructure
|
|
19
19
|
include DocumentStyleHelper
|
|
20
20
|
include DocumentStructureHelpers
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
# @return [Array<OOXMLDocumentObject>] list of elements
|
|
22
|
+
attr_accessor :elements
|
|
23
|
+
# @return [PageProperties] properties of document
|
|
24
|
+
attr_accessor :page_properties
|
|
25
|
+
# @return [Note] notes of document
|
|
26
|
+
attr_accessor :notes
|
|
27
|
+
# @return [DocumentBackground] background of document
|
|
28
|
+
attr_accessor :background
|
|
29
|
+
# @return [DocumentProperties] properties of document
|
|
30
|
+
attr_accessor :document_properties
|
|
31
|
+
# @return [Comments] comment of document
|
|
32
|
+
attr_accessor :comments
|
|
23
33
|
# @return [Numbering] store numbering data
|
|
24
34
|
attr_accessor :numbering
|
|
25
35
|
# @return [Styles] styles of document
|
|
26
36
|
attr_accessor :styles
|
|
37
|
+
# @return [PresentationTheme] theme of docx
|
|
27
38
|
attr_accessor :theme
|
|
28
39
|
# @return [Relationships] relationships
|
|
29
40
|
attr_accessor :relationships
|
|
@@ -44,6 +55,9 @@ module OoxmlParser
|
|
|
44
55
|
|
|
45
56
|
alias theme_colors theme
|
|
46
57
|
|
|
58
|
+
# Compare this object to other
|
|
59
|
+
# @param other [Object] any other object
|
|
60
|
+
# @return [True, False] result of comparision
|
|
47
61
|
def ==(other)
|
|
48
62
|
@elements == other.elements &&
|
|
49
63
|
@page_properties == other.page_properties &&
|
|
@@ -53,6 +67,10 @@ module OoxmlParser
|
|
|
53
67
|
@comments == other.comments
|
|
54
68
|
end
|
|
55
69
|
|
|
70
|
+
# Get element by it's type
|
|
71
|
+
# @param location [Symbol] location of object
|
|
72
|
+
# @param type [Symbol] type of object
|
|
73
|
+
# @return [OOXMLDocumentObject]
|
|
56
74
|
def element_by_description(location: :canvas, type: :docx_paragraph)
|
|
57
75
|
case location
|
|
58
76
|
when :canvas
|
|
@@ -95,6 +113,9 @@ module OoxmlParser
|
|
|
95
113
|
end
|
|
96
114
|
end
|
|
97
115
|
|
|
116
|
+
# Get note by it's description
|
|
117
|
+
# @param type [Symbol] note type
|
|
118
|
+
# @return [Note]
|
|
98
119
|
def note_by_description(type)
|
|
99
120
|
notes.each do |note|
|
|
100
121
|
return note if note.type.to_sym == type
|
|
@@ -102,6 +123,11 @@ module OoxmlParser
|
|
|
102
123
|
raise 'There isn\'t this type of the note'
|
|
103
124
|
end
|
|
104
125
|
|
|
126
|
+
# Detect numbering type
|
|
127
|
+
# @param location [Symbol] location of object
|
|
128
|
+
# @param type [Symbol] type of object
|
|
129
|
+
# @param paragraph_number [Integer] number of object
|
|
130
|
+
# @return [Array<String,String>] type of numbering
|
|
105
131
|
def recognize_numbering(location: :canvas, type: :simple, paragraph_number: 0)
|
|
106
132
|
elements = element_by_description(location: location, type: type)
|
|
107
133
|
lvl_text = elements[paragraph_number].numbering.abstruct_numbering.level_list[0].text.value
|
|
@@ -109,6 +135,11 @@ module OoxmlParser
|
|
|
109
135
|
[num_format, lvl_text]
|
|
110
136
|
end
|
|
111
137
|
|
|
138
|
+
# Return outline type
|
|
139
|
+
# @param location [Symbol] location of object
|
|
140
|
+
# @param type [Symbol] type of object
|
|
141
|
+
# @param levels_count [Integer] count of levels to detect
|
|
142
|
+
# @return [Array<String,String>] type of outline
|
|
112
143
|
def outline(location: :canvas, type: :simple, levels_count: 1)
|
|
113
144
|
elements = element_by_description(location: location, type: type)
|
|
114
145
|
set = []
|
|
@@ -124,6 +155,8 @@ module OoxmlParser
|
|
|
124
155
|
styles.styles
|
|
125
156
|
end
|
|
126
157
|
|
|
158
|
+
# Parse docx file
|
|
159
|
+
# @return [DocumentStructure] parsed structure
|
|
127
160
|
def self.parse
|
|
128
161
|
doc_structure = DocumentStructure.new
|
|
129
162
|
doc_structure.content_types = ContentTypes.new(parent: doc_structure).parse
|
|
@@ -181,6 +214,8 @@ module OoxmlParser
|
|
|
181
214
|
doc_structure
|
|
182
215
|
end
|
|
183
216
|
|
|
217
|
+
# Parse default style
|
|
218
|
+
# @return [void]
|
|
184
219
|
def parse_default_style
|
|
185
220
|
doc = parse_xml(OOXMLDocumentObject.path_to_folder + 'word/styles.xml')
|
|
186
221
|
doc.search('//w:style').each do |style|
|
|
@@ -194,14 +229,14 @@ module OoxmlParser
|
|
|
194
229
|
DocumentStructure.default_paragraph_style = DocxParagraph.new.parse_paragraph_style(paragraph_pr_tag, DocumentStructure.default_run_style)
|
|
195
230
|
end
|
|
196
231
|
style.xpath('w:rPr').each do |character_pr_tag|
|
|
197
|
-
DocumentStructure.default_run_style.parse_properties(character_pr_tag
|
|
232
|
+
DocumentStructure.default_run_style.parse_properties(character_pr_tag)
|
|
198
233
|
end
|
|
199
234
|
elsif (style.attribute('default').value == '1' ||
|
|
200
235
|
style.attribute('default').value == 'on' ||
|
|
201
236
|
style.attribute('default').value == 'true') &&
|
|
202
237
|
style.attribute('type').value == 'character'
|
|
203
238
|
style.xpath('w:rPr').each do |character_pr_tag|
|
|
204
|
-
DocumentStructure.default_run_style.parse_properties(character_pr_tag
|
|
239
|
+
DocumentStructure.default_run_style.parse_properties(character_pr_tag)
|
|
205
240
|
end
|
|
206
241
|
end
|
|
207
242
|
end
|
|
@@ -216,7 +251,7 @@ module OoxmlParser
|
|
|
216
251
|
style.attribute('type').value == 'table'
|
|
217
252
|
|
|
218
253
|
style.xpath('w:rPr').each do |table_character_pr_tag|
|
|
219
|
-
DocumentStructure.default_table_run_style.parse_properties(table_character_pr_tag
|
|
254
|
+
DocumentStructure.default_table_run_style.parse_properties(table_character_pr_tag)
|
|
220
255
|
end
|
|
221
256
|
end
|
|
222
257
|
end
|
|
@@ -249,10 +284,7 @@ module OoxmlParser
|
|
|
249
284
|
end
|
|
250
285
|
|
|
251
286
|
class << self
|
|
252
|
-
attr_accessor :default_table_run_style
|
|
253
|
-
attr_accessor :default_table_paragraph_style
|
|
254
|
-
attr_accessor :default_paragraph_style
|
|
255
|
-
attr_accessor :default_run_style
|
|
287
|
+
attr_accessor :default_table_run_style, :default_table_paragraph_style, :default_paragraph_style, :default_run_style
|
|
256
288
|
end
|
|
257
289
|
end
|
|
258
290
|
end
|
|
@@ -35,6 +35,7 @@ module OoxmlParser
|
|
|
35
35
|
# Used to determine if current style is visible in style list in editors
|
|
36
36
|
# According to http://www.wordarticles.com/Articles/WordStyles/LatentStyles.php
|
|
37
37
|
attr_accessor :q_format
|
|
38
|
+
|
|
38
39
|
alias visible? q_format
|
|
39
40
|
|
|
40
41
|
def initialize(parent: nil)
|
|
@@ -43,10 +44,12 @@ module OoxmlParser
|
|
|
43
44
|
@parent = parent
|
|
44
45
|
end
|
|
45
46
|
|
|
47
|
+
# @return [String] result of convert of object to string
|
|
46
48
|
def to_s
|
|
47
49
|
"Table style properties list: #{@table_style_properties_list.join(',')}"
|
|
48
50
|
end
|
|
49
51
|
|
|
52
|
+
# @return [String] inspect of object for debug means
|
|
50
53
|
def inspect
|
|
51
54
|
to_s
|
|
52
55
|
end
|
|
@@ -57,6 +57,9 @@ module OoxmlParser
|
|
|
57
57
|
|
|
58
58
|
alias elements character_style_array
|
|
59
59
|
|
|
60
|
+
# Constructor for copy of object
|
|
61
|
+
# @param source [DocxParagraph] original object
|
|
62
|
+
# @return [void]
|
|
60
63
|
def initialize_copy(source)
|
|
61
64
|
super
|
|
62
65
|
@bookmark_start = source.bookmark_start.clone
|
|
@@ -65,16 +68,13 @@ module OoxmlParser
|
|
|
65
68
|
@spacing = source.spacing.clone
|
|
66
69
|
end
|
|
67
70
|
|
|
71
|
+
# @return [Array<OOXMLDocumentObject>] array of child objects that contains data
|
|
68
72
|
def nonempty_runs
|
|
69
73
|
@character_style_array.select do |cur_run|
|
|
70
|
-
|
|
74
|
+
case cur_run
|
|
75
|
+
when DocxParagraphRun, ParagraphRun
|
|
71
76
|
!cur_run.empty?
|
|
72
|
-
|
|
73
|
-
cur_run.is_a?(StructuredDocumentTag) ||
|
|
74
|
-
cur_run.is_a?(BookmarkStart) ||
|
|
75
|
-
cur_run.is_a?(BookmarkEnd) ||
|
|
76
|
-
cur_run.is_a?(CommentRangeStart) ||
|
|
77
|
-
cur_run.is_a?(CommentRangeEnd)
|
|
77
|
+
when DocxFormula, StructuredDocumentTag, BookmarkStart, BookmarkEnd, CommentRangeStart, CommentRangeEnd
|
|
78
78
|
true
|
|
79
79
|
end
|
|
80
80
|
end
|
|
@@ -87,6 +87,9 @@ module OoxmlParser
|
|
|
87
87
|
!nonempty_runs.empty? || paragraph_properties.section_properties
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
+
# Compare this object to other
|
|
91
|
+
# @param other [Object] any other object
|
|
92
|
+
# @return [True, False] result of comparision
|
|
90
93
|
def ==(other)
|
|
91
94
|
ignored_attributes = %i[@number @parent]
|
|
92
95
|
all_instance_variables = instance_variables
|
|
@@ -97,6 +100,12 @@ module OoxmlParser
|
|
|
97
100
|
true
|
|
98
101
|
end
|
|
99
102
|
|
|
103
|
+
# Parse object
|
|
104
|
+
# @param node [Nokogiri::XML:Node] node with DocxParagraph
|
|
105
|
+
# @param par_number [Integer] number of paragraph
|
|
106
|
+
# @param default_character [DocxParagraphRun] style for paragraph
|
|
107
|
+
# @param parent [OOXMLDocumentObject] parent of run
|
|
108
|
+
# @return [DocxParagraph] result of parse
|
|
100
109
|
def parse(node, par_number = 0, default_character = DocxParagraphRun.new, parent: nil)
|
|
101
110
|
@parent ||= parent
|
|
102
111
|
default_character_style = default_character.dup
|
|
@@ -174,6 +183,10 @@ module OoxmlParser
|
|
|
174
183
|
self
|
|
175
184
|
end
|
|
176
185
|
|
|
186
|
+
# Parse style
|
|
187
|
+
# @param node [Nokogiri::XML:Node] node with style
|
|
188
|
+
# @param default_char_style [DocxParagraphRun] style for paragraph
|
|
189
|
+
# @return [DocxParagraph] result of parse
|
|
177
190
|
def parse_paragraph_style(node, default_char_style = DocxParagraphRun.new(parent: self))
|
|
178
191
|
node.xpath('*').each do |node_child|
|
|
179
192
|
case node_child.name
|
|
@@ -229,6 +242,10 @@ module OoxmlParser
|
|
|
229
242
|
self
|
|
230
243
|
end
|
|
231
244
|
|
|
245
|
+
# Parse style xml
|
|
246
|
+
# @param id [String] id of style to parse
|
|
247
|
+
# @param character_style [DocxParagraphRun] style to parse
|
|
248
|
+
# @return [void]
|
|
232
249
|
def parse_paragraph_style_xml(id, character_style)
|
|
233
250
|
doc = parse_xml(OOXMLDocumentObject.path_to_folder + 'word/styles.xml')
|
|
234
251
|
doc.search('//w:style').each do |style|
|
|
@@ -239,7 +256,7 @@ module OoxmlParser
|
|
|
239
256
|
@style = StyleParametres.new(parent: self).parse(style)
|
|
240
257
|
end
|
|
241
258
|
style.xpath('w:rPr').each do |r_pr|
|
|
242
|
-
character_style.parse_properties(r_pr
|
|
259
|
+
character_style.parse_properties(r_pr)
|
|
243
260
|
end
|
|
244
261
|
break
|
|
245
262
|
end
|