ooxml_parser 0.6.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ooxml_parser.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/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 +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 +45 -79
- 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 +31 -15
- 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/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 +2 -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 -1
- 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 +65 -4
|
@@ -9,15 +9,16 @@ module OoxmlParser
|
|
|
9
9
|
return self if %w[auto null].include?(hex_string)
|
|
10
10
|
|
|
11
11
|
char_array = hex_string.split(//)
|
|
12
|
-
|
|
12
|
+
case char_array.length
|
|
13
|
+
when 3
|
|
13
14
|
@red = char_array[0].hex
|
|
14
15
|
@green = char_array[1].hex
|
|
15
16
|
@blue = char_array[2].hex
|
|
16
|
-
|
|
17
|
+
when 6
|
|
17
18
|
@red = (char_array[0] + char_array[1]).hex
|
|
18
19
|
@green = (char_array[2] + char_array[3]).hex
|
|
19
20
|
@blue = (char_array[4] + char_array[5]).hex
|
|
20
|
-
|
|
21
|
+
when 8
|
|
21
22
|
@alpha_channel = (char_array[0] + char_array[1]).hex
|
|
22
23
|
@red = (char_array[2] + char_array[3]).hex
|
|
23
24
|
@green = (char_array[4] + char_array[5]).hex
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
000000
|
|
2
|
+
FFFFFF
|
|
3
|
+
FF0000
|
|
4
|
+
00FF00
|
|
5
|
+
0000FF
|
|
6
|
+
FFFF00
|
|
7
|
+
FF00FF
|
|
8
|
+
00FFFF
|
|
9
|
+
000000
|
|
10
|
+
FFFFFF
|
|
11
|
+
FF0000
|
|
12
|
+
00FF00
|
|
13
|
+
0000FF
|
|
14
|
+
FFFF00
|
|
15
|
+
FF00FF
|
|
16
|
+
00FFFF
|
|
17
|
+
800000
|
|
18
|
+
008000
|
|
19
|
+
000080
|
|
20
|
+
808000
|
|
21
|
+
800080
|
|
22
|
+
008080
|
|
23
|
+
C0C0C0
|
|
24
|
+
808080
|
|
25
|
+
9999FF
|
|
26
|
+
993366
|
|
27
|
+
FFFFCC
|
|
28
|
+
CCFFFF
|
|
29
|
+
660066
|
|
30
|
+
FF8080
|
|
31
|
+
0066CC
|
|
32
|
+
CCCCFF
|
|
33
|
+
000080
|
|
34
|
+
FF00FF
|
|
35
|
+
FFFF00
|
|
36
|
+
00FFFF
|
|
37
|
+
800080
|
|
38
|
+
800000
|
|
39
|
+
008080
|
|
40
|
+
0000FF
|
|
41
|
+
00CCFF
|
|
42
|
+
CCFFFF
|
|
43
|
+
CCFFCC
|
|
44
|
+
FFFF99
|
|
45
|
+
99CCFF
|
|
46
|
+
FF99CC
|
|
47
|
+
CC99FF
|
|
48
|
+
FFCC99
|
|
49
|
+
3366FF
|
|
50
|
+
33CCCC
|
|
51
|
+
99CC00
|
|
52
|
+
FFCC00
|
|
53
|
+
FF9900
|
|
54
|
+
FF6600
|
|
55
|
+
666699
|
|
56
|
+
969696
|
|
57
|
+
003366
|
|
58
|
+
339966
|
|
59
|
+
003300
|
|
60
|
+
333300
|
|
61
|
+
993300
|
|
62
|
+
993366
|
|
63
|
+
333399
|
|
64
|
+
333333
|
|
65
|
+
n/a
|
|
66
|
+
n/a
|
|
@@ -18,6 +18,8 @@ module OoxmlParser
|
|
|
18
18
|
# @return [Color] rgb color
|
|
19
19
|
attr_reader :rgb
|
|
20
20
|
|
|
21
|
+
# Convert OoxmlColor to other color type
|
|
22
|
+
# @return [Object] result of conversion
|
|
21
23
|
def to_color
|
|
22
24
|
return Color.get_rgb_by_color_index(indexed) if indexed
|
|
23
25
|
return ThemeColors.new(parent: self).parse_color_theme(theme, tint) if theme
|
|
@@ -26,6 +28,9 @@ module OoxmlParser
|
|
|
26
28
|
value
|
|
27
29
|
end
|
|
28
30
|
|
|
31
|
+
# Compare this object to other
|
|
32
|
+
# @param other [Object] any other object
|
|
33
|
+
# @return [True, False] result of comparision
|
|
29
34
|
def ==(other)
|
|
30
35
|
return to_color == other if other.is_a?(Color)
|
|
31
36
|
return to_color == other if other.is_a?(Symbol)
|
|
@@ -3,8 +3,14 @@
|
|
|
3
3
|
module OoxmlParser
|
|
4
4
|
# Class for color transformations
|
|
5
5
|
class ColorProperties < OOXMLDocumentObject
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
# @return [Integer] alpha value of color
|
|
7
|
+
attr_reader :alpha
|
|
8
|
+
# @return [Float] luminance modulation value
|
|
9
|
+
attr_reader :luminance_modulation
|
|
10
|
+
# @return [Float] luminance offset value
|
|
11
|
+
attr_reader :luminance_offset
|
|
12
|
+
# @return [Float] tint value
|
|
13
|
+
attr_reader :tint
|
|
8
14
|
|
|
9
15
|
# Parse ColorProperties object
|
|
10
16
|
# @param node [Nokogiri::XML:Element] node to parse
|
|
@@ -19,6 +19,9 @@ module OoxmlParser
|
|
|
19
19
|
@l = lightness
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
# Convert rgb color to hsl
|
|
23
|
+
# @param rgb_color [Color] color to convert
|
|
24
|
+
# @return [HSLColor] result of convert
|
|
22
25
|
def self.rgb_to_hsl(rgb_color)
|
|
23
26
|
hls_color = HSLColor.new
|
|
24
27
|
red = rgb_color.red.to_f # / 255.0
|
|
@@ -50,6 +53,7 @@ module OoxmlParser
|
|
|
50
53
|
end
|
|
51
54
|
|
|
52
55
|
# Chroma - The "colorfulness relative to the brightness of a similarly illuminated white".
|
|
56
|
+
# @return [Color] result
|
|
53
57
|
def to_rgb
|
|
54
58
|
chroma = (1 - (2 * @l - 1).abs) * @s
|
|
55
59
|
x = chroma * (1 - ((@h / 60.0) % 2.0 - 1).abs)
|
|
@@ -73,6 +77,10 @@ module OoxmlParser
|
|
|
73
77
|
Color.new(((rgb.red + m) * 255.0).round, ((rgb.green + m) * 255.0).round, ((rgb.blue + m) * 255.0).round)
|
|
74
78
|
end
|
|
75
79
|
|
|
80
|
+
# Get lum value of color
|
|
81
|
+
# @param tint [Integer] tint to apply
|
|
82
|
+
# @param lum [Integer] lum without tint
|
|
83
|
+
# @return [Integer] result
|
|
76
84
|
def calculate_lum_value(tint, lum)
|
|
77
85
|
if tint.nil?
|
|
78
86
|
lum
|
|
@@ -81,6 +89,9 @@ module OoxmlParser
|
|
|
81
89
|
end
|
|
82
90
|
end
|
|
83
91
|
|
|
92
|
+
# Convert to rgb with applied tint
|
|
93
|
+
# @param tint [Integer] tint to apply
|
|
94
|
+
# @return [Color] result of covert
|
|
84
95
|
def calculate_rgb_with_tint(tint)
|
|
85
96
|
self.l = calculate_lum_value(tint, @l * 255.0) / 255.0
|
|
86
97
|
to_rgb
|
|
@@ -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
|
|
@@ -3,9 +3,20 @@
|
|
|
3
3
|
module OoxmlParser
|
|
4
4
|
# Class for parsing `hlinkClick`, `hyperlink` tags
|
|
5
5
|
class Hyperlink < OOXMLDocumentObject
|
|
6
|
-
|
|
7
|
-
attr_accessor :
|
|
8
|
-
|
|
6
|
+
# @return [OOXMLDocumentObject] url of hyperlink
|
|
7
|
+
attr_accessor :url
|
|
8
|
+
# @return [String] tooltip value
|
|
9
|
+
attr_reader :tooltip
|
|
10
|
+
# @return [Coordinates] coordinates of link
|
|
11
|
+
attr_reader :coordinates
|
|
12
|
+
# @return [True, False] should click be highlighted
|
|
13
|
+
attr_reader :highlight_click
|
|
14
|
+
# @return [Symbol] type of action
|
|
15
|
+
attr_reader :action
|
|
16
|
+
# @return [String] value of action link
|
|
17
|
+
attr_reader :action_link
|
|
18
|
+
# @return [String] id of link
|
|
19
|
+
attr_reader :id
|
|
9
20
|
# @return [Array<ParagraphRun>] run of paragraph
|
|
10
21
|
attr_reader :runs
|
|
11
22
|
|
|
@@ -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)
|
|
@@ -38,15 +43,21 @@ module OoxmlParser
|
|
|
38
43
|
end
|
|
39
44
|
|
|
40
45
|
class << self
|
|
46
|
+
# @return [String] path to root subfolder
|
|
41
47
|
attr_accessor :root_subfolder
|
|
48
|
+
# @return [PresentationTheme] list of themes
|
|
42
49
|
attr_accessor :theme
|
|
50
|
+
# @return [Array<String>] stack of xmls
|
|
43
51
|
attr_accessor :xmls_stack
|
|
52
|
+
# @return [String] path to root folder
|
|
44
53
|
attr_accessor :path_to_folder
|
|
45
54
|
|
|
46
55
|
# @param path_to_file [String] file
|
|
56
|
+
# @param ignore_system [True, False] should host system be ignored, since
|
|
57
|
+
# this method is OS-dependent
|
|
47
58
|
# @return [True, False] Check if file is protected by password on open
|
|
48
|
-
def encrypted_file?(path_to_file)
|
|
49
|
-
if Gem.win_platform?
|
|
59
|
+
def encrypted_file?(path_to_file, ignore_system: false)
|
|
60
|
+
if Gem.win_platform? || ignore_system
|
|
50
61
|
warn 'FileMagic and checking file for encryption is not supported on Windows'
|
|
51
62
|
return false
|
|
52
63
|
end
|
|
@@ -63,6 +74,9 @@ module OoxmlParser
|
|
|
63
74
|
false
|
|
64
75
|
end
|
|
65
76
|
|
|
77
|
+
# Copy this file and rename to zip
|
|
78
|
+
# @param path [String] path to file
|
|
79
|
+
# @return [String] path to result zip
|
|
66
80
|
def copy_file_and_rename_to_zip(path)
|
|
67
81
|
file_name = File.basename(path)
|
|
68
82
|
tmp_folder = Dir.mktmpdir('ruby-ooxml-parser')
|
|
@@ -75,6 +89,10 @@ module OoxmlParser
|
|
|
75
89
|
file_path
|
|
76
90
|
end
|
|
77
91
|
|
|
92
|
+
# Unzip specified file
|
|
93
|
+
# @param path_to_file [String] path to zip file
|
|
94
|
+
# @param destination [String] folder to extract
|
|
95
|
+
# @return [void]
|
|
78
96
|
def unzip_file(path_to_file, destination)
|
|
79
97
|
Zip.warn_invalid_date = false
|
|
80
98
|
Zip::File.open(path_to_file) do |zip_file|
|
|
@@ -88,14 +106,19 @@ module OoxmlParser
|
|
|
88
106
|
end
|
|
89
107
|
end
|
|
90
108
|
|
|
109
|
+
# @return [String] dir to base of file
|
|
91
110
|
def dir
|
|
92
111
|
OOXMLDocumentObject.path_to_folder + File.dirname(OOXMLDocumentObject.xmls_stack.last) + '/'
|
|
93
112
|
end
|
|
94
113
|
|
|
114
|
+
# @return [String] path to current xml file
|
|
95
115
|
def current_xml
|
|
96
116
|
OOXMLDocumentObject.path_to_folder + OOXMLDocumentObject.xmls_stack.last
|
|
97
117
|
end
|
|
98
118
|
|
|
119
|
+
# Add file to parsing stack
|
|
120
|
+
# @param path [String] path of file to add to stack
|
|
121
|
+
# @return [void]
|
|
99
122
|
def add_to_xmls_stack(path)
|
|
100
123
|
OOXMLDocumentObject.xmls_stack << if path.include?('..')
|
|
101
124
|
"#{File.dirname(OOXMLDocumentObject.xmls_stack.last)}/#{path}"
|
|
@@ -106,6 +129,9 @@ module OoxmlParser
|
|
|
106
129
|
end
|
|
107
130
|
end
|
|
108
131
|
|
|
132
|
+
# Get link to file from rels file
|
|
133
|
+
# @param id [String] file to get
|
|
134
|
+
# @return [String] result
|
|
109
135
|
def get_link_from_rels(id)
|
|
110
136
|
rels_path = dir + "_rels/#{File.basename(OOXMLDocumentObject.xmls_stack.last)}.rels"
|
|
111
137
|
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
|
|
@@ -9,12 +9,34 @@ require_relative 'run_properties/shade'
|
|
|
9
9
|
module OoxmlParser
|
|
10
10
|
# Data about `rPr` object
|
|
11
11
|
class RunProperties < OOXMLDocumentObject
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
# @return [FontStyle] font style of run
|
|
13
|
+
attr_accessor :font_style
|
|
14
|
+
# @return [Color, DocxColorScheme] color of run
|
|
15
|
+
attr_reader :font_color
|
|
16
|
+
# @return [OoxmlSize] space size
|
|
17
|
+
attr_reader :space
|
|
18
|
+
# @return [string] name of font
|
|
19
|
+
attr_reader :font_name
|
|
20
|
+
# @return [Float] font size
|
|
21
|
+
attr_reader :font_size
|
|
22
|
+
# @return [Symbol] baseline of run
|
|
23
|
+
attr_reader :baseline
|
|
24
|
+
# @return [Hyperlink] hyperlink of run
|
|
25
|
+
attr_reader :hyperlink
|
|
26
|
+
# @return [Symbol] caps data
|
|
27
|
+
attr_reader :caps
|
|
28
|
+
# @return [Symbol] vertical align data
|
|
29
|
+
attr_reader :vertical_align
|
|
30
|
+
# @return [Outline] outline data
|
|
31
|
+
attr_reader :outline
|
|
32
|
+
# @return [True, False] is text shadow
|
|
33
|
+
attr_reader :shadow
|
|
34
|
+
# @return [True, False] is text emboss
|
|
35
|
+
attr_reader :emboss
|
|
36
|
+
# @return [True, False] is text vanish
|
|
37
|
+
attr_reader :vanish
|
|
38
|
+
# @return [True, False] is text rtl
|
|
39
|
+
attr_reader :rtl
|
|
18
40
|
# @return [Size] get run size
|
|
19
41
|
attr_accessor :size
|
|
20
42
|
# @return [RunSpacing] get run spacing
|
|
@@ -29,16 +51,12 @@ module OoxmlParser
|
|
|
29
51
|
attr_accessor :shade
|
|
30
52
|
# @return [RunStyle] run style
|
|
31
53
|
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
54
|
|
|
37
|
-
def initialize(
|
|
38
|
-
@font_name = ''
|
|
55
|
+
def initialize(params = {})
|
|
56
|
+
@font_name = params.fetch(:font_name, '')
|
|
39
57
|
@font_style = FontStyle.new
|
|
40
58
|
@baseline = :baseline
|
|
41
|
-
@parent = parent
|
|
59
|
+
@parent = params[:parent]
|
|
42
60
|
end
|
|
43
61
|
|
|
44
62
|
# Parse RunProperties object
|
|
@@ -50,8 +68,6 @@ module OoxmlParser
|
|
|
50
68
|
case key
|
|
51
69
|
when 'sz'
|
|
52
70
|
@font_size = value.value.to_f / 100.0
|
|
53
|
-
when 'szCs'
|
|
54
|
-
@font_size_complex = node.attribute('val').value.to_i / 2.0
|
|
55
71
|
when 'spc'
|
|
56
72
|
@space = OoxmlSize.new(value.value.to_f, :one_100th_point)
|
|
57
73
|
when 'b'
|
data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb
CHANGED
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
module OoxmlParser
|
|
5
5
|
# Class for parsing `w:ln` tags
|
|
6
6
|
class Outline < OOXMLDocumentObject
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
# @return [OoxmlSize] width of outline
|
|
8
|
+
attr_reader :width
|
|
9
|
+
# @return [DocxColorScheme] color of outline
|
|
10
|
+
attr_reader :color_scheme
|
|
9
11
|
|
|
10
12
|
def initialize(parent: nil)
|
|
11
13
|
@width = OoxmlSize.new(0)
|