ooxml_parser 0.5.0 → 0.7.2
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/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.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 +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 +39 -7
- 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 -6
- 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 +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 +3 -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/columns.rb +1 -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 +69 -4
|
@@ -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)
|
|
@@ -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,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
|
|
@@ -44,6 +44,9 @@ module OoxmlParser
|
|
|
44
44
|
|
|
45
45
|
alias theme_colors theme
|
|
46
46
|
|
|
47
|
+
# Compare this object to other
|
|
48
|
+
# @param other [Object] any other object
|
|
49
|
+
# @return [True, False] result of comparision
|
|
47
50
|
def ==(other)
|
|
48
51
|
@elements == other.elements &&
|
|
49
52
|
@page_properties == other.page_properties &&
|
|
@@ -53,6 +56,10 @@ module OoxmlParser
|
|
|
53
56
|
@comments == other.comments
|
|
54
57
|
end
|
|
55
58
|
|
|
59
|
+
# Get element by it's type
|
|
60
|
+
# @param location [Symbol] location of object
|
|
61
|
+
# @param type [Symbol] type of object
|
|
62
|
+
# @return [OOXMLDocumentObject]
|
|
56
63
|
def element_by_description(location: :canvas, type: :docx_paragraph)
|
|
57
64
|
case location
|
|
58
65
|
when :canvas
|
|
@@ -95,6 +102,9 @@ module OoxmlParser
|
|
|
95
102
|
end
|
|
96
103
|
end
|
|
97
104
|
|
|
105
|
+
# Get note by it's description
|
|
106
|
+
# @param type [Symbol] note type
|
|
107
|
+
# @return [Note]
|
|
98
108
|
def note_by_description(type)
|
|
99
109
|
notes.each do |note|
|
|
100
110
|
return note if note.type.to_sym == type
|
|
@@ -102,6 +112,11 @@ module OoxmlParser
|
|
|
102
112
|
raise 'There isn\'t this type of the note'
|
|
103
113
|
end
|
|
104
114
|
|
|
115
|
+
# Detect numbering type
|
|
116
|
+
# @param location [Symbol] location of object
|
|
117
|
+
# @param type [Symbol] type of object
|
|
118
|
+
# @param paragraph_number [Integer] number of object
|
|
119
|
+
# @return [Array<String,String>] type of numbering
|
|
105
120
|
def recognize_numbering(location: :canvas, type: :simple, paragraph_number: 0)
|
|
106
121
|
elements = element_by_description(location: location, type: type)
|
|
107
122
|
lvl_text = elements[paragraph_number].numbering.abstruct_numbering.level_list[0].text.value
|
|
@@ -109,6 +124,11 @@ module OoxmlParser
|
|
|
109
124
|
[num_format, lvl_text]
|
|
110
125
|
end
|
|
111
126
|
|
|
127
|
+
# Return outline type
|
|
128
|
+
# @param location [Symbol] location of object
|
|
129
|
+
# @param type [Symbol] type of object
|
|
130
|
+
# @param levels_count [Integer] count of levels to detect
|
|
131
|
+
# @return [Array<String,String>] type of outline
|
|
112
132
|
def outline(location: :canvas, type: :simple, levels_count: 1)
|
|
113
133
|
elements = element_by_description(location: location, type: type)
|
|
114
134
|
set = []
|
|
@@ -124,6 +144,8 @@ module OoxmlParser
|
|
|
124
144
|
styles.styles
|
|
125
145
|
end
|
|
126
146
|
|
|
147
|
+
# Parse docx file
|
|
148
|
+
# @return [DocumentStructure] parsed structure
|
|
127
149
|
def self.parse
|
|
128
150
|
doc_structure = DocumentStructure.new
|
|
129
151
|
doc_structure.content_types = ContentTypes.new(parent: doc_structure).parse
|
|
@@ -181,6 +203,8 @@ module OoxmlParser
|
|
|
181
203
|
doc_structure
|
|
182
204
|
end
|
|
183
205
|
|
|
206
|
+
# Parse default style
|
|
207
|
+
# @return [void]
|
|
184
208
|
def parse_default_style
|
|
185
209
|
doc = parse_xml(OOXMLDocumentObject.path_to_folder + 'word/styles.xml')
|
|
186
210
|
doc.search('//w:style').each do |style|
|
|
@@ -194,14 +218,14 @@ module OoxmlParser
|
|
|
194
218
|
DocumentStructure.default_paragraph_style = DocxParagraph.new.parse_paragraph_style(paragraph_pr_tag, DocumentStructure.default_run_style)
|
|
195
219
|
end
|
|
196
220
|
style.xpath('w:rPr').each do |character_pr_tag|
|
|
197
|
-
DocumentStructure.default_run_style.parse_properties(character_pr_tag
|
|
221
|
+
DocumentStructure.default_run_style.parse_properties(character_pr_tag)
|
|
198
222
|
end
|
|
199
223
|
elsif (style.attribute('default').value == '1' ||
|
|
200
224
|
style.attribute('default').value == 'on' ||
|
|
201
225
|
style.attribute('default').value == 'true') &&
|
|
202
226
|
style.attribute('type').value == 'character'
|
|
203
227
|
style.xpath('w:rPr').each do |character_pr_tag|
|
|
204
|
-
DocumentStructure.default_run_style.parse_properties(character_pr_tag
|
|
228
|
+
DocumentStructure.default_run_style.parse_properties(character_pr_tag)
|
|
205
229
|
end
|
|
206
230
|
end
|
|
207
231
|
end
|
|
@@ -216,7 +240,7 @@ module OoxmlParser
|
|
|
216
240
|
style.attribute('type').value == 'table'
|
|
217
241
|
|
|
218
242
|
style.xpath('w:rPr').each do |table_character_pr_tag|
|
|
219
|
-
DocumentStructure.default_table_run_style.parse_properties(table_character_pr_tag
|
|
243
|
+
DocumentStructure.default_table_run_style.parse_properties(table_character_pr_tag)
|
|
220
244
|
end
|
|
221
245
|
end
|
|
222
246
|
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,6 +68,7 @@ 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
|
if cur_run.is_a?(DocxParagraphRun) || cur_run.is_a?(ParagraphRun)
|
|
@@ -87,6 +91,9 @@ module OoxmlParser
|
|
|
87
91
|
!nonempty_runs.empty? || paragraph_properties.section_properties
|
|
88
92
|
end
|
|
89
93
|
|
|
94
|
+
# Compare this object to other
|
|
95
|
+
# @param other [Object] any other object
|
|
96
|
+
# @return [True, False] result of comparision
|
|
90
97
|
def ==(other)
|
|
91
98
|
ignored_attributes = %i[@number @parent]
|
|
92
99
|
all_instance_variables = instance_variables
|
|
@@ -97,6 +104,12 @@ module OoxmlParser
|
|
|
97
104
|
true
|
|
98
105
|
end
|
|
99
106
|
|
|
107
|
+
# Parse object
|
|
108
|
+
# @param node [Nokogiri::XML:Node] node with DocxParagraph
|
|
109
|
+
# @param par_number [Integer] number of paragraph
|
|
110
|
+
# @param default_character [DocxParagraphRun] style for paragraph
|
|
111
|
+
# @param parent [OOXMLDocumentObject] parent of run
|
|
112
|
+
# @return [DocxParagraph] result of parse
|
|
100
113
|
def parse(node, par_number = 0, default_character = DocxParagraphRun.new, parent: nil)
|
|
101
114
|
@parent ||= parent
|
|
102
115
|
default_character_style = default_character.dup
|
|
@@ -174,6 +187,10 @@ module OoxmlParser
|
|
|
174
187
|
self
|
|
175
188
|
end
|
|
176
189
|
|
|
190
|
+
# Parse style
|
|
191
|
+
# @param node [Nokogiri::XML:Node] node with style
|
|
192
|
+
# @param default_char_style [DocxParagraphRun] style for paragraph
|
|
193
|
+
# @return [DocxParagraph] result of parse
|
|
177
194
|
def parse_paragraph_style(node, default_char_style = DocxParagraphRun.new(parent: self))
|
|
178
195
|
node.xpath('*').each do |node_child|
|
|
179
196
|
case node_child.name
|
|
@@ -229,6 +246,10 @@ module OoxmlParser
|
|
|
229
246
|
self
|
|
230
247
|
end
|
|
231
248
|
|
|
249
|
+
# Parse style xml
|
|
250
|
+
# @param id [String] id of style to parse
|
|
251
|
+
# @param character_style [DocxParagraphRun] style to parse
|
|
252
|
+
# @return [void]
|
|
232
253
|
def parse_paragraph_style_xml(id, character_style)
|
|
233
254
|
doc = parse_xml(OOXMLDocumentObject.path_to_folder + 'word/styles.xml')
|
|
234
255
|
doc.search('//w:style').each do |style|
|
|
@@ -239,7 +260,7 @@ module OoxmlParser
|
|
|
239
260
|
@style = StyleParametres.new(parent: self).parse(style)
|
|
240
261
|
end
|
|
241
262
|
style.xpath('w:rPr').each do |r_pr|
|
|
242
|
-
character_style.parse_properties(r_pr
|
|
263
|
+
character_style.parse_properties(r_pr)
|
|
243
264
|
end
|
|
244
265
|
break
|
|
245
266
|
end
|