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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ooxml_parser.rb +1 -0
  3. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart.rb +6 -0
  4. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series.rb +2 -2
  5. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text.rb +0 -2
  6. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/docx_drawing.rb +1 -20
  7. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_distance_from_text.rb +3 -0
  8. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_properties.rb +51 -4
  9. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_coordinates.rb +1 -0
  10. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_size.rb +4 -1
  11. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip.rb +1 -0
  12. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +4 -0
  13. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_picture.rb +0 -2
  14. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/ooxml_text_box.rb +1 -3
  15. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_color_scheme.rb +1 -0
  16. 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
  17. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_line.rb +1 -0
  18. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties.rb +12 -4
  19. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_size.rb +10 -3
  20. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/old_docx_picture.rb +1 -3
  21. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_properties.rb +1 -3
  22. data/lib/ooxml_parser/common_parser/common_data/borders_properties.rb +3 -0
  23. data/lib/ooxml_parser/common_parser/common_data/color.rb +45 -79
  24. data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +4 -3
  25. data/lib/ooxml_parser/common_parser/common_data/color/color_indexes.list +66 -0
  26. data/lib/ooxml_parser/common_parser/common_data/color/ooxml_color.rb +5 -0
  27. data/lib/ooxml_parser/common_parser/common_data/colors/color_properties.rb +8 -2
  28. data/lib/ooxml_parser/common_parser/common_data/colors/hsl_color.rb +11 -0
  29. data/lib/ooxml_parser/common_parser/common_data/colors/scheme_color.rb +1 -0
  30. data/lib/ooxml_parser/common_parser/common_data/colors/theme_colors.rb +4 -0
  31. data/lib/ooxml_parser/common_parser/common_data/content_types.rb +2 -0
  32. data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_default.rb +3 -0
  33. data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_override.rb +3 -0
  34. data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +7 -0
  35. data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +14 -3
  36. data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +28 -2
  37. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb +3 -0
  38. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +31 -15
  39. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb +4 -2
  40. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering_properties.rb +2 -0
  41. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb +1 -0
  42. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +16 -13
  43. data/lib/ooxml_parser/common_parser/common_data/table.rb +2 -0
  44. data/lib/ooxml_parser/common_parser/common_data/table/margins/paragraph_margins.rb +3 -0
  45. data/lib/ooxml_parser/common_parser/common_data/table/margins/table_margins.rb +7 -0
  46. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_position.rb +1 -0
  47. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties/table_style_properties_helper.rb +4 -4
  48. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties.rb +4 -5
  49. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/borders.rb +6 -0
  50. data/lib/ooxml_parser/common_parser/common_data/table/table_grid.rb +3 -0
  51. data/lib/ooxml_parser/common_parser/common_data/underline.rb +7 -2
  52. data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +41 -9
  53. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments/comment.rb +3 -0
  54. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style.rb +2 -0
  55. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +25 -8
  56. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/bookmark_end.rb +1 -1
  57. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/comment_range_start.rb +1 -0
  58. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/pre_sub_superscript.rb +3 -0
  59. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +13 -3
  60. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +4 -1
  61. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape.rb +0 -2
  62. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/frame_properties.rb +3 -0
  63. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/indents.rb +4 -2
  64. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +8 -4
  65. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb +5 -0
  66. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns.rb +3 -1
  67. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +6 -2
  68. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_size.rb +1 -0
  69. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles.rb +2 -0
  70. data/lib/ooxml_parser/docx_parser/docx_parser.rb +3 -0
  71. data/lib/ooxml_parser/name.rb +1 -0
  72. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +2 -0
  73. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme.rb +3 -0
  74. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/theme_color.rb +3 -0
  75. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide.rb +5 -2
  76. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node.rb +3 -0
  77. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide_helper.rb +15 -1
  78. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition.rb +3 -0
  79. data/lib/ooxml_parser/pptx_parser/pptx_parser.rb +4 -1
  80. data/lib/ooxml_parser/version.rb +2 -1
  81. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +21 -2
  82. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb +3 -0
  83. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache.rb +41 -0
  84. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb +37 -0
  85. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source.rb +33 -0
  86. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source/worksheet_source.rb +26 -0
  87. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb +2 -0
  88. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/xf.rb +5 -0
  89. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +2 -0
  90. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts/font.rb +3 -0
  91. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +5 -0
  92. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments.rb +4 -0
  93. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_column_properties.rb +4 -0
  94. data/lib/ooxml_parser/xlsx_parser/xlsx_parser.rb +3 -0
  95. 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
- if char_array.length == 3
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
- elsif char_array.length == 6
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
- elsif char_array.length == 8
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
- attr_accessor :alpha, :luminance_modulation, :luminance_offset
7
- attr_accessor :tint
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
@@ -11,6 +11,7 @@ module OoxmlParser
11
11
  @parent = parent
12
12
  end
13
13
 
14
+ # @return [String] result of convert of object to string
14
15
  def to_s
15
16
  @converted_color.to_s
16
17
  end
@@ -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
- attr_accessor :url, :tooltip, :coordinates, :highlight_click, :action
7
- attr_accessor :action_link
8
- attr_accessor :id
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
- attr_accessor :font_style, :font_color, :space, :dirty, :font_name, :font_size, :baseline, :hyperlink, :caps,
13
- :vertical_align, :outline
14
- attr_accessor :shadow
15
- attr_accessor :emboss
16
- attr_accessor :vanish
17
- attr_accessor :rtl
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(parent: nil)
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'
@@ -4,8 +4,10 @@
4
4
  module OoxmlParser
5
5
  # Class for parsing `w:ln` tags
6
6
  class Outline < OOXMLDocumentObject
7
- attr_accessor :width
8
- attr_accessor :color_scheme
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)