ooxml_parser 0.3.0 → 0.6.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.
Files changed (348) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ooxml_parser.rb +3 -0
  3. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content.rb +2 -0
  4. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/chart_style.rb +2 -0
  5. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice.rb +3 -0
  6. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text.rb +3 -0
  7. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text/math_paragraph.rb +3 -0
  8. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart.rb +33 -4
  9. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/pivot_formats.rb +33 -0
  10. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/pivot_formats/pivot_format.rb +26 -0
  11. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/plot_area.rb +67 -0
  12. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/plot_area/common_chart_data.rb +31 -0
  13. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series.rb +20 -7
  14. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text.rb +5 -3
  15. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/{string_reference.rb → number_string_reference.rb} +9 -7
  16. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/{string_cache.rb → number_string_cache.rb} +11 -6
  17. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/string_cache/point.rb +9 -2
  18. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/string_cache/point/text_value.rb +2 -0
  19. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/x_y_values.rb +22 -0
  20. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/view_3d.rb +2 -0
  21. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis.rb +3 -1
  22. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis/scaling.rb +2 -0
  23. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis_title.rb +7 -4
  24. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_cells_range.rb +4 -0
  25. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_legend.rb +3 -0
  26. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_point.rb +3 -1
  27. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/display_labels_properties.rb +6 -0
  28. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/docx_drawing.rb +2 -0
  29. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/docx_drawing/doc_properties.rb +2 -0
  30. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_distance_from_text.rb +2 -0
  31. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_position.rb +2 -0
  32. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_properties.rb +3 -1
  33. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_wrap_drawing.rb +2 -0
  34. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_coordinates.rb +11 -8
  35. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_size.rb +23 -14
  36. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/size_relative/picture_dimension.rb +2 -0
  37. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/size_relative_horizontal.rb +2 -0
  38. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/size_relative_vertical.rb +2 -0
  39. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/docx_graphic.rb +3 -1
  40. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip.rb +3 -0
  41. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +4 -0
  42. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_picture.rb +2 -0
  43. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape.rb +7 -0
  44. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/non_visual_shape_properties.rb +3 -0
  45. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/non_visual_shape_properties/common_non_visual_properties.rb +3 -1
  46. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/non_visual_shape_properties/non_visual_properties.rb +2 -0
  47. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/non_visual_shape_properties/non_visual_properties/shape_placeholder.rb +2 -0
  48. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/ooxml_text_box.rb +2 -0
  49. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style.rb +42 -0
  50. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/effect_reference.rb +35 -0
  51. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/fill_reference.rb +35 -0
  52. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/font_reference.rb +35 -0
  53. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/line_reference.rb +35 -0
  54. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/text_body.rb +2 -0
  55. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_body_properties/ooxml_shape_body_properties.rb +2 -0
  56. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_body_properties/ooxml_shape_body_properties/preset_text_warp.rb +2 -0
  57. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_color_scheme.rb +4 -2
  58. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_pattern_fill.rb +4 -2
  59. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/custom_geometry/docx_custom_geometry/docx_shape_line_path.rb +2 -0
  60. 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 +2 -0
  61. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/custom_geometry/ooxml_custom_geometry.rb +3 -1
  62. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_color.rb +3 -1
  63. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_line.rb +5 -2
  64. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties.rb +3 -1
  65. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/blip_fill.rb +2 -0
  66. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/blip_fill/blip.rb +2 -0
  67. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/blip_fill/blip/alpha_mod_fix.rb +2 -0
  68. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/preset_geometry.rb +2 -0
  69. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/preset_geometry/shape_adjust_value_list.rb +2 -0
  70. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/preset_geometry/shape_adjust_value_list/shape_guide.rb +2 -0
  71. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/text_box.rb +12 -11
  72. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_size.rb +11 -5
  73. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/line/line_end.rb +3 -0
  74. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/group/old_docx_group.rb +3 -1
  75. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/group/old_docx_group_element.rb +3 -1
  76. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/group/old_docx_group_properties.rb +3 -1
  77. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/old_docx_picture.rb +2 -0
  78. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape.rb +2 -0
  79. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_fill.rb +2 -0
  80. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_properties.rb +2 -0
  81. data/lib/ooxml_parser/common_parser/common_data/borders_properties.rb +22 -9
  82. data/lib/ooxml_parser/common_parser/common_data/color.rb +86 -70
  83. data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +25 -21
  84. data/lib/ooxml_parser/common_parser/common_data/color/ooxml_color.rb +7 -3
  85. data/lib/ooxml_parser/common_parser/common_data/colors/color_alpha_channel.rb +4 -1
  86. data/lib/ooxml_parser/common_parser/common_data/colors/color_properties.rb +2 -0
  87. data/lib/ooxml_parser/common_parser/common_data/colors/hsl_color.rb +12 -8
  88. data/lib/ooxml_parser/common_parser/common_data/colors/image_fill.rb +3 -0
  89. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill.rb +6 -1
  90. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color.rb +3 -1
  91. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/gradient_stop.rb +5 -3
  92. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/linear_gradient.rb +2 -0
  93. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/presentation_pattern.rb +4 -2
  94. data/lib/ooxml_parser/common_parser/common_data/colors/scheme_color.rb +5 -1
  95. data/lib/ooxml_parser/common_parser/common_data/colors/theme_colors.rb +14 -14
  96. data/lib/ooxml_parser/common_parser/common_data/colors/tile.rb +2 -0
  97. data/lib/ooxml_parser/common_parser/common_data/content_types.rb +36 -0
  98. data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_default.rb +23 -0
  99. data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_override.rb +23 -0
  100. data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +11 -6
  101. data/lib/ooxml_parser/common_parser/common_data/font_style.rb +3 -2
  102. data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +4 -2
  103. data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +19 -2
  104. data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_document_object_helper.rb +107 -116
  105. data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_object_attribute_helper.rb +31 -0
  106. data/lib/ooxml_parser/common_parser/common_data/paragraph.rb +2 -0
  107. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb +3 -0
  108. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb +24 -0
  109. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +9 -8
  110. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb +2 -0
  111. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/position.rb +2 -0
  112. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/run_spacing.rb +2 -0
  113. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/run_style.rb +2 -0
  114. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/shade.rb +9 -0
  115. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/size.rb +2 -0
  116. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/text.rb +2 -0
  117. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering_properties.rb +2 -0
  118. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb +3 -0
  119. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_spacing.rb +5 -3
  120. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +12 -25
  121. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing/line_spacing.rb +33 -0
  122. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs.rb +2 -0
  123. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs/tab.rb +3 -0
  124. data/lib/ooxml_parser/common_parser/common_data/paragraph/text_field.rb +2 -0
  125. data/lib/ooxml_parser/common_parser/common_data/relationships.rb +24 -19
  126. data/lib/ooxml_parser/common_parser/common_data/relationships/relationship.rb +2 -0
  127. data/lib/ooxml_parser/common_parser/common_data/table.rb +3 -0
  128. data/lib/ooxml_parser/common_parser/common_data/table/margins/paragraph_margins.rb +3 -8
  129. data/lib/ooxml_parser/common_parser/common_data/table/margins/table_margins.rb +3 -0
  130. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_element.rb +3 -1
  131. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_layout.rb +2 -0
  132. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_look.rb +2 -0
  133. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_position.rb +9 -2
  134. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style.rb +19 -17
  135. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_column_band_size.rb +2 -0
  136. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties.rb +3 -0
  137. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties/table_style_properties_helper.rb +4 -1
  138. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_row_band_size.rb +3 -1
  139. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell.rb +4 -0
  140. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties.rb +7 -4
  141. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/grid_span.rb +35 -0
  142. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/border.rb +2 -0
  143. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/borders.rb +21 -39
  144. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/table_cell_line.rb +2 -0
  145. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/table_cell_line/line_join.rb +4 -4
  146. data/lib/ooxml_parser/common_parser/common_data/table/row/row.rb +5 -2
  147. data/lib/ooxml_parser/common_parser/common_data/table/row/row/table_row_properties.rb +2 -0
  148. data/lib/ooxml_parser/common_parser/common_data/table/row/row/table_row_properties/table_row_height.rb +2 -0
  149. data/lib/ooxml_parser/common_parser/common_data/table/table_grid.rb +2 -0
  150. data/lib/ooxml_parser/common_parser/common_data/table/table_grid/grid_column.rb +3 -1
  151. data/lib/ooxml_parser/common_parser/common_data/table/table_properties.rb +26 -4
  152. data/lib/ooxml_parser/common_parser/common_data/table/table_properties/table_borders.rb +2 -0
  153. data/lib/ooxml_parser/common_parser/common_data/underline.rb +2 -0
  154. data/lib/ooxml_parser/common_parser/common_data/valued_child.rb +2 -0
  155. data/lib/ooxml_parser/common_parser/common_document_structure.rb +17 -0
  156. data/lib/ooxml_parser/common_parser/parser.rb +6 -2
  157. data/lib/ooxml_parser/configuration.rb +3 -0
  158. data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +73 -38
  159. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments.rb +36 -0
  160. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments/comment.rb +34 -0
  161. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments_extended.rb +4 -1
  162. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments_extended/comment_extended.rb +2 -0
  163. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_background.rb +2 -0
  164. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_properties.rb +3 -1
  165. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_settings.rb +6 -1
  166. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_structure_helpers.rb +2 -1
  167. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style.rb +9 -12
  168. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style/document_style_helper.rb +2 -0
  169. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +71 -81
  170. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/bookmark_end.rb +22 -0
  171. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/bookmark_start.rb +26 -0
  172. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/comment_range_end.rb +22 -0
  173. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/comment_range_start.rb +26 -0
  174. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula.rb +3 -0
  175. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/accent.rb +2 -0
  176. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/argument_properties.rb +2 -0
  177. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/argument_properties/argument_size.rb +2 -0
  178. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/bar.rb +2 -0
  179. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/box.rb +2 -0
  180. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/delimeter.rb +2 -0
  181. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/fraction.rb +2 -0
  182. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/function.rb +2 -0
  183. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/group_char.rb +2 -0
  184. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/index.rb +2 -0
  185. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/limit.rb +4 -2
  186. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/math_run.rb +2 -0
  187. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/math_run/math_run_properties.rb +2 -0
  188. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/matrix.rb +2 -0
  189. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/matrix/matrix_row.rb +2 -0
  190. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary.rb +2 -0
  191. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary/nary_properties.rb +2 -0
  192. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary/nary_properties/nary_grow.rb +2 -0
  193. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary/nary_properties/nary_limit_location.rb +2 -0
  194. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/pre_sub_superscript.rb +2 -0
  195. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/radical.rb +4 -2
  196. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_helper.rb +11 -6
  197. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +17 -20
  198. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +11 -3
  199. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/object.rb +2 -0
  200. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/object/ole_object.rb +2 -0
  201. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape.rb +39 -6
  202. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties.rb +3 -0
  203. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties/shape_margins.rb +3 -0
  204. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties/shape_size.rb +3 -0
  205. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties/stroke.rb +3 -0
  206. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/text_fill.rb +2 -0
  207. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/text_outline.rb +2 -0
  208. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/field_simple.rb +41 -0
  209. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/frame_properties.rb +3 -0
  210. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/indents.rb +3 -0
  211. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/inserted.rb +2 -0
  212. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/sdt/sdt_content.rb +24 -8
  213. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/sdt/sdt_properties.rb +2 -0
  214. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/structured_document_tag.rb +2 -0
  215. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/style_parametres.rb +3 -1
  216. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +4 -1
  217. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb +7 -1
  218. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering.rb +2 -0
  219. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/multilevel_type.rb +2 -0
  220. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level.rb +3 -2
  221. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/level_justification.rb +2 -0
  222. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/level_text.rb +2 -0
  223. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/numbering_format.rb +2 -0
  224. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/suffix.rb +2 -0
  225. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/numbering_definition.rb +4 -3
  226. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns.rb +7 -2
  227. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns/column.rb +2 -0
  228. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/document_grid.rb +2 -0
  229. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/footnote_properties.rb +2 -0
  230. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +13 -14
  231. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_margins.rb +10 -8
  232. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_properties.rb +3 -0
  233. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_size.rb +4 -0
  234. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles.rb +12 -1
  235. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles/document_defaults.rb +2 -0
  236. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles/document_defaults/paragraph_properties_default.rb +2 -0
  237. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles/document_defaults/run_properties_default.rb +2 -0
  238. data/lib/ooxml_parser/docx_parser/docx_parser.rb +3 -0
  239. data/lib/ooxml_parser/helpers/string_helper.rb +3 -1
  240. data/lib/ooxml_parser/name.rb +8 -0
  241. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +30 -37
  242. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/comment_authors.rb +39 -0
  243. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/comment_authors/comment_author.rb +38 -0
  244. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_comments.rb +33 -0
  245. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_comments/presentation_comment.rb +39 -0
  246. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_helpers.rb +3 -0
  247. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme.rb +9 -3
  248. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/font_scheme.rb +36 -0
  249. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/font_scheme/font_collection.rb +31 -0
  250. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/font_scheme/font_collection/text_font.rb +22 -0
  251. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/theme_color.rb +11 -8
  252. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide.rb +8 -4
  253. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/background.rb +4 -1
  254. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/background/background_properties.rb +2 -0
  255. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/background/background_properties/stretch.rb +2 -0
  256. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/common_slide_data.rb +2 -0
  257. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/common_slide_data/shape_tree.rb +2 -0
  258. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/connection_shape.rb +2 -0
  259. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/graphic_frame/graphic_frame.rb +5 -2
  260. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/presentation_alternate_content.rb +2 -4
  261. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/presentation_notes.rb +3 -1
  262. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shape/non_visual_shape_properties/hyperlinks/hyperlink_for_hover.rb +2 -0
  263. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/shapes_grouping.rb +2 -0
  264. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing.rb +2 -0
  265. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/animation_effect/animation_effect.rb +3 -0
  266. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/behavior/behavior.rb +3 -0
  267. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/behavior/target_element.rb +3 -9
  268. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/set_time_node.rb +3 -0
  269. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node.rb +4 -4
  270. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node/common_timing.rb +6 -3
  271. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node/common_timing/{condition.rb → codition_list/condition.rb} +3 -9
  272. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node/common_timing/condition_list.rb +27 -0
  273. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide_helper.rb +4 -0
  274. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition.rb +3 -0
  275. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition/sound_action.rb +5 -5
  276. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition/sound_action/sound.rb +2 -0
  277. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition_properties/transition_properties.rb +8 -2
  278. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition_properties/transition_properties/wheel.rb +22 -0
  279. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_size.rb +2 -0
  280. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/table_styles.rb +38 -0
  281. data/lib/ooxml_parser/pptx_parser/pptx_parser.rb +4 -1
  282. data/lib/ooxml_parser/version.rb +3 -1
  283. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +38 -38
  284. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb +3 -1
  285. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/shared_string_table.rb +46 -0
  286. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/shared_string_table/string_index.rb +26 -0
  287. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb +13 -1
  288. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs.rb +37 -0
  289. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/{worksheet/xlsx_row/xlsx_cell → style_sheet/cell_xfs}/cell_style/alignment.rb +2 -0
  290. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/xf.rb +145 -0
  291. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills.rb +2 -0
  292. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +2 -0
  293. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill/pattern_fill.rb +2 -0
  294. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts.rb +5 -3
  295. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts/font.rb +2 -0
  296. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/number_formats.rb +2 -5
  297. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/number_formats/number_format.rb +2 -0
  298. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/xlsx_borders.rb +37 -0
  299. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/xlsx_borders/xlsx_border.rb +34 -0
  300. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/workbook_helpers.rb +3 -0
  301. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +51 -25
  302. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments.rb +28 -29
  303. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/author.rb +16 -0
  304. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/comment_list.rb +26 -0
  305. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/excel_comment.rb +10 -0
  306. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/ole_objects.rb +2 -0
  307. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/page_setup.rb +105 -0
  308. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_format_properties.rb +2 -0
  309. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_view.rb +2 -0
  310. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_view/pane.rb +2 -0
  311. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part.rb +8 -1
  312. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter.rb +2 -0
  313. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column.rb +12 -0
  314. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column/custom_filters.rb +42 -0
  315. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/autofilter/filter_column/custom_filters/custom_filter.rb +26 -0
  316. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list.rb +2 -0
  317. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb +2 -0
  318. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups.rb +3 -1
  319. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/sparkline_groups/sparkline_group.rb +2 -0
  320. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/x14_table.rb +2 -0
  321. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/table_columns.rb +42 -0
  322. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/table_columns/table_column.rb +34 -0
  323. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/table_style_info.rb +2 -0
  324. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/worksheet_helper.rb +14 -0
  325. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_column_properties.rb +8 -1
  326. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing.rb +3 -0
  327. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_drawing_position_parameters.rb +2 -0
  328. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row.rb +3 -1
  329. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell.rb +60 -27
  330. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/formula.rb +39 -0
  331. data/lib/ooxml_parser/xlsx_parser/xlsx_parser.rb +4 -1
  332. metadata +87 -29
  333. data/LICENSE.txt +0 -661
  334. data/README.md +0 -43
  335. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/order.rb +0 -20
  336. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_index.rb +0 -20
  337. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/string_cache/point_count.rb +0 -20
  338. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/gradient_stop/preset_color.rb +0 -20
  339. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/language.rb +0 -20
  340. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties/vertical_merge.rb +0 -20
  341. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/merge.rb +0 -30
  342. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comment.rb +0 -28
  343. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/bookmark.rb +0 -21
  344. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/start.rb +0 -20
  345. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/numbering_definition/abstract_numbering_id.rb +0 -20
  346. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_comment.rb +0 -31
  347. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_comment/presentation_comment_author.rb +0 -26
  348. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style.rb +0 -128
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OoxmlParser
4
+ # Class for storing configuration
2
5
  class Configuration
3
6
  # @return [Integer] accuracy of digits in fraction part
4
7
  attr_accessor :accuracy
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # noinspection RubyInstanceMethodNamingConvention
2
- require_relative 'document_structure/comment'
4
+ require_relative 'document_structure/comments'
3
5
  require_relative 'document_structure/comments_extended'
4
6
  require_relative 'document_structure/docx_paragraph'
5
7
  require_relative 'document_structure/document_background'
@@ -12,20 +14,23 @@ require_relative 'document_structure/page_properties/page_properties'
12
14
  require_relative 'document_structure/document_settings'
13
15
  require_relative 'document_structure/styles'
14
16
  module OoxmlParser
17
+ # Basic class for DocumentStructure
15
18
  class DocumentStructure < CommonDocumentStructure
16
19
  include DocumentStyleHelper
17
20
  include DocumentStructureHelpers
18
21
  attr_accessor :elements, :page_properties, :notes, :background, :document_properties, :comments
19
22
 
20
- # @return [Array, DocumentStyle] array of document styles in current document
21
- attr_accessor :document_styles
22
23
  # @return [Numbering] store numbering data
23
24
  attr_accessor :numbering
24
25
  # @return [Styles] styles of document
25
26
  attr_accessor :styles
26
- attr_accessor :theme_colors
27
+ attr_accessor :theme
28
+ # @return [Relationships] relationships
29
+ attr_accessor :relationships
27
30
  # @return [DocumentSettings] settings
28
31
  attr_accessor :settings
32
+ # @return [CommentsDocument] comments of whole document
33
+ attr_accessor :comments_document
29
34
  # @return [CommentsExtended] extended comments
30
35
  attr_accessor :comments_extended
31
36
 
@@ -34,9 +39,11 @@ module OoxmlParser
34
39
  @notes = []
35
40
  @document_properties = DocumentProperties.new
36
41
  @comments = []
37
- @document_styles = []
42
+ super
38
43
  end
39
44
 
45
+ alias theme_colors theme
46
+
40
47
  def ==(other)
41
48
  @elements == other.elements &&
42
49
  @page_properties == other.page_properties &&
@@ -46,10 +53,6 @@ module OoxmlParser
46
53
  @comments == other.comments
47
54
  end
48
55
 
49
- def difference(other)
50
- Hash.object_to_hash(self).diff(Hash.object_to_hash(other))
51
- end
52
-
53
56
  def element_by_description(location: :canvas, type: :docx_paragraph)
54
57
  case location
55
58
  when :canvas
@@ -66,7 +69,7 @@ module OoxmlParser
66
69
  when :footer
67
70
  case type
68
71
  when :table
69
- note_by_description(:footer1).elements[1].rows[0].cells[0].elements
72
+ note_by_description(:footer1).elements[0].rows[0].cells[0].elements
70
73
  when :docx_paragraph, :simple, :paragraph
71
74
  note_by_description(:footer1).elements
72
75
  when :shape
@@ -77,7 +80,7 @@ module OoxmlParser
77
80
  when :header
78
81
  case type
79
82
  when :table
80
- note_by_description(:header1).elements[1].rows[0].cells[0].elements
83
+ note_by_description(:header1).elements[0].rows[0].cells[0].elements
81
84
  when :docx_paragraph, :simple, :paragraph
82
85
  note_by_description(:header1).elements
83
86
  when :shape
@@ -116,34 +119,25 @@ module OoxmlParser
116
119
  set
117
120
  end
118
121
 
122
+ # @return [Array<DocumentStyle>] style of documents
123
+ def document_styles
124
+ styles.styles
125
+ end
126
+
119
127
  def self.parse
120
128
  doc_structure = DocumentStructure.new
129
+ doc_structure.content_types = ContentTypes.new(parent: doc_structure).parse
121
130
  OOXMLDocumentObject.root_subfolder = 'word/'
122
131
  OOXMLDocumentObject.xmls_stack = []
123
132
  @comments = []
124
133
  DocumentStructure.default_paragraph_style = DocxParagraph.new
125
- DocumentStructure.default_run_style = DocxParagraphRun.new
126
- doc_structure.theme_colors = PresentationTheme.parse('word/theme/theme1.xml')
127
- OOXMLDocumentObject.add_to_xmls_stack('word/styles.xml')
128
- doc = Nokogiri::XML(File.open(OOXMLDocumentObject.current_xml))
129
- # TODO: Remove this old way parsing in favor of doc_structure.styles.document_defaults
130
- doc.search('//w:docDefaults').each do |doc_defaults|
131
- doc_defaults.xpath('w:pPrDefault').each do |p_pr_defaults|
132
- DocumentStructure.default_paragraph_style = DocxParagraph.new.parse(p_pr_defaults, 0)
133
- end
134
- doc_defaults.xpath('w:rPrDefault').each do |r_pr_defaults|
135
- r_pr_defaults.xpath('w:rPr').each do |r_pr|
136
- DocumentStructure.default_run_style = DocxParagraphRun.new.parse_properties(r_pr)
137
- end
138
- end
139
- end
140
- parse_default_style
141
- doc_structure.numbering = Numbering.new(parent: doc_structure).parse
142
- doc_structure.document_styles = DocumentStyle.parse_list(doc_structure)
143
- doc_structure.styles = Styles.new(parent: doc_structure).parse
134
+ DocumentStructure.default_run_style = DocxParagraphRun.new(parent: doc_structure)
135
+ doc_structure.theme = PresentationTheme.parse('word/theme/theme1.xml')
136
+ doc_structure.relationships = Relationships.new(parent: self).parse_file("#{OOXMLDocumentObject.path_to_folder}word/_rels/document.xml.rels")
137
+ doc_structure.parse_styles
144
138
  number = 0
145
139
  OOXMLDocumentObject.add_to_xmls_stack('word/document.xml')
146
- doc = Nokogiri::XML(File.open(OOXMLDocumentObject.current_xml))
140
+ doc = doc_structure.parse_xml(OOXMLDocumentObject.current_xml)
147
141
  doc.search('//w:document').each do |document|
148
142
  document.xpath('w:background').each do |background|
149
143
  doc_structure.background = DocumentBackground.new(parent: doc_structure).parse(background)
@@ -165,7 +159,7 @@ module OoxmlParser
165
159
  number += 1
166
160
  doc_structure.elements << table
167
161
  when 'sdt'
168
- doc_structure.elements << StructuredDocumentTag.new(parent: self).parse(element)
162
+ doc_structure.elements << StructuredDocumentTag.new(parent: doc_structure).parse(element)
169
163
  end
170
164
  end
171
165
  body.xpath('w:sectPr').each do |sect_pr|
@@ -178,24 +172,34 @@ module OoxmlParser
178
172
  end
179
173
  OOXMLDocumentObject.xmls_stack.pop
180
174
  doc_structure.document_properties = DocumentProperties.new(parent: doc_structure).parse
181
- doc_structure.comments = Comment.parse_list(parent: doc_structure)
175
+ doc_structure.comments = Comments.new(parent: doc_structure).parse
182
176
  doc_structure.comments_extended = CommentsExtended.new(parent: doc_structure).parse
177
+ doc_structure.comments_document = Comments.new(parent: doc_structure,
178
+ file: "#{OOXMLDocumentObject.path_to_folder}word/#{doc_structure.relationships.target_by_type('commentsDocument').first}")
179
+ .parse
183
180
  doc_structure.settings = DocumentSettings.new(parent: doc_structure).parse
184
181
  doc_structure
185
182
  end
186
183
 
187
- def self.parse_default_style
188
- doc = Nokogiri::XML(File.open(OOXMLDocumentObject.path_to_folder + 'word/styles.xml'))
184
+ def parse_default_style
185
+ doc = parse_xml(OOXMLDocumentObject.path_to_folder + 'word/styles.xml')
189
186
  doc.search('//w:style').each do |style|
190
187
  next if style.attribute('default').nil?
191
- if (style.attribute('default').value == '1' || style.attribute('default').value == 'on' || style.attribute('default').value == 'true') && style.attribute('type').value == 'paragraph'
188
+
189
+ if (style.attribute('default').value == '1' ||
190
+ style.attribute('default').value == 'on' ||
191
+ style.attribute('default').value == 'true') &&
192
+ style.attribute('type').value == 'paragraph'
192
193
  style.xpath('w:pPr').each do |paragraph_pr_tag|
193
194
  DocumentStructure.default_paragraph_style = DocxParagraph.new.parse_paragraph_style(paragraph_pr_tag, DocumentStructure.default_run_style)
194
195
  end
195
196
  style.xpath('w:rPr').each do |character_pr_tag|
196
197
  DocumentStructure.default_run_style.parse_properties(character_pr_tag, DocumentStructure.default_run_style)
197
198
  end
198
- elsif (style.attribute('default').value == '1' || style.attribute('default').value == 'on' || style.attribute('default').value == 'true') && style.attribute('type').value == 'character'
199
+ elsif (style.attribute('default').value == '1' ||
200
+ style.attribute('default').value == 'on' ||
201
+ style.attribute('default').value == 'true') &&
202
+ style.attribute('type').value == 'character'
199
203
  style.xpath('w:rPr').each do |character_pr_tag|
200
204
  DocumentStructure.default_run_style.parse_properties(character_pr_tag, DocumentStructure.default_run_style)
201
205
  end
@@ -206,13 +210,44 @@ module OoxmlParser
206
210
  DocumentStructure.default_table_run_style = DocumentStructure.default_run_style.dup
207
211
  doc.search('//w:style').each do |style|
208
212
  next if style.attribute('default').nil?
209
- next unless (style.attribute('default').value == '1' || style.attribute('default').value == 'on' || style.attribute('default').value == 'true') && style.attribute('type').value == 'table'
213
+ next unless (style.attribute('default').value == '1' ||
214
+ style.attribute('default').value == 'on' ||
215
+ style.attribute('default').value == 'true') &&
216
+ style.attribute('type').value == 'table'
217
+
210
218
  style.xpath('w:rPr').each do |table_character_pr_tag|
211
219
  DocumentStructure.default_table_run_style.parse_properties(table_character_pr_tag, DocumentStructure.default_run_style)
212
220
  end
213
221
  end
214
222
  end
215
223
 
224
+ # Perform parsing styles.xml
225
+ def parse_styles
226
+ file = "#{OOXMLDocumentObject.path_to_folder}/word/styles.xml"
227
+ DocumentStructure.default_paragraph_style = DocxParagraph.new(parent: self)
228
+ DocumentStructure.default_table_paragraph_style = DocxParagraph.new(parent: self)
229
+ DocumentStructure.default_run_style = DocxParagraphRun.new(parent: self)
230
+ DocumentStructure.default_table_run_style = DocxParagraphRun.new(parent: self)
231
+
232
+ return unless File.exist?(file)
233
+
234
+ doc = parse_xml(file)
235
+ # TODO: Remove this old way parsing in favor of doc_structure.styles.document_defaults
236
+ doc.search('//w:docDefaults').each do |doc_defaults|
237
+ doc_defaults.xpath('w:pPrDefault').each do |p_pr_defaults|
238
+ DocumentStructure.default_paragraph_style = DocxParagraph.new(parent: self).parse(p_pr_defaults, 0)
239
+ end
240
+ doc_defaults.xpath('w:rPrDefault').each do |r_pr_defaults|
241
+ r_pr_defaults.xpath('w:rPr').each do |r_pr|
242
+ DocumentStructure.default_run_style = DocxParagraphRun.new(parent: self).parse_properties(r_pr)
243
+ end
244
+ end
245
+ end
246
+ parse_default_style
247
+ @numbering = Numbering.new(parent: self).parse
248
+ @styles = Styles.new(parent: self).parse
249
+ end
250
+
216
251
  class << self
217
252
  attr_accessor :default_table_run_style
218
253
  attr_accessor :default_table_paragraph_style
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'comments/comment'
4
+ module OoxmlParser
5
+ # Class for parsing `comments.xml` file
6
+ class Comments < OOXMLDocumentObject
7
+ # @return [Array<Comment>] list of comments
8
+ attr_reader :comments_array
9
+
10
+ def initialize(params = {})
11
+ @comments_array = []
12
+ @parent = params[:parent]
13
+ @file = params.fetch(:file, OOXMLDocumentObject.path_to_folder + 'word/comments.xml')
14
+ end
15
+
16
+ # @return [Comment] accessor
17
+ def [](key)
18
+ @comments_array[key]
19
+ end
20
+
21
+ # Parse CommentsExtended object
22
+ # @return [Comments] result of parsing
23
+ def parse
24
+ return nil unless File.file?(@file)
25
+
26
+ doc = parse_xml(@file)
27
+ doc.xpath('w:comments/*').each do |node_child|
28
+ case node_child.name
29
+ when 'comment'
30
+ @comments_array << Comment.new(parent: self).parse(node_child)
31
+ end
32
+ end
33
+ self
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OoxmlParser
4
+ # Comment Data
5
+ class Comment < OOXMLDocumentObject
6
+ # @return [Integer] id of comment
7
+ attr_reader :id
8
+ # @return [Array<DocxParagraph>] array of paragraphs
9
+ attr_reader :paragraphs
10
+
11
+ def initialize(id = nil, paragraphs = [], parent: nil)
12
+ @id = id
13
+ @paragraphs = paragraphs
14
+ @parent = parent
15
+ end
16
+
17
+ def parse(node)
18
+ node.attributes.each do |key, value|
19
+ case key
20
+ when 'id'
21
+ @id = value.value.to_i
22
+ end
23
+ end
24
+
25
+ node.xpath('*').each do |node_child|
26
+ case node_child.name
27
+ when 'p'
28
+ @paragraphs << DocxParagraph.new.parse(node_child, 0, parent: self)
29
+ end
30
+ end
31
+ self
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'comments_extended/comment_extended'
2
4
  module OoxmlParser
3
5
  # Class for parsing `commentsExtended.xml` file
@@ -17,7 +19,8 @@ module OoxmlParser
17
19
  def parse
18
20
  file_to_parse = OOXMLDocumentObject.path_to_folder + 'word/commentsExtended.xml'
19
21
  return nil unless File.exist?(file_to_parse)
20
- doc = Nokogiri::XML(File.open(file_to_parse))
22
+
23
+ doc = parse_xml(file_to_parse)
21
24
  doc.xpath('w15:commentsEx/*').each do |node_child|
22
25
  case node_child.name
23
26
  when 'commentEx'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OoxmlParser
2
4
  # Class for parsing `w15:commentEx` tag
3
5
  class CommentExtended < OOXMLDocumentObject
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OoxmlParser
2
4
  # Class for describing Document Background `w:background`
3
5
  class DocumentBackground < OOXMLDocumentObject
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OoxmlParser
2
4
  # Document Properties
3
5
  class DocumentProperties < OOXMLDocumentObject
@@ -11,7 +13,7 @@ module OoxmlParser
11
13
  warn "There is no 'docProps/app.xml' in docx. It may be some problem with it"
12
14
  return self
13
15
  end
14
- node = Nokogiri::XML(File.open(properties_file))
16
+ node = parse_xml(properties_file)
15
17
  node.xpath('*').each do |node_child|
16
18
  case node_child.name
17
19
  when 'Properties'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OoxmlParser
2
4
  # Class for parsing `settings.xml` file
3
5
  class DocumentSettings < OOXMLDocumentObject
@@ -7,7 +9,10 @@ module OoxmlParser
7
9
  # Parse Settings object
8
10
  # @return [DocumentSettings] result of parsing
9
11
  def parse
10
- doc = Nokogiri::XML(File.open(OOXMLDocumentObject.path_to_folder + 'word/settings.xml'))
12
+ settings_path = OOXMLDocumentObject.path_to_folder + 'word/settings.xml'
13
+ return nil unless File.exist?(settings_path)
14
+
15
+ doc = parse_xml(settings_path)
11
16
  doc.xpath('w:settings/*').each do |node_child|
12
17
  case node_child.name
13
18
  when 'defaultTabStop'
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OoxmlParser
2
4
  # method to help to work with DocumentStructure
3
5
  module DocumentStructureHelpers
4
6
  # @return [True, false] if structure contain any user data
5
7
  def with_data?
6
- return true if @elements.length > 1
7
8
  @elements.each do |current_element|
8
9
  return true if current_element.with_data?
9
10
  end
@@ -1,9 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'document_style/document_style_helper'
2
4
  module OoxmlParser
3
5
  # Class for describing styles containing in +styles.xml+
4
6
  class DocumentStyle < OOXMLDocumentObject
5
7
  include TableStylePropertiesHelper
6
8
  include DocumentStyleHelper
9
+
10
+ # @return [True, False] is style default
11
+ attr_reader :default
7
12
  # @return [Symbol] Type of style (+:paragraph+ or +:table+)
8
13
  attr_accessor :type
9
14
  # @return [FixNum] number of style
@@ -30,6 +35,7 @@ module OoxmlParser
30
35
  # Used to determine if current style is visible in style list in editors
31
36
  # According to http://www.wordarticles.com/Articles/WordStyles/LatentStyles.php
32
37
  attr_accessor :q_format
38
+
33
39
  alias visible? q_format
34
40
 
35
41
  def initialize(parent: nil)
@@ -55,6 +61,8 @@ module OoxmlParser
55
61
  @type = value.value.to_sym
56
62
  when 'styleId'
57
63
  @style_id = value.value
64
+ when 'default'
65
+ @default = attribute_enabled?(value.value)
58
66
  end
59
67
  end
60
68
  node.xpath('*').each do |subnode|
@@ -66,7 +74,7 @@ module OoxmlParser
66
74
  when 'next'
67
75
  @next_style = subnode.attribute('val').value
68
76
  when 'rPr'
69
- @run_properties = DocxParagraphRun.new.parse_properties(subnode)
77
+ @run_properties = DocxParagraphRun.new(parent: self).parse_properties(subnode)
70
78
  when 'pPr'
71
79
  @paragraph_properties = ParagraphProperties.new(parent: self).parse(subnode)
72
80
  when 'tblPr'
@@ -84,16 +92,5 @@ module OoxmlParser
84
92
  fill_empty_table_styles
85
93
  self
86
94
  end
87
-
88
- # Parse all document style list
89
- # @return [Array, DocumentStyle]
90
- def self.parse_list(parent)
91
- styles_array = []
92
- doc = Nokogiri::XML(File.open(OOXMLDocumentObject.path_to_folder + 'word/styles.xml'))
93
- doc.search('//w:style').each do |style|
94
- styles_array << DocumentStyle.new(parent: parent).parse(style)
95
- end
96
- styles_array
97
- end
98
95
  end
99
96
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OoxmlParser
2
4
  # Helper methods for working with Style List
3
5
  module DocumentStyleHelper
@@ -1,7 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # noinspection RubyTooManyInstanceVariablesInspection
2
- require_relative 'docx_paragraph/bookmark'
4
+ require_relative 'docx_paragraph/bookmark_start'
5
+ require_relative 'docx_paragraph/bookmark_end'
6
+ require_relative 'docx_paragraph/comment_range_end'
7
+ require_relative 'docx_paragraph/comment_range_start'
3
8
  require_relative 'docx_paragraph/docx_paragraph_helper'
4
9
  require_relative 'docx_paragraph/docx_paragraph_run'
10
+ require_relative 'docx_paragraph/field_simple'
5
11
  require_relative 'docx_paragraph/indents'
6
12
  require_relative 'docx_paragraph/inserted'
7
13
  require_relative 'docx_paragraph/structured_document_tag'
@@ -9,24 +15,27 @@ require_relative 'docx_paragraph/frame_properties'
9
15
  require_relative 'docx_paragraph/docx_formula'
10
16
  require_relative 'docx_paragraph/style_parametres'
11
17
  module OoxmlParser
18
+ # Class for data of DocxParagraph
12
19
  class DocxParagraph < OOXMLDocumentObject
13
20
  include DocxParagraphHelper
14
21
  attr_accessor :number, :bookmark_start, :bookmark_end, :align, :spacing, :background_color, :ind, :numbering,
15
- :character_style_array, :horizontal_line, :page_break, :kinoku, :borders, :keep_lines,
22
+ :character_style_array, :page_break, :borders, :keep_lines,
16
23
  :contextual_spacing, :sector_properties, :page_numbering, :section_break, :style, :keep_next,
17
- :orphan_control, :frame_properties
24
+ :orphan_control
18
25
  # @return [Hyperlink] hyperlink in paragraph
19
26
  attr_reader :hyperlink
20
27
  # @return [ParagraphProperties] Properties of current paragraph
21
28
  attr_accessor :paragraph_properties
22
29
  # @return [Inserted] data inserted by review
23
30
  attr_accessor :inserted
31
+ # @return [FieldSimple] field simple
32
+ attr_reader :field_simple
24
33
  # @return [Integer] id of paragraph (for comment)
25
34
  attr_accessor :paragraph_id
35
+ # @return [MathParagraph] math paragraph
36
+ attr_reader :math_paragraph
26
37
  # @return [Integer] id of text (for comment)
27
38
  attr_accessor :text_id
28
- # @return [StructuredDocumentTag] structured document tag data
29
- attr_accessor :sdt
30
39
 
31
40
  def initialize(parent: nil)
32
41
  @number = 0
@@ -35,9 +44,7 @@ module OoxmlParser
35
44
  @align = 'left'
36
45
  @spacing = Spacing.new
37
46
  @ind = Indents.new
38
- @kinoku = false
39
47
  @character_style_array = []
40
- @horizontal_line = false
41
48
  @page_break = false
42
49
  @borders = Borders.new
43
50
  @keep_lines = false
@@ -48,6 +55,8 @@ module OoxmlParser
48
55
  @parent = parent
49
56
  end
50
57
 
58
+ alias elements character_style_array
59
+
51
60
  def initialize_copy(source)
52
61
  super
53
62
  @bookmark_start = source.bookmark_start.clone
@@ -58,16 +67,14 @@ module OoxmlParser
58
67
 
59
68
  def nonempty_runs
60
69
  @character_style_array.select do |cur_run|
61
- if cur_run.is_a?(DocxParagraphRun)
62
- (!cur_run.text.empty? ||
63
- !cur_run.alternate_content.nil? ||
64
- !cur_run.drawing.nil? ||
65
- !cur_run.object.nil? ||
66
- !cur_run.shape.nil? ||
67
- !cur_run.footnote.nil? ||
68
- !cur_run.endnote.nil?
69
- )
70
- elsif cur_run.is_a?(DocxFormula)
70
+ if cur_run.is_a?(DocxParagraphRun) || cur_run.is_a?(ParagraphRun)
71
+ !cur_run.empty?
72
+ elsif cur_run.is_a?(DocxFormula) ||
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)
71
78
  true
72
79
  end
73
80
  end
@@ -77,14 +84,7 @@ module OoxmlParser
77
84
 
78
85
  # @return [True, false] if structure contain any user data
79
86
  def with_data?
80
- !nonempty_runs.empty?
81
- end
82
-
83
- def remove_empty_runs
84
- nonempty = nonempty_runs
85
- @character_style_array.each do |cur_run|
86
- @character_style_array.delete(cur_run) unless nonempty.include?(cur_run)
87
- end
87
+ !nonempty_runs.empty? || paragraph_properties.section_properties
88
88
  end
89
89
 
90
90
  def ==(other)
@@ -98,10 +98,11 @@ module OoxmlParser
98
98
  end
99
99
 
100
100
  def parse(node, par_number = 0, default_character = DocxParagraphRun.new, parent: nil)
101
- @parent = parent
101
+ @parent ||= parent
102
102
  default_character_style = default_character.dup
103
103
  character_styles_array = []
104
104
  custom_character_style = default_character_style.dup
105
+ custom_character_style.parent = self
105
106
  char_number = 0
106
107
  comments = []
107
108
  node.attributes.each do |key, value|
@@ -115,30 +116,20 @@ module OoxmlParser
115
116
  node.xpath('*').each do |node_child|
116
117
  case node_child.name
117
118
  when 'bookmarkStart'
118
- @bookmark_start << Bookmark.new(parent: self).parse(node_child)
119
+ character_styles_array << BookmarkStart.new(parent: self).parse(node_child)
119
120
  when 'bookmarkEnd'
120
- @bookmark_end << Bookmark.new(parent: self).parse(node_child)
121
+ character_styles_array << BookmarkEnd.new(parent: self).parse(node_child)
121
122
  when 'pPr'
122
123
  parse_paragraph_style(node_child, custom_character_style)
123
- node.xpath('w:pict').each do |pict|
124
- pict.xpath('v:rect').each do
125
- @horizontal_line = true
126
- end
127
- end
128
124
  @paragraph_properties = ParagraphProperties.new(parent: self).parse(node_child)
129
125
  when 'commentRangeStart'
130
- comments << node_child.attribute('id').value
126
+ character_styles_array << CommentRangeStart.new(parent: self).parse(node_child)
127
+ when 'commentRangeEnd'
128
+ character_styles_array << CommentRangeEnd.new(parent: self).parse(node_child)
131
129
  when 'fldSimple'
132
- instruction = node_child.attribute('instr').to_s
133
- @page_numbering = true if instruction.include?('PAGE')
134
- node_child.xpath('w:r').each do |r_tag|
135
- character_style = default_character_style.dup
136
- character_style.parse(r_tag, char_number, parent: parent)
137
- character_style.page_number = @page_numbering
138
- character_style.instruction = instruction
139
- character_styles_array << character_style.dup
140
- char_number += 1
141
- end
130
+ @field_simple = FieldSimple.new(parent: self).parse(node_child)
131
+ @page_numbering = true if field_simple.page_numbering?
132
+ character_styles_array += field_simple.runs
142
133
  when 'r'
143
134
  character_style = custom_character_style.dup
144
135
  node_child.xpath('w:instrText').each do |insrt_text|
@@ -147,47 +138,33 @@ module OoxmlParser
147
138
  character_style.parse(node_child, char_number, parent: self)
148
139
  character_style.comments = comments.dup
149
140
  character_styles_array << character_style.dup
150
- character_styles_array.last.shape = character_style.shape unless character_style.shape.nil?
141
+ character_styles_array.last.shape = character_style.shape if character_style.shape
151
142
  char_number += 1
152
143
  when 'hyperlink'
153
144
  @hyperlink = Hyperlink.new(parent: self).parse(node_child)
154
145
  character_style = default_character_style.dup
155
- if !node_child.attribute('id').nil?
146
+ character_style.parent = self
147
+ if node_child.attribute('id')
156
148
  character_style.link = Hyperlink.new(parent: character_style).parse(node_child)
157
- else
158
- character_style.link = node_child.attribute('anchor').value unless node_child.attribute('anchor').nil?
149
+ elsif node_child.attribute('anchor')
150
+ character_style.link = node_child.attribute('anchor').value
159
151
  end
160
152
  node_child.xpath('w:r').each do |r_tag|
161
- character_style.parse(r_tag, char_number, parent: parent)
153
+ character_style.parse(r_tag, char_number, parent: self)
162
154
  character_styles_array << character_style.dup
163
155
  char_number += 1
164
156
  end
165
157
  node_child.xpath('w:fldSimple').each do |simple_field|
166
- instruction = simple_field.attribute('instr').to_s
167
- @page_numbering = true if instruction.include?('PAGE')
168
- simple_field.xpath('w:r').each do |r_tag|
169
- character_style.parse(r_tag, char_number, parent: self)
170
- character_style.page_number = @page_numbering
171
- character_style.instruction = instruction
172
- character_styles_array << character_style.dup
173
- char_number += 1
174
- end
158
+ hyperlink_field_simple = FieldSimple.new(parent: self).parse(simple_field)
159
+ character_styles_array += hyperlink_field_simple.runs
175
160
  end
176
161
  when 'oMathPara'
177
- node_child.xpath('m:oMath').each do |o_math|
178
- character_styles_array << DocxFormula.new(parent: self).parse(o_math)
179
- end
180
- when 'commentRangeEnd'
181
- comments.each_with_index do |comment, index|
182
- if comment == node_child.attribute('id').value
183
- comments.delete_at(index)
184
- break
185
- end
186
- end
162
+ @math_paragraph = MathParagraph.new(parent: self).parse(node_child)
163
+ character_styles_array << math_paragraph.math
187
164
  when 'ins'
188
165
  @inserted = Inserted.new(parent: self).parse(node_child)
189
166
  when 'sdt'
190
- @sdt = StructuredDocumentTag.new(parent: self).parse(node_child)
167
+ character_styles_array << StructuredDocumentTag.new(parent: self).parse(node_child)
191
168
  end
192
169
  end
193
170
  @number = par_number
@@ -197,7 +174,7 @@ module OoxmlParser
197
174
  self
198
175
  end
199
176
 
200
- def parse_paragraph_style(node, default_char_style = DocxParagraphRun.new)
177
+ def parse_paragraph_style(node, default_char_style = DocxParagraphRun.new(parent: self))
201
178
  node.xpath('*').each do |node_child|
202
179
  case node_child.name
203
180
  when 'pageBreakBefore'
@@ -221,13 +198,9 @@ module OoxmlParser
221
198
  @background_color = Color.new(parent: self).parse_hex_string(background_color_string)
222
199
  @background_color.set_style(node_child.attribute('val').value.to_sym) unless node_child.attribute('val').nil?
223
200
  when 'pStyle'
224
- DocxParagraph.parse_paragraph_style_xml(node_child.attribute('val').value, self, default_char_style)
201
+ parse_paragraph_style_xml(node_child.attribute('val').value, default_char_style)
225
202
  when 'ind'
226
203
  @ind = DocumentStructure.default_paragraph_style.ind.dup.parse(node_child)
227
- when 'kinoku'
228
- @kinoku = true
229
- when 'framePr'
230
- @frame_properties = FrameProperties.new(parent: self).parse(node_child)
231
204
  when 'numPr'
232
205
  @numbering = NumberingProperties.new(parent: self).parse(node_child)
233
206
  when 'jc'
@@ -245,8 +218,6 @@ module OoxmlParser
245
218
  @section_break = case @sector_properties.type
246
219
  when 'oddPage'
247
220
  'Odd page'
248
- when 'evenPage'
249
- 'Even page'
250
221
  when 'continuous'
251
222
  'Current Page'
252
223
  else
@@ -258,13 +229,14 @@ module OoxmlParser
258
229
  self
259
230
  end
260
231
 
261
- def self.parse_paragraph_style_xml(id, paragraph_style, character_style)
262
- doc = Nokogiri::XML(File.open(OOXMLDocumentObject.path_to_folder + 'word/styles.xml'))
232
+ def parse_paragraph_style_xml(id, character_style)
233
+ doc = parse_xml(OOXMLDocumentObject.path_to_folder + 'word/styles.xml')
263
234
  doc.search('//w:style').each do |style|
264
235
  next unless style.attribute('styleId').value == id
236
+
265
237
  style.xpath('w:pPr').each do |p_pr|
266
- paragraph_style.parse_paragraph_style(p_pr, character_style)
267
- paragraph_style.style = StyleParametres.new(parent: paragraph_style).parse(style)
238
+ parse_paragraph_style(p_pr, character_style)
239
+ @style = StyleParametres.new(parent: self).parse(style)
268
240
  end
269
241
  style.xpath('w:rPr').each do |r_pr|
270
242
  character_style.parse_properties(r_pr, DocumentStructure.default_run_style)
@@ -272,5 +244,23 @@ module OoxmlParser
272
244
  break
273
245
  end
274
246
  end
247
+
248
+ extend Gem::Deprecate
249
+ deprecate :page_numbering, 'field_simple.page_numbering?', 2020, 1
250
+
251
+ # @return [OoxmlParser::StructuredDocumentTag] Return first sdt element
252
+ def sdt
253
+ @character_style_array.each do |cur_element|
254
+ return cur_element if cur_element.is_a?(StructuredDocumentTag)
255
+ end
256
+ nil
257
+ end
258
+ deprecate :sdt, 'nonempty_runs[i]', 2020, 1
259
+
260
+ # @return [OoxmlParser::FrameProperties] Return frame properties
261
+ def frame_properties
262
+ paragraph_properties.frame_properties
263
+ end
264
+ deprecate :frame_properties, 'paragraph_properties.frame_properties', 2020, 1
275
265
  end
276
266
  end