ooxml_parser 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. checksums.yaml +7 -0
  2. data/.overcommit.yml +35 -0
  3. data/Changelog.md +25 -0
  4. data/LICENSE.txt +661 -0
  5. data/README.md +26 -0
  6. data/circle.yml +3 -0
  7. data/lib/ooxml_parser/common_parser/common_data/alingment.rb +56 -0
  8. data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content.rb +34 -0
  9. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart.rb +123 -0
  10. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis.rb +34 -0
  11. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_axis_title.rb +38 -0
  12. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_cells_range.rb +23 -0
  13. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_legend.rb +33 -0
  14. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_point.rb +11 -0
  15. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_style/office_2007_chart_style.rb +17 -0
  16. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart_style/office_2010_chart_style.rb +17 -0
  17. data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/display_labels_properties.rb +26 -0
  18. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/docx_drawing.rb +49 -0
  19. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_distance_from_text.rb +23 -0
  20. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_position.rb +35 -0
  21. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_properties.rb +11 -0
  22. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_wrap_drawing.rb +39 -0
  23. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_coordinates.rb +32 -0
  24. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/docx_graphic.rb +34 -0
  25. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/group/docx_group_element.rb +10 -0
  26. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/group/docx_grouped_drawing.rb +34 -0
  27. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip.rb +27 -0
  28. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_picture.rb +26 -0
  29. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape.rb +25 -0
  30. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_body_properties/ooxml_shape_body_properties/preset_text_warp.rb +16 -0
  31. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_body_properties/ooxml_shape_body_properties.rb +30 -0
  32. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_color_scheme.rb +37 -0
  33. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_pattern_fill.rb +20 -0
  34. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/gradient_color/docx_gradient_color.rb +30 -0
  35. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/gradient_color/docx_single_gradient_color.rb +6 -0
  36. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/solid_color/docx_solid_color.rb +10 -0
  37. 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 +10 -0
  38. 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 +44 -0
  39. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/custom_geometry/ooxml_custom_geometry.rb +23 -0
  40. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_color.rb +43 -0
  41. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_line.rb +54 -0
  42. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties/text_box.rb +25 -0
  43. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties.rb +40 -0
  44. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_size.rb +31 -0
  45. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/line/line_end/line_size.rb +20 -0
  46. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/line/line_end.rb +21 -0
  47. data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_style/docx_shape_style.rb +5 -0
  48. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/group/old_docx_group.rb +31 -0
  49. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/group/old_docx_group_element.rb +10 -0
  50. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/group/old_docx_group_properties.rb +6 -0
  51. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/old_docx_picture.rb +26 -0
  52. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape.rb +24 -0
  53. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_fill.rb +26 -0
  54. data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_properties.rb +24 -0
  55. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/common_non_visual_properties.rb +25 -0
  56. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/non_visual_properties.rb +19 -0
  57. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/non_visual_shape_properties.rb +20 -0
  58. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape.rb +28 -0
  59. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_placeholder.rb +18 -0
  60. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_properties/ooxml_shift.rb +15 -0
  61. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_properties/transform_effect.rb +28 -0
  62. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/shape_properties.rb +13 -0
  63. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/text_body/ooxml_text_box.rb +26 -0
  64. data/lib/ooxml_parser/common_parser/common_data/alternate_content/shape/text_body/text_body.rb +23 -0
  65. data/lib/ooxml_parser/common_parser/common_data/borders_properties.rb +58 -0
  66. data/lib/ooxml_parser/common_parser/common_data/color.rb +473 -0
  67. data/lib/ooxml_parser/common_parser/common_data/colors/color_alpha_channel.rb +14 -0
  68. data/lib/ooxml_parser/common_parser/common_data/colors/color_properties.rb +21 -0
  69. data/lib/ooxml_parser/common_parser/common_data/colors/hsl_color.rb +150 -0
  70. data/lib/ooxml_parser/common_parser/common_data/colors/image/fill_rectangle.rb +22 -0
  71. data/lib/ooxml_parser/common_parser/common_data/colors/image/stretching.rb +11 -0
  72. data/lib/ooxml_parser/common_parser/common_data/colors/image_fill.rb +32 -0
  73. data/lib/ooxml_parser/common_parser/common_data/colors/image_properties.rb +16 -0
  74. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/gradient_stop.rb +15 -0
  75. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color/linear_gradient.rb +10 -0
  76. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/gradient_color.rb +35 -0
  77. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill/presentation_pattern.rb +22 -0
  78. data/lib/ooxml_parser/common_parser/common_data/colors/presentation_fill.rb +33 -0
  79. data/lib/ooxml_parser/common_parser/common_data/colors/scheme_color.rb +14 -0
  80. data/lib/ooxml_parser/common_parser/common_data/colors/theme_colors.rb +22 -0
  81. data/lib/ooxml_parser/common_parser/common_data/colors/tile.rb +21 -0
  82. data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +127 -0
  83. data/lib/ooxml_parser/common_parser/common_data/font_style.rb +101 -0
  84. data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +53 -0
  85. data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +87 -0
  86. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_properties.rb +48 -0
  87. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb +23 -0
  88. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/strikeout.rb +16 -0
  89. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +79 -0
  90. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb +24 -0
  91. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering/numbering_properties/numbering_level.rb +25 -0
  92. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering/numbering_properties.rb +69 -0
  93. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering.rb +18 -0
  94. data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +115 -0
  95. data/lib/ooxml_parser/common_parser/common_data/paragraph.rb +35 -0
  96. data/lib/ooxml_parser/common_parser/common_data/table/margins/paragraph_margins.rb +35 -0
  97. data/lib/ooxml_parser/common_parser/common_data/table/margins/table_margins.rb +47 -0
  98. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_cell_margin.rb +20 -0
  99. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_element.rb +20 -0
  100. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_look.rb +43 -0
  101. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_position.rb +49 -0
  102. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style.rb +83 -0
  103. data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_elements.rb +21 -0
  104. data/lib/ooxml_parser/common_parser/common_data/table/properties/whole_table/line_join.rb +19 -0
  105. data/lib/ooxml_parser/common_parser/common_data/table/properties/whole_table/table_cell_style.rb +20 -0
  106. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell.rb +43 -0
  107. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties.rb +142 -0
  108. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/merge.rb +18 -0
  109. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/border.rb +25 -0
  110. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/borders.rb +125 -0
  111. data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/table_cell_line.rb +35 -0
  112. data/lib/ooxml_parser/common_parser/common_data/table/row/row/table_row_properties.rb +22 -0
  113. data/lib/ooxml_parser/common_parser/common_data/table/row/row.rb +33 -0
  114. data/lib/ooxml_parser/common_parser/common_data/table/table_grid.rb +9 -0
  115. data/lib/ooxml_parser/common_parser/common_data/table/table_properties.rb +77 -0
  116. data/lib/ooxml_parser/common_parser/common_data/table.rb +41 -0
  117. data/lib/ooxml_parser/common_parser/common_data/underline.rb +40 -0
  118. data/lib/ooxml_parser/common_parser/common_document_structure.rb +7 -0
  119. data/lib/ooxml_parser/configuration.rb +20 -0
  120. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comment.rb +28 -0
  121. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_background.rb +10 -0
  122. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_properties.rb +21 -0
  123. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style.rb +70 -0
  124. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/accent.rb +11 -0
  125. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/bar.rb +10 -0
  126. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/box.rb +11 -0
  127. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/delimeter.rb +12 -0
  128. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/fraction.rb +11 -0
  129. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/function.rb +11 -0
  130. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/group_char.rb +13 -0
  131. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/index.rb +12 -0
  132. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/limit.rb +12 -0
  133. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/matrix/matrix_row.rb +10 -0
  134. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/matrix.rb +10 -0
  135. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/operator.rb +13 -0
  136. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/radical.rb +11 -0
  137. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula.rb +203 -0
  138. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/offset.rb +10 -0
  139. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shadow.rb +10 -0
  140. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties/shape_margins.rb +11 -0
  141. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties/shape_size.rb +10 -0
  142. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties/stroke.rb +10 -0
  143. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape/shape_properties.rb +16 -0
  144. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape.rb +40 -0
  145. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/text_fill.rb +13 -0
  146. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/text_outline.rb +22 -0
  147. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +388 -0
  148. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/frame_properties.rb +46 -0
  149. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/indents.rb +87 -0
  150. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style/bookmark.rb +10 -0
  151. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style/paragraph_tab.rb +19 -0
  152. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style/style_parametres.rb +35 -0
  153. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/paragraph_style.rb +56 -0
  154. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +324 -0
  155. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +37 -0
  156. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/image.rb +15 -0
  157. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns/column.rb +10 -0
  158. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns.rb +37 -0
  159. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/document_grid.rb +29 -0
  160. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +49 -0
  161. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_margins.rb +42 -0
  162. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_properties.rb +88 -0
  163. data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/size.rb +84 -0
  164. data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +232 -0
  165. data/lib/ooxml_parser/docx_parser/docx_parser.rb +16 -0
  166. data/lib/ooxml_parser/helpers/string_helper.rb +22 -0
  167. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_comment/presentation_comment_author.rb +25 -0
  168. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_comment.rb +31 -0
  169. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/theme_color.rb +40 -0
  170. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme.rb +44 -0
  171. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/background.rb +19 -0
  172. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/graphic_frame/graphic_frame.rb +34 -0
  173. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/presentation_alternate_content.rb +25 -0
  174. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shape/non_visual_shape_properties/hyperlinks/hyperlink_for_hover.rb +23 -0
  175. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shape/shape_properties/extents.rb +10 -0
  176. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shape/shape_properties/offset.rb +10 -0
  177. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shape/text_body/paragraph.rb +10 -0
  178. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shape/text_body/text_field.rb +18 -0
  179. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/shapes_grouping/shapes_grouping.rb +9 -0
  180. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/shapes_grouping/grouping_properties.rb +16 -0
  181. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/shapes_grouping.rb +30 -0
  182. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/animation_effect/animation_effect.rb +22 -0
  183. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/behavior/behavior.rb +28 -0
  184. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/behavior/target_element.rb +31 -0
  185. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/set_time_node/set_time_node.rb +20 -0
  186. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node/common_timing/condition.rb +26 -0
  187. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node/common_timing.rb +33 -0
  188. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node.rb +52 -0
  189. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing.rb +23 -0
  190. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/sound_action/sound/sound.rb +18 -0
  191. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/sound_action/sound_action.rb +18 -0
  192. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition.rb +43 -0
  193. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition_properties/transition_properties.rb +9 -0
  194. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide.rb +110 -0
  195. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide_size.rb +20 -0
  196. data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +62 -0
  197. data/lib/ooxml_parser/pptx_parser/pptx_parser.rb +15 -0
  198. data/lib/ooxml_parser/version.rb +6 -0
  199. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/excel_comment/excel_comment_character/excel_comment_character_properties.rb +27 -0
  200. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/excel_comment/excel_comment_character.rb +25 -0
  201. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments/excel_comment.rb +20 -0
  202. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments.rb +43 -0
  203. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_format_properties.rb +21 -0
  204. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_view/pane.rb +23 -0
  205. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/sheet_view.rb +18 -0
  206. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_column_properties.rb +24 -0
  207. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_drawing_position/xlsx_drawing_position_parameters.rb +22 -0
  208. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_drawing_position.rb +22 -0
  209. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing/xlsx_shape_grouping.rb +37 -0
  210. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_drawing.rb +49 -0
  211. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style/alignment.rb +30 -0
  212. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style/foreground_color.rb +25 -0
  213. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style/ooxml_font.rb +38 -0
  214. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell/cell_style.rb +95 -0
  215. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row/xlsx_cell.rb +47 -0
  216. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_row.rb +19 -0
  217. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_table.rb +30 -0
  218. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +74 -0
  219. data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +108 -0
  220. data/lib/ooxml_parser/xlsx_parser/xlsx_parser.rb +15 -0
  221. data/lib/ooxml_parser.rb +35 -0
  222. data/ooxml_parser.gemspec +30 -0
  223. metadata +310 -0
@@ -0,0 +1,34 @@
1
+ require_relative 'shape/docx_shape'
2
+ require_relative 'group/docx_grouped_drawing'
3
+ require_relative 'picture/docx_picture'
4
+ # Docx Graphic Data
5
+ module OoxmlParser
6
+ class DocxGraphic < OOXMLDocumentObject
7
+ attr_accessor :type, :data
8
+
9
+ alias chart data
10
+
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
15
+ when 'wsp'
16
+ graphic.type = :shape
17
+ graphic.data = DocxShape.parse(graphic_data_node_child)
18
+ when 'pic'
19
+ graphic.type = :picture
20
+ graphic.data = DocxPicture.parse(graphic_data_node_child)
21
+ 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
25
+ OOXMLDocumentObject.xmls_stack.pop
26
+ when 'wgp'
27
+ graphic.type = :group
28
+ graphic.data = DocxGroupedDrawing.parse(graphic_data_node_child)
29
+ end
30
+ end
31
+ graphic
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,10 @@
1
+ # Docx Gropu Element data
2
+ module OoxmlParser
3
+ class DocxGroupElement
4
+ attr_accessor :type, :object
5
+
6
+ def initialize(type = nil)
7
+ @type = type
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'docx_group_element'
2
+ # Docx Groping Drawing Data
3
+ module OoxmlParser
4
+ class DocxGroupedDrawing < OOXMLDocumentObject
5
+ attr_accessor :elements, :properties
6
+
7
+ def initialize(elements = [])
8
+ @elements = elements
9
+ end
10
+
11
+ def self.parse(grouping_node)
12
+ grouping = DocxGroupedDrawing.new
13
+ grouping_node.xpath('*').each do |grouping_node_child|
14
+ case grouping_node_child.name
15
+ when 'grpSpPr'
16
+ grouping.properties = DocxShapeProperties.parse(grouping_node_child)
17
+ when 'cNvGrpSpPr'
18
+ when 'pic'
19
+ element = DocxGroupElement.new(:picture)
20
+ element.object = DocxPicture.parse(grouping_node_child)
21
+ grouping.elements << element
22
+ when 'wsp'
23
+ element = DocxGroupElement.new(:shape)
24
+ element.object = DocxShape.parse(grouping_node_child)
25
+ grouping.elements << element
26
+ when 'grpSp'
27
+ element = parse(grouping_node_child)
28
+ grouping.elements << element
29
+ end
30
+ end
31
+ grouping
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,27 @@
1
+ # DOCX Blip properties
2
+ module OoxmlParser
3
+ class DocxBlip < OOXMLDocumentObject
4
+ attr_accessor :path_to_media_file, :alpha_channel
5
+
6
+ alias path path_to_media_file
7
+
8
+ def to_str
9
+ path_to_media_file
10
+ end
11
+
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
+ path_to_media_file = OOXMLDocumentObject.get_link_from_rels(blip_node.attribute('embed').value)
16
+ raise LoadError, "Cant find path to media file by id: #{blip_node.attribute('embed').value}" if path_to_media_file.empty?
17
+ blip_node.xpath('*').each do |blip_node_child|
18
+ case blip_node_child.name
19
+ when 'alphaModFix'
20
+ blip.alpha_channel = (blip_node_child.attribute('amt').value.to_f / 1_000.0).round(0).to_f
21
+ end
22
+ end
23
+ blip.path_to_media_file = OOXMLDocumentObject.copy_media_file("#{OOXMLDocumentObject.root_subfolder}/#{path_to_media_file.gsub('..', '')}")
24
+ blip
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'docx_blip'
2
+ # Docx Picture Data
3
+ module OoxmlParser
4
+ class DocxPicture
5
+ attr_accessor :path_to_image, :properties, :nonvisual_properties, :chart
6
+
7
+ alias image path_to_image
8
+ alias shape_properties properties
9
+
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'
15
+ when 'blipFill'
16
+ picture.path_to_image = DocxBlip.parse(picture_node_child)
17
+ when 'spPr'
18
+ picture.properties = DocxShapeProperties.parse(picture_node_child)
19
+ end
20
+ end
21
+ picture
22
+ end
23
+ end
24
+
25
+ Picture = DocxPicture
26
+ end
@@ -0,0 +1,25 @@
1
+ require_relative 'shape_properties/docx_shape_properties'
2
+ require_relative 'shape_body_properties/ooxml_shape_body_properties'
3
+ # Docx Shape Data
4
+ module OoxmlParser
5
+ class DocxShape < OOXMLDocumentObject
6
+ attr_accessor :non_visual_properties, :properties, :style, :body_properties, :text_body
7
+
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
12
+ when 'spPr'
13
+ shape.properties = DocxShapeProperties.parse(shape_node_child)
14
+ when 'txbx'
15
+ shape.text_body = OOXMLTextBox.parse(shape_node_child)
16
+ when 'txBody'
17
+ shape.text_body = TextBody.parse(shape_node_child)
18
+ when 'bodyPr'
19
+ shape.body_properties = OOXMLShapeBodyProperties.parse(shape_node_child)
20
+ end
21
+ end
22
+ shape
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ module OoxmlParser
2
+ class PresetTextWarp < OOXMLDocumentObject
3
+ attr_accessor :preset
4
+
5
+ def self.parse(node)
6
+ preset_text_warp = PresetTextWarp.new
7
+ node.attributes.each do |key, value|
8
+ case key
9
+ when 'prst'
10
+ preset_text_warp.preset = value.value.to_sym
11
+ end
12
+ end
13
+ preset_text_warp
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ # Docx Shape Body Properties
2
+ require_relative 'ooxml_shape_body_properties/preset_text_warp'
3
+
4
+ module OoxmlParser
5
+ class OOXMLShapeBodyProperties < OOXMLDocumentObject
6
+ attr_accessor :margins, :anchor, :wrap, :preset_text_warp
7
+
8
+ alias vertical_align anchor
9
+
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|
14
+ case key
15
+ when 'wrap'
16
+ body_properties.wrap = value.value.to_sym
17
+ when 'anchor'
18
+ body_properties.anchor = Alignment.parse(value)
19
+ end
20
+ end
21
+ body_pr_node.xpath('*').each do |body_properties_child|
22
+ case body_properties_child.name
23
+ when 'prstTxWarp'
24
+ body_properties.preset_text_warp = PresetTextWarp.parse(body_properties_child)
25
+ end
26
+ end
27
+ body_properties
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,37 @@
1
+ # DOCX Color Scheme
2
+ module OoxmlParser
3
+ class DocxColorScheme < OOXMLDocumentObject
4
+ attr_accessor :color, :type
5
+
6
+ def initialize
7
+ @color = Color.new
8
+ @type = :unknown
9
+ end
10
+
11
+ def self.parse(color_scheme_node)
12
+ color_scheme = DocxColorScheme.new
13
+ color_scheme_node.xpath('*').each do |color_scheme_node_child|
14
+ case color_scheme_node_child.name
15
+ when 'solidFill'
16
+ color_scheme.type = :solid
17
+ color_scheme.color = Color.parse_color_model(color_scheme_node_child)
18
+ when 'gradFill'
19
+ color_scheme.type = :gradient
20
+ color_scheme.color = GradientColor.parse(color_scheme_node_child)
21
+ when 'noFill'
22
+ color_scheme.color = :none
23
+ color_scheme.type = :none
24
+ when 'srgbClr'
25
+ color_scheme.color = Color.from_int16(color_scheme_node_child.attribute('val').value)
26
+ when 'schemeClr'
27
+ color_scheme.color = Color.parse_scheme_color(color_scheme_node_child)
28
+ end
29
+ end
30
+ color_scheme
31
+ end
32
+
33
+ def to_s
34
+ "Color: #{@color}, type: #{type}"
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ # Docx Pattern Fill Data
2
+ module OoxmlParser
3
+ class DocxPatternFill < OOXMLDocumentObject
4
+ attr_accessor :foreground_color, :background_color, :preset
5
+
6
+ def self.parse(fill_node)
7
+ pattern = DocxPatternFill.new
8
+ pattern.preset = fill_node.attribute('prst').value.to_sym
9
+ fill_node.xpath('*').each do |fill_node_child|
10
+ case fill_node_child.name
11
+ when 'fgClr'
12
+ pattern.foreground_color = Color.parse_color_model(fill_node_child)
13
+ when 'bgClr'
14
+ pattern.background_color = Color.parse_color_model(fill_node_child)
15
+ end
16
+ end
17
+ pattern
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ require_relative 'docx_single_gradient_color'
2
+ # docx Gradient Color
3
+ module OoxmlParser
4
+ class DocxGradientColor < OOXMLDocumentObject
5
+ attr_accessor :gradient_stops, :type, :path
6
+
7
+ def initialize(colors = [])
8
+ @gradient_stops = colors
9
+ end
10
+
11
+ def self.parse(gradient_fill_node)
12
+ gradient_color = DocxGradientColor.new
13
+ gradient_fill_node.xpath('*').each do |grad_fill_color_child|
14
+ case grad_fill_color_child.name
15
+ when 'gsLst'
16
+ grad_fill_color_child.xpath('a:gs', 'xmlns:a' => 'http://schemas.openxmlformats.org/drawingml/2006/main').each do |gradient_single_color_node|
17
+ # gradient_single_color_node.xpath('*').each do |gradient_color_node|
18
+ single_gradient_color = DocxSingleGradientColor.new
19
+ single_gradient_color.color = Color.parse_color_model(gradient_single_color_node)
20
+ single_gradient_color.position = gradient_single_color_node.attribute('pos').value.to_f / 1_000.0
21
+ gradient_color.gradient_stops << single_gradient_color
22
+ end
23
+ when 'path'
24
+ gradient_color.path = grad_fill_color_child.attribute('path').value.to_sym
25
+ end
26
+ end
27
+ gradient_color
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,6 @@
1
+ # DOCX single gradient color
2
+ module OoxmlParser
3
+ class DocxSingleGradientColor
4
+ attr_accessor :color, :position
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ # Docx Solid Color
2
+ module OoxmlParser
3
+ class DocxSolidColor
4
+ attr_accessor :color, :luminance_modulation
5
+
6
+ def initialize(color = nil)
7
+ @color = color
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # Docx Shape Line Element
2
+ module OoxmlParser
3
+ class DocxShapeLineElement
4
+ attr_accessor :type, :points
5
+
6
+ def initialize(points = [])
7
+ @points = points
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,44 @@
1
+ # Docx Shape Line Path
2
+ module OoxmlParser
3
+ class DocxShapeLinePath < OOXMLDocumentObject
4
+ attr_accessor :width, :height, :fill, :stroke, :elements
5
+
6
+ def initialize(elements = [])
7
+ @elements = elements
8
+ end
9
+
10
+ def self.parse(path_node)
11
+ shape_line_path = DocxShapeLinePath.new
12
+ path_node.attributes.each do |key, value|
13
+ case key
14
+ when 'w'
15
+ shape_line_path.width = value.value.to_f
16
+ when 'h'
17
+ shape_line_path.height = value.value.to_f
18
+ when 'stroke'
19
+ shape_line_path.stroke = value.value.to_f
20
+ end
21
+ end
22
+ path_node.xpath('*').each do |line_path_element_node|
23
+ line_element = DocxShapeLineElement.new
24
+ case line_path_element_node.name
25
+ when 'moveTo'
26
+ line_element.type = :move
27
+ when 'lnTo'
28
+ line_element.type = :line
29
+ when 'arcTo'
30
+ line_element.type = :arc
31
+ when 'cubicBezTo'
32
+ line_element.type = :cubic_bezier
33
+ when 'quadBezTo'
34
+ line_element.type = :quadratic_bezier
35
+ when 'close'
36
+ line_element.type = :close
37
+ end
38
+ line_path_element_node.xpath('a:pt', 'xmlns:a' => 'http://schemas.openxmlformats.org/drawingml/2006/main').each { |point_node| line_element.points << OOXMLCoordinates.parse(point_node, delimiter: 1) }
39
+ shape_line_path.elements << line_element
40
+ end
41
+ shape_line_path
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'docx_custom_geometry/docx_shape_line_element'
2
+ require_relative 'docx_custom_geometry/docx_shape_line_path'
3
+ # Docx Custom Geometry
4
+ module OoxmlParser
5
+ class OOXMLCustomGeometry
6
+ attr_accessor :paths_list
7
+
8
+ def initialize(paths_list = [])
9
+ @paths_list = paths_list
10
+ end
11
+
12
+ def self.parse(custom_geometry_node)
13
+ custom_geometry = OOXMLCustomGeometry.new
14
+ custom_geometry_node.xpath('*').each do |custom_geometry_node_child|
15
+ case custom_geometry_node_child.name
16
+ when 'pathLst'
17
+ custom_geometry_node_child.xpath('a:path', 'xmlns:a' => 'http://schemas.openxmlformats.org/drawingml/2006/main').each { |path_node| custom_geometry.paths_list << DocxShapeLinePath.parse(path_node) }
18
+ end
19
+ end
20
+ custom_geometry
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'color/gradient_color/docx_gradient_color'
2
+ require_relative 'color/docx_pattern_fill'
3
+ # Color inside DOCX
4
+ module OoxmlParser
5
+ class DocxColor < OOXMLDocumentObject
6
+ attr_accessor :type, :value, :stretching_type, :alpha
7
+
8
+ def initialize(value = nil)
9
+ @value = value
10
+ end
11
+
12
+ def self.parse(shape_properties_node)
13
+ fill_color = DocxColor.new
14
+ shape_properties_node.xpath('*').each do |fill_node|
15
+ case fill_node.name
16
+ when 'blipFill'
17
+ fill_color.type = :picture
18
+ fill_color.value = DocxBlip.parse(fill_node)
19
+ fill_node.xpath('*').each do |fill_type_node_child|
20
+ case fill_type_node_child.name
21
+ when 'tile'
22
+ fill_color.stretching_type = :tile
23
+ when 'stretch'
24
+ fill_color.stretching_type = :stretch
25
+ when 'blip'
26
+ fill_type_node_child.xpath('alphaModFix').each { |alpha_node| fill_color.alpha = alpha_node.attribute('amt').value.to_i / 1_000.0 }
27
+ end
28
+ end
29
+ when 'solidFill'
30
+ fill_color.type = :solid
31
+ fill_color.value = Color.parse_color_model(fill_node)
32
+ when 'gradFill'
33
+ fill_color.type = :gradient
34
+ fill_color.value = DocxGradientColor.parse(fill_node)
35
+ when 'pattFill'
36
+ fill_color.type = :pattern
37
+ fill_color.value = DocxPatternFill.parse(fill_node)
38
+ end
39
+ end
40
+ fill_color
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,54 @@
1
+ require_relative 'color/docx_color_scheme'
2
+ require_relative 'line/line_end'
3
+ # Docx Shape Line
4
+ module OoxmlParser
5
+ class DocxShapeLine
6
+ attr_accessor :width, :color_scheme, :cap, :head_end, :tail_end, :fill
7
+
8
+ alias color color_scheme
9
+
10
+ def initialize
11
+ @width = 0
12
+ end
13
+
14
+ def stroke_size
15
+ if @color_scheme.nil? || @color_scheme.color == :none
16
+ 0
17
+ else
18
+ @width
19
+ end
20
+ end
21
+
22
+ def nil?
23
+ stroke_size == 0 && cap.nil?
24
+ end
25
+
26
+ def self.parse(shape_line_node)
27
+ shape_line = DocxShapeLine.new
28
+ shape_line.width = (shape_line_node.attribute('w').value.to_f / 12_699.3).round(2) unless shape_line_node.attribute('w').nil?
29
+ unless shape_line_node.attribute('cap').nil?
30
+ case shape_line_node.attribute('cap').value
31
+ when 'rnd'
32
+ shape_line.cap = :round
33
+ when 'sq'
34
+ shape_line.cap = :square
35
+ when 'flat'
36
+ shape_line.cap = :flat
37
+ end
38
+ end
39
+ shape_line_node.xpath('*').each do |shape_line_node_child|
40
+ case shape_line_node_child.name
41
+ when 'solidFill'
42
+ shape_line.color_scheme = DocxColorScheme.parse(shape_line_node_child)
43
+ when 'noFill'
44
+ shape_line.width = 0
45
+ when 'headEnd'
46
+ shape_line.head_end = LineEnd.parse(shape_line_node_child)
47
+ when 'tailEnd'
48
+ shape_line.tail_end = LineEnd.parse(shape_line_node_child)
49
+ end
50
+ end
51
+ shape_line
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,25 @@
1
+ # Class for working with TextBox (w:txbxContent)
2
+ module OoxmlParser
3
+ class TextBox
4
+ # Parse TextBox List
5
+ # @param [Nokogiri::XML:Node] node with TextBox
6
+ # @return [Array] array of elements
7
+ def self.parse_list(node)
8
+ elements = []
9
+ text_box_content_node = node.xpath('w:txbxContent').first
10
+ unless text_box_content_node.nil?
11
+ text_box_content_node.xpath('*').each_with_index do |textbox_element, i|
12
+ case textbox_element.name
13
+ when 'p'
14
+ DocumentStructure.default_paragraph_style = DocxParagraph.new
15
+ DocumentStructure.default_paragraph_style.spacing = Spacing.new(0, 0.35, 1.15, :multiple)
16
+ elements << DocxParagraph.parse(textbox_element, i, DocumentStructure.default_paragraph_style)
17
+ when 'tbl'
18
+ elements << Table.parse(textbox_element, i)
19
+ end
20
+ end
21
+ end
22
+ elements
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,40 @@
1
+ require_relative 'docx_color'
2
+ require_relative 'docx_shape_size'
3
+ require_relative 'docx_shape_line'
4
+ require_relative 'docx_shape_properties/text_box'
5
+ require_relative 'custom_geometry/ooxml_custom_geometry'
6
+ # DOCX Shape Properties
7
+ module OoxmlParser
8
+ class DocxShapeProperties < OOXMLDocumentObject
9
+ attr_accessor :shape_size, :preset_geometry, :fill_color, :text_box, :line, :custom_geometry
10
+
11
+ alias transform shape_size
12
+ alias fill fill_color
13
+ alias preset preset_geometry
14
+
15
+ def initialize
16
+ @line = DocxShapeLine.new
17
+ end
18
+
19
+ def self.parse(shape_properties_node)
20
+ shape_properties = DocxShapeProperties.new
21
+ shape_properties.fill_color = DocxColor.parse(shape_properties_node)
22
+ shape_properties_node.xpath('*').each do |shape_properties_node_child|
23
+ case shape_properties_node_child.name
24
+ when 'xfrm'
25
+ shape_properties.shape_size = DocxShapeSize.parse(shape_properties_node_child)
26
+ when 'prstGeom'
27
+ shape_properties.preset_geometry = shape_properties_node_child.attribute('prst').value.to_sym
28
+ when 'txbx'
29
+ shape_properties.text_box = TextBox.parse_list(shape_properties_node_child)
30
+ when 'ln'
31
+ shape_properties.line = DocxShapeLine.parse(shape_properties_node_child)
32
+ when 'custGeom'
33
+ shape_properties.preset_geometry = :custom
34
+ shape_properties.custom_geometry = OOXMLCustomGeometry.parse(shape_properties_node_child)
35
+ end
36
+ end
37
+ shape_properties
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ # Docx Shape Size
2
+ module OoxmlParser
3
+ class DocxShapeSize
4
+ attr_accessor :rotation, :flip_horizontal, :flip_vertical, :offset, :extent
5
+
6
+ alias extents extent
7
+
8
+ def self.parse(xfrm_node)
9
+ shape_size = DocxShapeSize.new
10
+ xfrm_node.attributes.each do |key, value|
11
+ case key
12
+ when 'rot'
13
+ shape_size.rotation = value.value.to_f
14
+ when 'flipH'
15
+ shape_size.flip_horizontal = value.value.to_f
16
+ when 'flipV'
17
+ shape_size.flip_vertical = value.value.to_f
18
+ end
19
+ end
20
+ xfrm_node.xpath('*').each do |xfrm_node_child|
21
+ case xfrm_node_child.name
22
+ when 'off'
23
+ shape_size.offset = OOXMLCoordinates.parse(xfrm_node_child)
24
+ when 'ext'
25
+ shape_size.extent = OOXMLCoordinates.parse(xfrm_node_child, x_attr: 'cx', y_attr: 'cy')
26
+ end
27
+ end
28
+ shape_size
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ # Class for describing Line Size
2
+ module OoxmlParser
3
+ class LineSize
4
+ # Parse LineSize
5
+ # @param [Nokogiri::XML:Attr] node with LineSize
6
+ # @return [Symbol] value of LineSize
7
+ def self.parse(node)
8
+ case node
9
+ when 'lg'
10
+ :large
11
+ when 'med'
12
+ :medium
13
+ when 'sm'
14
+ :small
15
+ else
16
+ node.to_sym
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'line_end/line_size'
2
+ module OoxmlParser
3
+ class LineEnd < OOXMLDocumentObject
4
+ attr_accessor :type, :length, :width
5
+
6
+ def self.parse(line_end_node)
7
+ line_end = LineEnd.new
8
+ line_end_node.attributes.each do |key, value|
9
+ case key
10
+ when 'type'
11
+ line_end.type = value.value.to_sym
12
+ when 'w'
13
+ line_end.width = LineSize.parse(value.value)
14
+ when 'len'
15
+ line_end.length = LineSize.parse(value.value)
16
+ end
17
+ end
18
+ line_end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ module OoxmlParser
2
+ class DocxShapeStyle
3
+ # To change this template use File | Settings | File Templates.
4
+ end
5
+ end