ooxml_parser 0.1.2 → 0.2.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 (315) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -5
  3. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/chart_style.rb +19 -0
  4. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text/math_paragraph.rb +18 -0
  5. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text.rb +19 -0
  6. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice.rb +20 -0
  7. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content.rb +20 -14
  8. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/order.rb +20 -0
  9. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_index.rb +20 -0
  10. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/string_cache/point/text_value.rb +15 -0
  11. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/string_cache/point.rb +31 -0
  12. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/string_cache/point_count.rb +20 -0
  13. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference/string_cache.rb +31 -0
  14. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text/string_reference.rb +25 -0
  15. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text.rb +23 -0
  16. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series.rb +39 -0
  17. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/view_3d.rb +32 -0
  18. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart.rb +81 -74
  19. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis.rb +20 -13
  20. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis_title.rb +15 -14
  21. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_cells_range.rb +15 -12
  22. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_legend.rb +15 -10
  23. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/display_labels_properties.rb +22 -11
  24. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/docx_drawing/doc_properties.rb +24 -0
  25. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/docx_drawing.rb +34 -20
  26. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_distance_from_text.rb +9 -10
  27. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_position.rb +18 -25
  28. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_properties.rb +4 -1
  29. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_wrap_drawing.rb +23 -20
  30. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_coordinates.rb +15 -5
  31. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_size.rb +104 -0
  32. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/size_relative/picture_dimension.rb +17 -0
  33. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/size_relative_horizontal.rb +31 -0
  34. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/size_relative_vertical.rb +30 -0
  35. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/docx_graphic.rb +17 -16
  36. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +34 -0
  37. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip.rb +12 -15
  38. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_picture.rb +15 -10
  39. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/non_visual_shape_properties/common_non_visual_properties.rb +38 -0
  40. 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 +21 -0
  41. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/non_visual_shape_properties/non_visual_properties.rb +29 -0
  42. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/non_visual_shape_properties.rb +22 -0
  43. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/ooxml_text_box.rb +29 -0
  44. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/text_body.rb +26 -0
  45. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape.rb +27 -10
  46. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_body_properties/ooxml_shape_body_properties/preset_text_warp.rb +7 -4
  47. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_body_properties/ooxml_shape_body_properties.rb +20 -11
  48. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_color_scheme.rb +18 -15
  49. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_pattern_fill.rb +11 -9
  50. 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 +39 -0
  51. 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 +15 -27
  52. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/custom_geometry/ooxml_custom_geometry.rb +13 -9
  53. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_color.rb +20 -23
  54. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_line.rb +27 -22
  55. 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 +19 -0
  56. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/blip_fill/blip.rb +21 -0
  57. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/blip_fill.rb +24 -0
  58. 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 +24 -0
  59. 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 +31 -0
  60. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/preset_geometry.rb +24 -0
  61. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/text_box.rb +3 -3
  62. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties.rb +22 -13
  63. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_size.rb +20 -12
  64. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/line/line_end.rb +9 -8
  65. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/group/old_docx_group.rb +15 -13
  66. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/old_docx_picture.rb +14 -12
  67. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape.rb +15 -12
  68. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_fill.rb +18 -14
  69. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_properties.rb +12 -11
  70. data/lib/ooxml_parser/common_parser/common_data/borders_properties.rb +20 -24
  71. data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +25 -0
  72. data/lib/ooxml_parser/common_parser/common_data/color.rb +48 -182
  73. data/lib/ooxml_parser/common_parser/common_data/colors/color_properties.rb +15 -10
  74. data/lib/ooxml_parser/common_parser/common_data/colors/hsl_color.rb +1 -63
  75. data/lib/ooxml_parser/common_parser/common_data/colors/image_fill.rb +17 -20
  76. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/gradient_stop/preset_color.rb +20 -0
  77. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/gradient_stop.rb +20 -7
  78. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/linear_gradient.rb +12 -11
  79. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color.rb +17 -17
  80. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/presentation_pattern.rb +15 -9
  81. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill.rb +19 -16
  82. data/lib/ooxml_parser/common_parser/common_data/colors/tile.rb +10 -6
  83. data/lib/ooxml_parser/common_parser/common_data/font_style.rb +1 -61
  84. data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +33 -26
  85. data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object/ooxml_document_object_helper.rb +97 -0
  86. data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +23 -37
  87. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb +71 -23
  88. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/language.rb +20 -0
  89. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb +11 -7
  90. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/position.rb +20 -0
  91. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/run_spacing.rb +20 -0
  92. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/run_style.rb +25 -0
  93. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/shade.rb +38 -0
  94. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/size.rb +20 -0
  95. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +92 -40
  96. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb +12 -8
  97. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering_properties.rb +37 -0
  98. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb +53 -0
  99. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_spacing.rb +36 -0
  100. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +6 -6
  101. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tab_list/presentation_tab.rb +26 -0
  102. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tab_list.rb +36 -0
  103. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs/paragraph_tab.rb +26 -0
  104. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/tabs.rb +36 -0
  105. data/lib/ooxml_parser/common_parser/common_data/paragraph/text_field.rb +11 -8
  106. data/lib/ooxml_parser/common_parser/common_data/paragraph.rb +20 -12
  107. data/lib/ooxml_parser/common_parser/common_data/relationships/relationship.rb +13 -7
  108. data/lib/ooxml_parser/common_parser/common_data/relationships.rb +36 -4
  109. data/lib/ooxml_parser/common_parser/common_data/table/margins/paragraph_margins.rb +12 -8
  110. data/lib/ooxml_parser/common_parser/common_data/table/margins/table_margins.rb +18 -19
  111. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_element.rb +9 -8
  112. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_layout.rb +23 -0
  113. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_look.rb +17 -14
  114. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_position.rb +16 -23
  115. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style.rb +21 -40
  116. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_column_band_size.rb +23 -0
  117. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties/table_style_properties_helper.rb +42 -0
  118. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties.rb +50 -0
  119. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_row_band_size.rb +23 -0
  120. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell.rb +28 -23
  121. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties/vertical_merge.rb +20 -0
  122. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties.rb +71 -69
  123. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/merge.rb +18 -10
  124. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/border.rb +19 -17
  125. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/borders.rb +31 -48
  126. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/table_cell_line/line_join.rb +21 -0
  127. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/table_cell_line.rb +25 -19
  128. data/lib/ooxml_parser/common_parser/common_data/table/row/row/table_row_properties/table_row_height.rb +20 -0
  129. data/lib/ooxml_parser/common_parser/common_data/table/row/row/table_row_properties.rb +20 -10
  130. data/lib/ooxml_parser/common_parser/common_data/table/row/row.rb +20 -16
  131. data/lib/ooxml_parser/common_parser/common_data/table/table_grid/grid_column.rb +20 -0
  132. data/lib/ooxml_parser/common_parser/common_data/table/table_grid.rb +27 -3
  133. data/lib/ooxml_parser/common_parser/common_data/table/table_properties/table_borders.rb +20 -13
  134. data/lib/ooxml_parser/common_parser/common_data/table/table_properties.rb +54 -37
  135. data/lib/ooxml_parser/common_parser/common_data/table.rb +23 -17
  136. data/lib/ooxml_parser/common_parser/common_data/underline.rb +13 -10
  137. data/lib/ooxml_parser/common_parser/common_data/valued_child.rb +29 -0
  138. data/lib/ooxml_parser/common_parser/parser.rb +32 -4
  139. data/lib/ooxml_parser/configuration.rb +3 -13
  140. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comment.rb +1 -1
  141. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_background.rb +16 -16
  142. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_properties.rb +18 -13
  143. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_settings.rb +20 -0
  144. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_structure_helpers.rb +18 -0
  145. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style/document_style_helper.rb +37 -0
  146. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style.rb +43 -14
  147. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/bookmark.rb +21 -0
  148. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/accent.rb +19 -5
  149. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/argument_properties/argument_size.rb +20 -0
  150. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/argument_properties.rb +21 -0
  151. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/bar.rb +24 -4
  152. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/box.rb +14 -5
  153. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/delimeter.rb +27 -6
  154. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/fraction.rb +15 -5
  155. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/function.rb +14 -5
  156. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/group_char.rb +23 -7
  157. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/index.rb +16 -6
  158. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/limit.rb +20 -6
  159. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/math_run/math_run_properties.rb +25 -0
  160. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/math_run.rb +25 -0
  161. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/matrix/matrix_row.rb +4 -3
  162. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/matrix.rb +36 -3
  163. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary/nary_properties/nary_grow.rb +20 -0
  164. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary/nary_properties/nary_limit_location.rb +20 -0
  165. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary/nary_properties.rb +26 -0
  166. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/nary.rb +31 -0
  167. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/pre_sub_superscript.rb +27 -0
  168. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/radical.rb +19 -5
  169. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula.rb +52 -183
  170. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +89 -0
  171. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/object/ole_object.rb +23 -0
  172. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/object.rb +21 -0
  173. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape.rb +24 -17
  174. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/text_fill.rb +7 -6
  175. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/text_outline.rb +15 -10
  176. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +43 -245
  177. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/frame_properties.rb +19 -20
  178. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/indents.rb +24 -65
  179. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/inserted.rb +41 -0
  180. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/style_parametres.rb +31 -0
  181. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +146 -172
  182. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +45 -26
  183. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/multilevel_type.rb +20 -0
  184. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/level_justification.rb +20 -0
  185. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/level_text.rb +20 -0
  186. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/numbering_format.rb +20 -0
  187. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/start.rb +20 -0
  188. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level/suffix.rb +31 -0
  189. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering/numbering_level.rb +65 -0
  190. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/abstract_numbering.rb +42 -0
  191. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/numbering_definition/abstract_numbering_id.rb +20 -0
  192. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering/numbering_definition.rb +31 -0
  193. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb +45 -0
  194. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns/column.rb +15 -4
  195. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns.rb +24 -13
  196. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/document_grid.rb +6 -12
  197. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/footnote_properties.rb +32 -0
  198. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +8 -9
  199. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_margins.rb +31 -24
  200. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_properties.rb +61 -64
  201. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_size.rb +56 -0
  202. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles/document_defaults/paragraph_properties_default.rb +20 -0
  203. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles/document_defaults/run_properties_default.rb +20 -0
  204. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles/document_defaults.rb +26 -0
  205. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles.rb +19 -0
  206. data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +49 -54
  207. data/lib/ooxml_parser/docx_parser/docx_parser.rb +2 -1
  208. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_comment.rb +1 -1
  209. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_helpers.rb +13 -0
  210. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/theme_color.rb +15 -12
  211. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme.rb +1 -1
  212. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/background/background_properties/stretch.rb +11 -0
  213. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/background/background_properties.rb +21 -0
  214. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/background.rb +19 -6
  215. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/graphic_frame/graphic_frame.rb +27 -16
  216. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/presentation_alternate_content.rb +13 -9
  217. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shape/non_visual_shape_properties/hyperlinks/hyperlink_for_hover.rb +11 -8
  218. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/shapes_grouping.rb +19 -15
  219. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/animation_effect/animation_effect.rb +17 -12
  220. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/behavior/behavior.rb +15 -14
  221. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/behavior/target_element.rb +18 -15
  222. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/set_time_node.rb +9 -11
  223. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node/common_timing/condition.rb +16 -13
  224. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node/common_timing.rb +23 -15
  225. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node.rb +21 -19
  226. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing.rb +15 -11
  227. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide_helper.rb +52 -0
  228. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition/sound_action/sound.rb +13 -7
  229. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition/sound_action.rb +11 -9
  230. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition.rb +13 -15
  231. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition_properties/transition_properties.rb +9 -14
  232. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide.rb +30 -67
  233. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_size.rb +11 -8
  234. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +6 -3
  235. data/lib/ooxml_parser/pptx_parser/pptx_parser.rb +1 -1
  236. data/lib/ooxml_parser/version.rb +1 -1
  237. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb +28 -0
  238. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill/pattern_fill.rb +33 -0
  239. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +25 -0
  240. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills.rb +38 -0
  241. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts/font.rb +35 -0
  242. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts.rb +38 -0
  243. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/number_formats/number_format.rb +24 -0
  244. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/number_formats.rb +47 -0
  245. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb +36 -0
  246. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/workbook_helpers.rb +11 -0
  247. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/excel_comment.rb +11 -10
  248. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments.rb +8 -10
  249. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_format_properties.rb +12 -12
  250. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_view/pane.rb +12 -10
  251. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_view.rb +29 -8
  252. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension/x14_table.rb +24 -0
  253. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list/extension.rb +21 -0
  254. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part/extension_list.rb +30 -0
  255. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/table_part.rb +37 -0
  256. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_column_properties.rb +29 -10
  257. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_drawing_position_parameters.rb +25 -0
  258. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing.rb +23 -29
  259. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style/alignment.rb +15 -12
  260. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style.rb +70 -37
  261. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell.rb +16 -12
  262. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row.rb +31 -9
  263. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +34 -12
  264. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +20 -9
  265. data/lib/ooxml_parser/xlsx_parser/xlsx_parser.rb +1 -1
  266. data/lib/ooxml_parser.rb +0 -1
  267. metadata +122 -58
  268. data/lib/ooxml_parser/common_parser/common_data/alingment.rb +0 -56
  269. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_style/office_2007_chart_style.rb +0 -17
  270. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_style/office_2010_chart_style.rb +0 -17
  271. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/group/docx_group_element.rb +0 -10
  272. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/group/docx_grouped_drawing.rb +0 -34
  273. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/gradient_color/docx_gradient_color.rb +0 -30
  274. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/gradient_color/docx_single_gradient_color.rb +0 -6
  275. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/solid_color/docx_solid_color.rb +0 -10
  276. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/custom_geometry/docx_custom_geometry/docx_shape_line_element.rb +0 -10
  277. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/line/line_end/line_size.rb +0 -20
  278. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_style/docx_shape_style.rb +0 -5
  279. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/common_non_visual_properties.rb +0 -25
  280. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/non_visual_properties.rb +0 -19
  281. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/non_visual_shape_properties.rb +0 -20
  282. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape.rb +0 -28
  283. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_placeholder.rb +0 -18
  284. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_properties/ooxml_shift.rb +0 -15
  285. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_properties/transform_effect.rb +0 -28
  286. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_properties.rb +0 -13
  287. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/text_body/ooxml_text_box.rb +0 -26
  288. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/text_body/text_body.rb +0 -23
  289. data/lib/ooxml_parser/common_parser/common_data/colors/image/stretching/fill_rectangle.rb +0 -22
  290. data/lib/ooxml_parser/common_parser/common_data/colors/image/stretching.rb +0 -12
  291. data/lib/ooxml_parser/common_parser/common_data/colors/image_properties.rb +0 -16
  292. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/strikeout.rb +0 -16
  293. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering/numbering_properties/numbering_level.rb +0 -25
  294. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering/numbering_properties.rb +0 -69
  295. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering.rb +0 -18
  296. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_cell_margin.rb +0 -20
  297. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_elements.rb +0 -21
  298. data/lib/ooxml_parser/common_parser/common_data/table/properties/whole_table/line_join.rb +0 -19
  299. data/lib/ooxml_parser/common_parser/common_data/table/properties/whole_table/table_cell_style.rb +0 -20
  300. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/operator.rb +0 -13
  301. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style/bookmark.rb +0 -10
  302. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style/paragraph_tab.rb +0 -19
  303. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style/style_parametres.rb +0 -35
  304. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style.rb +0 -56
  305. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/image.rb +0 -15
  306. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/size.rb +0 -84
  307. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/shapes_grouping/grouping_properties.rb +0 -16
  308. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/excel_comment/excel_comment_character/excel_comment_character_properties.rb +0 -27
  309. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/excel_comment/excel_comment_character.rb +0 -25
  310. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_drawing_position/xlsx_drawing_position_parameters.rb +0 -22
  311. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_drawing_position.rb +0 -22
  312. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_shape_grouping.rb +0 -37
  313. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style/foreground_color.rb +0 -25
  314. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style/ooxml_font.rb +0 -36
  315. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_table.rb +0 -30
@@ -0,0 +1,104 @@
1
+ module OoxmlParser
2
+ # Size of some object
3
+ class OoxmlSize
4
+ # @return [Float] value of size
5
+ attr_accessor :value
6
+ # @return [Symbol] units of measurement
7
+ attr_accessor :unit
8
+
9
+ def initialize(value = 0, unit = :dxa)
10
+ @unit = unit
11
+ @value = value
12
+ end
13
+
14
+ # Parse OoxmlSize
15
+ # @param [Nokogiri::XML:Node] node with OoxmlSize
16
+ # @return [OoxmlSize] result of parsing
17
+ def parse(node)
18
+ node.attributes.each do |key, value|
19
+ case key
20
+ when 'type'
21
+ @unit = value.value.to_sym
22
+ when 'w', 'val'
23
+ @value = value.value.to_f
24
+ end
25
+ end
26
+ self
27
+ end
28
+
29
+ def ==(other)
30
+ (to_base_unit.value - other.to_base_unit.value).abs < 10**(OoxmlParser.configuration.accuracy + 2)
31
+ end
32
+
33
+ def zero?
34
+ @value.zero?
35
+ end
36
+
37
+ def to_s
38
+ "#{@value} #{@unit}"
39
+ end
40
+
41
+ # Convert all values to one same base unit
42
+ # @return [OoxmlSize] base unit
43
+ def to_base_unit
44
+ case @unit
45
+ when :centimeter
46
+ OoxmlSize.new(@value * 360_000)
47
+ when :point
48
+ OoxmlSize.new(@value * 12_700)
49
+ when :half_point
50
+ OoxmlSize.new(@value * (12_700 / 2))
51
+ when :one_eighth_point
52
+ OoxmlSize.new(@value * (12_700 / 8))
53
+ when :one_100th_point
54
+ OoxmlSize.new(@value * (12_700 / 100))
55
+ when :one_240th_cm
56
+ OoxmlSize.new(@value * 1500)
57
+ when :dxa, :twip
58
+ return OoxmlSize.new(@value * 635, :emu)
59
+ when :inch
60
+ OoxmlSize.new(@value * 914_400, :emu)
61
+ when :spacing_point
62
+ OoxmlSize.new(@value * (12_700 / 100), :emu)
63
+ when :percent
64
+ OoxmlSize.new(@value * 100_000, :one_100000th_percent)
65
+ when :pct
66
+ OoxmlSize.new(@value * 1_000, :one_100000th_percent)
67
+ when :one_1000th_percent
68
+ OoxmlSize.new(@value * 100, :one_100000th_percent)
69
+ else
70
+ self
71
+ end
72
+ end
73
+
74
+ # @param output_unit [Symbol] output unit of convertion
75
+ # @return [OoxmlSize] converted unit
76
+ def to_unit(output_unit)
77
+ base_unit = to_base_unit
78
+ case output_unit
79
+ when :centimeter
80
+ return OoxmlSize.new((base_unit.value / 360_000).round(OoxmlParser.configuration.accuracy), output_unit)
81
+ when :point
82
+ return OoxmlSize.new((base_unit.value / 12_700).round(OoxmlParser.configuration.accuracy), output_unit)
83
+ when :half_point
84
+ return OoxmlSize.new((base_unit.value / (12_700 * 2)).round(OoxmlParser.configuration.accuracy), output_unit)
85
+ when :one_eighth_point
86
+ return OoxmlSize.new((base_unit.value / (12_700 * 8)).round(OoxmlParser.configuration.accuracy), output_unit)
87
+ when :one_100th_point
88
+ return OoxmlSize.new((base_unit.value / (12_700 / 100)).round(OoxmlParser.configuration.accuracy), output_unit)
89
+ when :one_240th_cm
90
+ return OoxmlSize.new((base_unit.value / 1500).round(OoxmlParser.configuration.accuracy), output_unit)
91
+ when :dxa, :twip
92
+ return OoxmlSize.new((base_unit.value / 635).round(OoxmlParser.configuration.accuracy), output_unit)
93
+ when :inch
94
+ return OoxmlSize.new((base_unit.value / 914_400).round(OoxmlParser.configuration.accuracy), output_unit)
95
+ when :percent
96
+ return OoxmlSize.new((base_unit.value / 50).round(OoxmlParser.configuration.accuracy), output_unit)
97
+ when :spacing_point
98
+ return OoxmlSize.new((base_unit.value / (12_700 * 100)).round(OoxmlParser.configuration.accuracy), output_unit)
99
+ else
100
+ return base_unit
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,17 @@
1
+ module OoxmlParser
2
+ # Class for parsing `wp14:pctWidth`, `wp14:pctHeight` object
3
+ class PictureDimension < OOXMLDocumentObject
4
+ # @return [Float] value of picture width or height
5
+ attr_accessor :value
6
+
7
+ # Parse PictureWidth
8
+ # @param [Nokogiri::XML:Node] node with PictureWidth
9
+ # @return [PictureWidth] result of parsing
10
+ def parse(node)
11
+ # value should be in percent as said in
12
+ # https://msdn.microsoft.com/en-us/library/documentformat.openxml.office2010.word.drawing.relativewidth%28v=office.14%29.aspx?f=255&MSPPError=-2147217396
13
+ @value = OoxmlSize.new(node.child.text.to_f, :one_1000th_percent)
14
+ self
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,31 @@
1
+ require_relative 'size_relative/picture_dimension'
2
+ module OoxmlParser
3
+ # Class for parsing `wp14:sizeRelH` object
4
+ class SizeRelativeHorizontal < OOXMLDocumentObject
5
+ # @return [Symbol] type from which is relative
6
+ attr_accessor :relative_from
7
+ # @return [PictureWidth] width class
8
+ attr_accessor :width
9
+
10
+ # Parse SizeRelativeHeight
11
+ # @param [Nokogiri::XML:Node] node with SizeRelativeHeight
12
+ # @return [SizeRelativeHorizontal] result of parsing
13
+ def parse(node)
14
+ node.attributes.each do |key, value|
15
+ case key
16
+ when 'relativeFrom'
17
+ @relative_from = value_to_symbol(value)
18
+ end
19
+ end
20
+
21
+ node.xpath('*').each do |preset_geometry_child|
22
+ case preset_geometry_child.name
23
+ when 'pctWidth'
24
+ @width = PictureDimension.new(parent: self).parse(preset_geometry_child)
25
+ end
26
+ end
27
+
28
+ self
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,30 @@
1
+ module OoxmlParser
2
+ # Class for parsing `wp14:sizeRelV` object
3
+ class SizeRelativeVertical < OOXMLDocumentObject
4
+ # @return [Symbol] type from which is relative
5
+ attr_accessor :relative_from
6
+ # @return [PictureHeight] heigth class
7
+ attr_accessor :height
8
+
9
+ # Parse SizeRelativeHeight
10
+ # @param [Nokogiri::XML:Node] node with SizeRelativeVertical
11
+ # @return [SizeRelativeVertical] result of parsing
12
+ def parse(node)
13
+ node.attributes.each do |key, value|
14
+ case key
15
+ when 'relativeFrom'
16
+ @relative_from = value_to_symbol(value)
17
+ end
18
+ end
19
+
20
+ node.xpath('*').each do |preset_geometry_child|
21
+ case preset_geometry_child.name
22
+ when 'pctHeight'
23
+ @height = PictureDimension.new(parent: self).parse(preset_geometry_child)
24
+ end
25
+ end
26
+
27
+ self
28
+ end
29
+ end
30
+ end
@@ -1,34 +1,35 @@
1
1
  require_relative 'shape/docx_shape'
2
- require_relative 'group/docx_grouped_drawing'
3
2
  require_relative 'picture/docx_picture'
4
- # Docx Graphic Data
5
3
  module OoxmlParser
4
+ # Class for parsing `graphic` tags
6
5
  class DocxGraphic < OOXMLDocumentObject
7
6
  attr_accessor :type, :data
8
7
 
9
8
  alias chart data
10
9
 
11
- def self.parse(graphic_node)
12
- graphic = DocxGraphic.new
13
- graphic_node.xpath('a:graphicData/*', 'xmlns:a' => 'http://schemas.openxmlformats.org/drawingml/2006/main').each do |graphic_data_node_child|
14
- case graphic_data_node_child.name
10
+ # Parse DocxGraphic
11
+ # @param [Nokogiri::XML:Node] node with NumberingProperties
12
+ # @return [DocxGraphic] result of parsing
13
+ def parse(node)
14
+ node.xpath('a:graphicData/*', 'xmlns:a' => 'http://schemas.openxmlformats.org/drawingml/2006/main').each do |node_child|
15
+ case node_child.name
15
16
  when 'wsp'
16
- graphic.type = :shape
17
- graphic.data = DocxShape.parse(graphic_data_node_child)
17
+ @type = :shape
18
+ @data = DocxShape.new(parent: self).parse(node_child)
18
19
  when 'pic'
19
- graphic.type = :picture
20
- graphic.data = DocxPicture.parse(graphic_data_node_child)
20
+ @type = :picture
21
+ @data = DocxPicture.new(parent: self).parse(node_child)
21
22
  when 'chart'
22
- graphic.type = :chart
23
- OOXMLDocumentObject.add_to_xmls_stack("#{OOXMLDocumentObject.root_subfolder}/#{OOXMLDocumentObject.get_link_from_rels(graphic_data_node_child.attribute('id').value)}")
24
- graphic.data = Chart.parse
23
+ @type = :chart
24
+ OOXMLDocumentObject.add_to_xmls_stack("#{OOXMLDocumentObject.root_subfolder}/#{OOXMLDocumentObject.get_link_from_rels(node_child.attribute('id').value)}")
25
+ @data = Chart.parse
25
26
  OOXMLDocumentObject.xmls_stack.pop
26
27
  when 'wgp'
27
- graphic.type = :group
28
- graphic.data = DocxGroupedDrawing.parse(graphic_data_node_child)
28
+ @type = :group
29
+ @data = ShapesGrouping.new(parent: self).parse(node_child)
29
30
  end
30
31
  end
31
- graphic
32
+ self
32
33
  end
33
34
  end
34
35
  end
@@ -0,0 +1,34 @@
1
+ module OoxmlParser
2
+ # Class for storing image data
3
+ class FileReference < OOXMLDocumentObject
4
+ # @return [String] id of resource
5
+ attr_accessor :resource_id
6
+ # @return [String] path to file
7
+ attr_accessor :path
8
+ # @return [String] content of file
9
+ attr_accessor :content
10
+
11
+ def parse(node)
12
+ node.attributes.each do |key, value|
13
+ case key
14
+ when 'embed', 'id', 'link'
15
+ @resource_id = value.value
16
+ end
17
+ end
18
+ return self if @resource_id.nil?
19
+ @path = OOXMLDocumentObject.get_link_from_rels(@resource_id)
20
+ if @path.empty?
21
+ warn "Cant find path to media file by id: #{@resource_id}"
22
+ return self
23
+ end
24
+ return self if @path == 'NULL'
25
+ full_path_to_file = OOXMLDocumentObject.path_to_folder + OOXMLDocumentObject.root_subfolder + @path.gsub('..', '')
26
+ if File.exist?(full_path_to_file)
27
+ @content = IO.binread(full_path_to_file)
28
+ else
29
+ warn "Couldn't find #{full_path_to_file} file on filesystem. Possible problem in original document"
30
+ end
31
+ self
32
+ end
33
+ end
34
+ end
@@ -1,7 +1,10 @@
1
- # DOCX Blip properties
1
+ require_relative 'docx_blip/file_reference'
2
2
  module OoxmlParser
3
+ # Class for parsing `blipFill`
3
4
  class DocxBlip < OOXMLDocumentObject
4
5
  attr_accessor :path_to_media_file, :alpha_channel
6
+ # @return [FileReference] image structure
7
+ attr_accessor :file_reference
5
8
 
6
9
  alias path path_to_media_file
7
10
 
@@ -9,20 +12,14 @@ module OoxmlParser
9
12
  path_to_media_file
10
13
  end
11
14
 
12
- def self.parse(blip_fill_node)
13
- blip = DocxBlip.new
14
- blip_node = blip_fill_node.xpath('a:blip', 'xmlns:a' => 'http://schemas.openxmlformats.org/drawingml/2006/main').first
15
- return blip if blip_node.nil?
16
- path_to_media_file = OOXMLDocumentObject.get_link_from_rels(blip_node.attribute('embed').value)
17
- raise LoadError, "Cant find path to media file by id: #{blip_node.attribute('embed').value}" if path_to_media_file.empty?
18
- blip_node.xpath('*').each do |blip_node_child|
19
- case blip_node_child.name
20
- when 'alphaModFix'
21
- blip.alpha_channel = (blip_node_child.attribute('amt').value.to_f / 1_000.0).round(0).to_f
22
- end
23
- end
24
- blip.path_to_media_file = OOXMLDocumentObject.copy_media_file("#{OOXMLDocumentObject.root_subfolder}/#{path_to_media_file.gsub('..', '')}") unless path_to_media_file == 'NULL'
25
- blip
15
+ # Parse DocxBlip object
16
+ # @param node [Nokogiri::XML:Element] node to parse
17
+ # @return [DocxBlip] result of parsing
18
+ def parse(node)
19
+ blip_node = node.xpath('a:blip', 'xmlns:a' => 'http://schemas.openxmlformats.org/drawingml/2006/main').first
20
+ return self if blip_node.nil?
21
+ @file_reference = FileReference.new(parent: self).parse(blip_node)
22
+ self
26
23
  end
27
24
  end
28
25
  end
@@ -1,24 +1,29 @@
1
1
  require_relative 'docx_blip'
2
- # Docx Picture Data
3
2
  module OoxmlParser
4
- class DocxPicture
3
+ # Class for parsing `pic`
4
+ class DocxPicture < OOXMLDocumentObject
5
5
  attr_accessor :path_to_image, :properties, :nonvisual_properties, :chart
6
+ # @return [NonVisualShapeProperties] properties of shape
7
+ attr_accessor :non_visual_properties
6
8
 
7
9
  alias image path_to_image
8
10
  alias shape_properties properties
9
11
 
10
- def self.parse(picture_node)
11
- picture = DocxPicture.new
12
- picture_node.xpath('*').each do |picture_node_child|
13
- case picture_node_child.name
14
- when 'nvPicPr'
12
+ # Parse DocxPicture object
13
+ # @param node [Nokogiri::XML:Element] node to parse
14
+ # @return [DocxPicture] result of parsing
15
+ def parse(node)
16
+ node.xpath('*').each do |node_child|
17
+ case node_child.name
15
18
  when 'blipFill'
16
- picture.path_to_image = DocxBlip.parse(picture_node_child)
19
+ @path_to_image = DocxBlip.new(parent: self).parse(node_child)
17
20
  when 'spPr'
18
- picture.properties = DocxShapeProperties.parse(picture_node_child)
21
+ @properties = DocxShapeProperties.new(parent: self).parse(node_child)
22
+ when 'nvPicPr'
23
+ @non_visual_properties = NonVisualShapeProperties.new(parent: self).parse(node_child)
19
24
  end
20
25
  end
21
- picture
26
+ self
22
27
  end
23
28
  end
24
29
 
@@ -0,0 +1,38 @@
1
+ module OoxmlParser
2
+ # Class for `cNvPr` data
3
+ class CommonNonVisualProperties < OOXMLDocumentObject
4
+ attr_accessor :name, :id, :on_click_hyperlink, :hyperlink_for_hover
5
+ # @return [String] title of shape
6
+ attr_accessor :title
7
+ # @return [String] description of shape
8
+ attr_accessor :description
9
+
10
+ # Parse CommonNonVisualProperties object
11
+ # @param node [Nokogiri::XML:Element] node to parse
12
+ # @return [CommonNonVisualProperties] result of parsing
13
+ def parse(node)
14
+ node.attributes.each do |key, value|
15
+ case key
16
+ when 'name'
17
+ @name = value.value
18
+ when 'id'
19
+ @id = value.value
20
+ when 'title'
21
+ @title = value.value
22
+ when 'descr'
23
+ @description = value.value
24
+ end
25
+ end
26
+
27
+ node.xpath('*').each do |node_child|
28
+ case node_child.name
29
+ when 'hlinkClick'
30
+ @on_click_hyperlink = Hyperlink.new(parent: self).parse(node_child)
31
+ when 'hlinkHover'
32
+ @hyperlink_for_hover = HyperlinkForHover.new(parent: self).parse(node_child)
33
+ end
34
+ end
35
+ self
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,21 @@
1
+ module OoxmlParser
2
+ # Class for data about `ph` node
3
+ class ShapePlaceholder < OOXMLDocumentObject
4
+ attr_accessor :type, :has_custom_prompt
5
+
6
+ # Parse ShapePlaceholder object
7
+ # @param node [Nokogiri::XML:Element] node to parse
8
+ # @return [ShapePlaceholder] result of parsing
9
+ def parse(node)
10
+ node.attributes.each do |key, value|
11
+ case key
12
+ when 'type'
13
+ @type = value.value.to_sym
14
+ when 'hasCustomPrompt'
15
+ @has_custom_prompt = attribute_enabled?(node)
16
+ end
17
+ end
18
+ self
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'non_visual_properties/shape_placeholder'
2
+ module OoxmlParser
3
+ # Class for parsing `nvPr` object
4
+ class NonVisualProperties < OOXMLDocumentObject
5
+ attr_accessor :placeholder, :is_photo, :user_drawn
6
+
7
+ # Parse NonVisualProperties object
8
+ # @param node [Nokogiri::XML:Element] node to parse
9
+ # @return [NonVisualProperties] result of parsing
10
+ def parse(node)
11
+ node.attributes.each do |key, value|
12
+ case key
13
+ when 'isPhoto'
14
+ @is_photo = attribute_enabled?(value)
15
+ when 'userDrawn'
16
+ @user_drawn = attribute_enabled?(value)
17
+ end
18
+ end
19
+
20
+ node.xpath('*').each do |node_child|
21
+ case node_child.name
22
+ when 'ph'
23
+ @placeholder = ShapePlaceholder.new(parent: self).parse(node_child)
24
+ end
25
+ end
26
+ self
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ require_relative 'non_visual_shape_properties/common_non_visual_properties'
2
+ require_relative 'non_visual_shape_properties/non_visual_properties'
3
+ module OoxmlParser
4
+ class NonVisualShapeProperties < OOXMLDocumentObject
5
+ attr_accessor :common_properties, :non_visual_properties
6
+
7
+ # Parse NonVisualShapeProperties object
8
+ # @param node [Nokogiri::XML:Element] node to parse
9
+ # @return [NonVisualShapeProperties] result of parsing
10
+ def parse(node)
11
+ node.xpath('*').each do |node_child|
12
+ case node_child.name
13
+ when 'cNvPr'
14
+ @common_properties = CommonNonVisualProperties.new(parent: self).parse(node_child)
15
+ when 'nvPr'
16
+ @non_visual_properties = NonVisualProperties.new(parent: self).parse(node_child)
17
+ end
18
+ end
19
+ self
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,29 @@
1
+ module OoxmlParser
2
+ # Class for parsing `txbx` tags
3
+ class OOXMLTextBox < OOXMLDocumentObject
4
+ attr_accessor :properties, :elements
5
+
6
+ def initialize(parent: nil)
7
+ @elements = []
8
+ @parent = parent
9
+ end
10
+
11
+ # Parse OOXMLTextBox object
12
+ # @param node [Nokogiri::XML:Element] node to parse
13
+ # @return [OOXMLTextBox] result of parsing
14
+ def parse(node)
15
+ text_box_content_node = node.xpath('w:txbxContent').first
16
+ text_box_content_node.xpath('*').each_with_index do |node_child, index|
17
+ case node_child.name
18
+ when 'p'
19
+ @elements << DocxParagraph.new(parent: self).parse(node_child, index)
20
+ when 'tbl'
21
+ @elements << Table.new(parent: self).parse(node_child, index)
22
+ when 'bodyPr'
23
+ @properties = OOXMLShapeBodyProperties.new(parent: self).parse(node_child)
24
+ end
25
+ end
26
+ self
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ module OoxmlParser
2
+ # Class for parsing `txBody` tags
3
+ class TextBody < OOXMLDocumentObject
4
+ attr_accessor :properties, :paragraphs
5
+
6
+ def initialize(parent: nil)
7
+ @paragraphs = []
8
+ @parent = parent
9
+ end
10
+
11
+ # Parse TextBody object
12
+ # @param node [Nokogiri::XML:Element] node to parse
13
+ # @return [TextBody] result of parsing
14
+ def parse(node)
15
+ node.xpath('*').each do |node_child|
16
+ case node_child.name
17
+ when 'p'
18
+ @paragraphs << Paragraph.new(parent: self).parse(node_child)
19
+ when 'bodyPr'
20
+ @properties = OOXMLShapeBodyProperties.new(parent: self).parse(node_child)
21
+ end
22
+ end
23
+ self
24
+ end
25
+ end
26
+ end
@@ -1,25 +1,42 @@
1
+ require_relative 'docx_shape/ooxml_text_box'
2
+ require_relative 'docx_shape/non_visual_shape_properties'
3
+ require_relative 'docx_shape/text_body'
1
4
  require_relative 'shape_properties/docx_shape_properties'
2
5
  require_relative 'shape_body_properties/ooxml_shape_body_properties'
3
- # Docx Shape Data
4
6
  module OoxmlParser
7
+ # Class for parsing `sp`, `wsp` tags
5
8
  class DocxShape < OOXMLDocumentObject
6
9
  attr_accessor :non_visual_properties, :properties, :style, :body_properties, :text_body
7
10
 
8
- def self.parse(shape_node)
9
- shape = DocxShape.new
10
- shape_node.xpath('*').each do |shape_node_child|
11
- case shape_node_child.name
11
+ alias shape_properties properties
12
+
13
+ # @return [True, false] if structure contain any user data
14
+ def with_data?
15
+ return true if @text_body.nil?
16
+ return true if @text_body.paragraphs.length > 1
17
+ return true unless @text_body.paragraphs.first.runs.empty?
18
+ false
19
+ end
20
+
21
+ # Parse DocxShape object
22
+ # @param node [Nokogiri::XML:Element] node to parse
23
+ # @return [DocxShape] result of parsing
24
+ def parse(node)
25
+ node.xpath('*').each do |node_child|
26
+ case node_child.name
27
+ when 'nvSpPr'
28
+ @non_visual_properties = NonVisualShapeProperties.new(parent: self).parse(node_child)
12
29
  when 'spPr'
13
- shape.properties = DocxShapeProperties.parse(shape_node_child)
30
+ @properties = DocxShapeProperties.new(parent: self).parse(node_child)
14
31
  when 'txbx'
15
- shape.text_body = OOXMLTextBox.parse(shape_node_child)
32
+ @text_body = OOXMLTextBox.new(parent: self).parse(node_child)
16
33
  when 'txBody'
17
- shape.text_body = TextBody.parse(shape_node_child)
34
+ @text_body = TextBody.new(parent: self).parse(node_child)
18
35
  when 'bodyPr'
19
- shape.body_properties = OOXMLShapeBodyProperties.parse(shape_node_child)
36
+ @body_properties = OOXMLShapeBodyProperties.new(parent: self).parse(node_child)
20
37
  end
21
38
  end
22
- shape
39
+ self
23
40
  end
24
41
  end
25
42
  end
@@ -1,16 +1,19 @@
1
1
  module OoxmlParser
2
+ # Class for parsing `prstTxWarp` tags
2
3
  class PresetTextWarp < OOXMLDocumentObject
3
4
  attr_accessor :preset
4
5
 
5
- def self.parse(node)
6
- preset_text_warp = PresetTextWarp.new
6
+ # Parse PresetTextWarp
7
+ # @param [Nokogiri::XML:Node] node with PresetTextWarp
8
+ # @return [PresetTextWarp] result of parsing
9
+ def parse(node)
7
10
  node.attributes.each do |key, value|
8
11
  case key
9
12
  when 'prst'
10
- preset_text_warp.preset = value.value.to_sym
13
+ @preset = value.value.to_sym
11
14
  end
12
15
  end
13
- preset_text_warp
16
+ self
14
17
  end
15
18
  end
16
19
  end
@@ -1,30 +1,39 @@
1
- # Docx Shape Body Properties
2
1
  require_relative 'ooxml_shape_body_properties/preset_text_warp'
3
2
 
4
3
  module OoxmlParser
4
+ # Class for parsing `bodyPr`
5
5
  class OOXMLShapeBodyProperties < OOXMLDocumentObject
6
6
  attr_accessor :margins, :anchor, :wrap, :preset_text_warp
7
+ # @return [Symbol] Vertical Text
8
+ attr_accessor :vertical
7
9
 
8
10
  alias vertical_align anchor
9
11
 
10
- def self.parse(body_pr_node)
11
- body_properties = OOXMLShapeBodyProperties.new
12
- body_properties.margins = ParagraphMargins.parse(body_pr_node)
13
- body_pr_node.attributes.each do |key, value|
12
+ # Parse OOXMLShapeBodyProperties
13
+ # @param [Nokogiri::XML:Node] node with OOXMLShapeBodyProperties
14
+ # @return [OOXMLShapeBodyProperties] result of parsing
15
+ def parse(node)
16
+ @margins = ParagraphMargins.new(OoxmlSize.new(0.127, :centimeter),
17
+ OoxmlSize.new(0.127, :centimeter),
18
+ OoxmlSize.new(0.254, :centimeter),
19
+ OoxmlSize.new(0.254, :centimeter)).parse(node)
20
+ node.attributes.each do |key, value|
14
21
  case key
15
22
  when 'wrap'
16
- body_properties.wrap = value.value.to_sym
23
+ @wrap = value.value.to_sym
17
24
  when 'anchor'
18
- body_properties.anchor = Alignment.parse(value)
25
+ @anchor = value_to_symbol(value)
26
+ when 'vert'
27
+ @vertical = value_to_symbol(value)
19
28
  end
20
29
  end
21
- body_pr_node.xpath('*').each do |body_properties_child|
22
- case body_properties_child.name
30
+ node.xpath('*').each do |node_child|
31
+ case node_child.name
23
32
  when 'prstTxWarp'
24
- body_properties.preset_text_warp = PresetTextWarp.parse(body_properties_child)
33
+ @preset_text_warp = PresetTextWarp.new(parent: self).parse(node_child)
25
34
  end
26
35
  end
27
- body_properties
36
+ self
28
37
  end
29
38
  end
30
39
  end