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,16 @@
1
+ module OoxmlParser
2
+ class GroupingProperties
3
+ attr_accessor :transform
4
+
5
+ def self.parse(grouping_properties_node)
6
+ grouping_properties = GroupingProperties.new
7
+ grouping_properties_node.xpath('*').each do |grouping_property_node|
8
+ case grouping_property_node.name
9
+ when 'xfrm'
10
+ grouping_properties.transform = TransformEffect.parse(grouping_property_node)
11
+ end
12
+ end
13
+ grouping_properties
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ require_relative 'shapes_grouping/grouping_properties'
2
+ module OoxmlParser
3
+ class ShapesGrouping
4
+ attr_accessor :elements, :properties
5
+
6
+ def initialize(elements = [])
7
+ @elements = elements
8
+ end
9
+
10
+ def self.parse(grouping_node)
11
+ grouping = ShapesGrouping.new
12
+ grouping_node.xpath('*').each do |grouping_node_child|
13
+ case grouping_node_child.name
14
+ when 'nvGrpSpPr'
15
+ when 'grpSpPr'
16
+ grouping.properties = GroupingProperties.parse(grouping_node_child)
17
+ when 'pic'
18
+ grouping.elements << DocxPicture.parse(grouping_node_child)
19
+ when 'sp'
20
+ grouping.elements << PresentationShape.parse(grouping_node_child).dup
21
+ when 'grpSp'
22
+ grouping.elements << parse(grouping_node_child)
23
+ when 'graphicFrame'
24
+ grouping.elements << GraphicFrame.parse(grouping_node_child)
25
+ end
26
+ end
27
+ grouping
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,22 @@
1
+ module OoxmlParser
2
+ class AnimationEffect
3
+ attr_accessor :transition, :filter, :behavior
4
+
5
+ def initialize(behavior = nil)
6
+ @behavior = behavior
7
+ end
8
+
9
+ def self.parse(animation_effect_node)
10
+ animation_effect = AnimationEffect.new
11
+ animation_effect.transition = animation_effect_node.attribute('transition').value
12
+ animation_effect.filter = animation_effect_node.attribute('filter').value
13
+ animation_effect_node.xpath('*').each do |animation_effect_node_child|
14
+ case animation_effect_node_child.name
15
+ when 'cBhvr'
16
+ animation_effect.behavior = Behavior.parse(animation_effect_node_child)
17
+ end
18
+ end
19
+ animation_effect
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,28 @@
1
+ module OoxmlParser
2
+ class Behavior
3
+ attr_accessor :common_time_node, :attribute_name_list, :target
4
+
5
+ def initialize(common_time_node = nil, attribute_name_list = [], target = nil)
6
+ @common_time_node = common_time_node
7
+ @attribute_name_list = attribute_name_list
8
+ @target = target
9
+ end
10
+
11
+ def self.parse(behavior_node)
12
+ behavior = Behavior.new
13
+ behavior_node.xpath('*').each do |behavior_node_child|
14
+ case behavior_node_child.name
15
+ when 'cTn'
16
+ behavior.common_time_node = CommonTiming.parse(behavior_node_child)
17
+ when 'tgtEl'
18
+ behavior.target = TargetElement.parse(behavior_node_child)
19
+ when 'attrNameLst'
20
+ behavior_node_child.xpath('p:attrName').each do |attribute_name_node|
21
+ behavior.attribute_name_list << attribute_name_node.text
22
+ end
23
+ end
24
+ end
25
+ behavior
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ module OoxmlParser
2
+ class TargetElement
3
+ attr_accessor :type, :id, :name, :built_in
4
+
5
+ def initialize(type = '', id = '')
6
+ @type = type
7
+ @id = id
8
+ end
9
+
10
+ def self.parse(target_node)
11
+ target = TargetElement.new
12
+ target_node.xpath('*').each do |target_node_child|
13
+ case target_node_child.name
14
+ when 'sldTgt'
15
+ target.type = :slide
16
+ when 'sndTgt'
17
+ target.type = :sound
18
+ target.name = target_node_child.attribute('name').value
19
+ target.built_in = target_node_child.attribute('builtIn').value ? StringHelper.to_bool(target_node_child.attribute('builtIn').value) : false
20
+ when 'spTgt'
21
+ target.type = :shape
22
+ target.id = target_node_child.attribute('spid').value
23
+ when 'inkTgt'
24
+ target.type = :ink
25
+ target.id = target_node_child.attribute('spid').value
26
+ end
27
+ end
28
+ target
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ module OoxmlParser
2
+ class SetTimeNode
3
+ attr_accessor :behavior, :to
4
+
5
+ def initialize(behavior = nil)
6
+ @behavior = behavior
7
+ end
8
+
9
+ def self.parse(set_time_node)
10
+ set_time = SetTimeNode.new
11
+ set_time_node.xpath('*').each do |set_time_node_child|
12
+ case set_time_node_child.name
13
+ when 'cBhvr'
14
+ set_time.behavior = Behavior.parse(set_time_node_child)
15
+ end
16
+ end
17
+ set_time
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ module OoxmlParser
2
+ class Condition
3
+ attr_accessor :event, :delay, :duration
4
+
5
+ def initialize(event = nil, delay = nil, duration = nil)
6
+ @event = event
7
+ @delay = delay
8
+ @duration = duration
9
+ end
10
+
11
+ def self.parse(condition_node)
12
+ condition = Condition.new
13
+ condition.event = condition_node.attribute('evt').value
14
+ condition.delay = condition_node.attribute('delay').value
15
+ condition
16
+ end
17
+
18
+ def self.parse_list(conditions_list_node)
19
+ conditions = []
20
+ conditions_list_node.xpath('p:cond').each do |condition_node|
21
+ conditions << Condition.parse(condition_node)
22
+ end
23
+ conditions
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'common_timing/condition'
2
+ module OoxmlParser
3
+ class CommonTiming
4
+ attr_accessor :id, :duration, :restart, :children, :start_conditions, :end_conditions
5
+
6
+ def initialize
7
+ @id = nil
8
+ @duration = nil
9
+ @restart = nil
10
+ @children = []
11
+ @start_conditions = []
12
+ @end_conditions = []
13
+ end
14
+
15
+ def self.parse(common_time_node)
16
+ common_timing = CommonTiming.new
17
+ common_timing.duration = common_time_node.attribute('dur').value unless common_time_node.attribute('dur').nil?
18
+ common_timing.restart = common_time_node.attribute('restart').value unless common_time_node.attribute('restart').nil?
19
+ common_timing.id = common_time_node.attribute('id').value
20
+ common_time_node.xpath('*').each do |common_time_node_child|
21
+ case common_time_node_child.name
22
+ when 'stCondLst'
23
+ common_timing.start_conditions = Condition.parse_list(common_time_node_child)
24
+ when 'endCondLst'
25
+ common_timing.end_conditions = Condition.parse_list(common_time_node_child)
26
+ when 'childTnLst'
27
+ common_timing.children = TimeNode.parse_list(common_time_node_child)
28
+ end
29
+ end
30
+ common_timing
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,52 @@
1
+ require_relative 'time_node/common_timing'
2
+ module OoxmlParser
3
+ class TimeNode
4
+ attr_accessor :type, :common_time_node, :previous_conditions_list, :next_conditions_list
5
+
6
+ def initialize(type = nil, common_time_node = nil, previous_conditions_list = [], next_conditions_list = [])
7
+ @type = type
8
+ @common_time_node = common_time_node
9
+ @previous_conditions_list = previous_conditions_list
10
+ @next_conditions_list = next_conditions_list
11
+ end
12
+
13
+ def self.parse(time_node, type)
14
+ time = TimeNode.new
15
+ time.type = type
16
+ time_node.xpath('*').each do |time_node_child|
17
+ case time_node_child.name
18
+ when 'cTn'
19
+ time.common_time_node = CommonTiming.parse(time_node_child)
20
+ when 'prevCondLst'
21
+ time.previous_conditions_list = Condition.parse_list(time_node_child)
22
+ end
23
+ end
24
+ time
25
+ end
26
+
27
+ def self.parse_list(timing_list_node)
28
+ timings = []
29
+ timing_list_node.xpath('*').each do |time_node|
30
+ case time_node.name
31
+ when 'par'
32
+ timings << TimeNode.parse(time_node, :parallel)
33
+ when 'seq'
34
+ timings << TimeNode.parse(time_node, :sequence)
35
+ when 'excl'
36
+ timings << TimeNode.parse(time_node, :exclusive)
37
+ when 'anim'
38
+ timings << TimeNode.parse(time_node, :animate)
39
+ when 'set'
40
+ timings << SetTimeNode.parse(time_node)
41
+ when 'animEffect'
42
+ timings << AnimationEffect.parse(time_node)
43
+ when 'video'
44
+ timings << :video
45
+ when 'audio'
46
+ timings << :audio
47
+ end
48
+ end
49
+ timings
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'timing/time_node'
2
+ module OoxmlParser
3
+ class Timing
4
+ attr_accessor :time_node_list, :build_list, :extension_list
5
+
6
+ def initialize(time_node_list = [], build_list = [], extension_list = [])
7
+ @time_node_list = time_node_list
8
+ @build_list = build_list
9
+ @extension_list = extension_list
10
+ end
11
+
12
+ def self.parse(timing_node)
13
+ timing = Timing.new
14
+ timing_node.xpath('*').each do |timing_node_child|
15
+ case timing_node_child.name
16
+ when 'tnLst'
17
+ timing.time_node_list = TimeNode.parse_list(timing_node_child)
18
+ end
19
+ end
20
+ timing
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ module OoxmlParser
2
+ class Sound < OOXMLDocumentObject
3
+ attr_accessor :path, :name
4
+
5
+ def initialize(path = '', name = '')
6
+ @path = path
7
+ @name = name
8
+ end
9
+
10
+ def self.parse(sound_node)
11
+ sound = Sound.new
12
+ path_to_original_file = dir + OOXMLDocumentObject.get_link_from_rels(sound_node.attribute('embed').value)
13
+ sound.path = FileHelper.copy_file(path_to_original_file, "#{DEFAULT_DIRECTORY_FOR_MEDIA}/media_from_#{File.basename(OOXMLDocumentObject.path_to_folder)}/")
14
+ sound.name = sound_node.attribute('name').value
15
+ sound
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module OoxmlParser
2
+ class SoundAction
3
+ attr_accessor :start_sound, :end_sound
4
+
5
+ def self.parse(sound_action_node)
6
+ sound_action = SoundAction.new
7
+ sound_action_node.xpath('*').each do |sound_action_node_child|
8
+ case sound_action_node_child.name
9
+ when 'stSnd'
10
+ sound_action.start_sound = Sound.parse(sound_action_node_child.xpath('p:snd').first) unless sound_action_node_child.xpath('p:snd').first.nil?
11
+ when 'endSnd'
12
+ sound_action.end_sound = Sound.parse(sound_action_node_child.xpath('p:snd').first) unless sound_action_node_child.xpath('p:snd').first.nil?
13
+ end
14
+ end
15
+ sound_action
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,43 @@
1
+ require_relative 'transition_properties/transition_properties'
2
+ module OoxmlParser
3
+ class Transition < OOXMLDocumentObject
4
+ attr_accessor :speed, :properties, :sound_action, :advance_on_click, :delay, :duration
5
+
6
+ def initialize(properties = TransitionProperties.new)
7
+ @properties = properties
8
+ end
9
+
10
+ def self.parse(transition_node)
11
+ transition = Transition.new
12
+ transition_node.xpath('*').each do |transition_node_child|
13
+ transition.properties.type = transition_node_child.name.to_sym
14
+ case transition_node_child.name
15
+ when 'blinds', 'checker', 'comb', 'cover', 'pull', 'push', 'randomBar', 'strips', 'wipe', 'zoom', 'warp'
16
+ transition.properties.direction = Alignment.parse(transition_node_child.attribute('dir'))
17
+ when 'cut', 'fade'
18
+ transition.properties.through_black = OOXMLDocumentObject.option_enabled?(transition_node_child, 'thruBlk')
19
+ when 'split'
20
+ transition.properties.direction = Alignment.parse(transition_node_child.attribute('dir'))
21
+ transition.properties.orientation = transition_node_child.attribute('orient').value.to_sym if transition_node_child.attribute('orient').value
22
+ when 'wheel', 'wheelReverse'
23
+ transition.properties.spokes = OOXMLDocumentObject.option_enabled?(transition_node_child, 'spokes')
24
+ when 'sndAc'
25
+ transition.sound_action = SoundAction.parse(transition_node_child)
26
+ end
27
+ end
28
+ transition_node.attributes.each do |key, value|
29
+ case key
30
+ when 'spd'
31
+ transition.speed = value.value.to_sym
32
+ when 'advClick'
33
+ transition.advance_on_click = OOXMLDocumentObject.option_enabled?(transition_node, key)
34
+ when 'advTm'
35
+ transition.delay = value.value.to_f / 1_000.0
36
+ when 'dur'
37
+ transition.duration = value.value.to_f / 1_000.0
38
+ end
39
+ end
40
+ transition
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,9 @@
1
+ module OoxmlParser
2
+ class TransitionProperties
3
+ attr_accessor :type, :through_black, :direction, :orientation, :spokes
4
+
5
+ def initialize(type = nil)
6
+ @type = type
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,110 @@
1
+ require_relative 'slide/presentation_alternate_content'
2
+ require_relative 'slide/background'
3
+ require_relative 'slide/graphic_frame/graphic_frame'
4
+ require_relative 'slide/slide/shapes_grouping'
5
+ require_relative 'slide/slide/timing'
6
+ module OoxmlParser
7
+ class Slide < OOXMLDocumentObject
8
+ attr_accessor :elements, :background, :transition, :timing, :alternate_content
9
+
10
+ def initialize(elements = [], background = nil)
11
+ @elements = elements
12
+ @background = background
13
+ end
14
+
15
+ def nonempty_elements
16
+ @elements.select { |cur_shape| !cur_shape.text_body.paragraphs.first.characters.empty? }
17
+ end
18
+
19
+ def graphic_frames
20
+ @elements.select { |cur_element| cur_element.is_a?(GraphicFrame) }
21
+ end
22
+
23
+ def content_horizontal_align(object, slide_size)
24
+ transform = nil
25
+ case object
26
+ when :image
27
+ transform = elements.find { |e| e.is_a? Picture }.properties.transform
28
+ when :chart
29
+ transform = elements.find { |e| e.is_a? GraphicFrame }.transform
30
+ when :table
31
+ transform = elements.find { |e| e.is_a? GraphicFrame }.transform
32
+ when :shape
33
+ transform = elements.find { |e| !e.shape_properties.preset.nil? }.shape_properties.transform
34
+ else
35
+ raise "Dont know this type object - #{object}"
36
+ end
37
+ return :left if transform.offset.x == 0
38
+ return :center if ((slide_size.width / 2) - (transform.extents.x / 2)).round(1) == transform.offset.x.round(1)
39
+ return :right if (slide_size.width - transform.extents.x).round(1) == transform.offset.x.round(1)
40
+ :unknown
41
+ end
42
+
43
+ def content_vertical_align(object, slide_size)
44
+ transform = nil
45
+ case object
46
+ when :image
47
+ transform = elements.find { |e| e.is_a? Picture }.properties.transform
48
+ when :chart
49
+ transform = elements.find { |e| e.is_a? GraphicFrame }.transform
50
+ when :table
51
+ transform = elements.find { |e| e.is_a? GraphicFrame }.transform
52
+ when :shape
53
+ transform = elements.find { |e| !e.shape_properties.preset.nil? }.shape_properties.transform
54
+ else
55
+ raise "Dont know this type object - #{object}"
56
+ end
57
+ return :top if transform.offset.y == 0
58
+ return :middle if ((slide_size.height / 2) - (transform.extents.y / 2)).round(1) == transform.offset.y.round(1)
59
+ return :bottom if (slide_size.height - transform.extents.y).round(1) == transform.offset.y.round(1)
60
+ :unknown
61
+ end
62
+
63
+ def content_distribute(object, slide_size)
64
+ return [:horizontally, :vertically] if content_horizontal_align(object, slide_size) == :center && content_vertical_align(object, slide_size) == :middle
65
+ return [:horizontally] if content_horizontal_align(object, slide_size) == :center
66
+ return [:vertically] if content_vertical_align(object, slide_size) == :middle
67
+ end
68
+
69
+ def self.parse(path_to_slide_xml)
70
+ slide = Slide.new
71
+ OOXMLDocumentObject.add_to_xmls_stack(path_to_slide_xml)
72
+ doc = Nokogiri::XML(File.open(OOXMLDocumentObject.current_xml))
73
+ doc.xpath('//p:sld/*').each do |slide_node_child|
74
+ case slide_node_child.name
75
+ when 'cSld'
76
+ slide_node_child.xpath('*').each do |common_slide_node_child|
77
+ case common_slide_node_child.name
78
+ when 'spTree'
79
+ common_slide_node_child.xpath('*').each do |slide_element_node|
80
+ case slide_element_node.name
81
+ when 'nvGrpSpPr'
82
+ when 'grpSpPr'
83
+ when 'sp'
84
+ slide.elements << PresentationShape.parse(slide_element_node).dup
85
+ when 'pic'
86
+ slide.elements << DocxPicture.parse(slide_element_node)
87
+ when 'graphicFrame'
88
+ slide.elements << GraphicFrame.parse(slide_element_node)
89
+ when 'grpSp'
90
+ slide.elements << ShapesGrouping.parse(slide_element_node)
91
+ end
92
+ end
93
+ when 'bg'
94
+ slide.background = Background.parse(common_slide_node_child)
95
+ end
96
+ end
97
+ when 'clrMapOvr'
98
+ when 'timing'
99
+ slide.timing = Timing.parse(slide_node_child)
100
+ when 'transition'
101
+ slide.transition = Transition.parse(slide_node_child)
102
+ when 'AlternateContent'
103
+ slide.alternate_content = PresentationAlternateContent.parse(slide_node_child)
104
+ end
105
+ end
106
+ OOXMLDocumentObject.xmls_stack.pop
107
+ slide
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,20 @@
1
+ module OoxmlParser
2
+ class SlideSize
3
+ attr_accessor :width, :height, :type
4
+
5
+ def self.parse(slide_size_node)
6
+ slide_size = SlideSize.new
7
+ slide_size_node.attributes.each do |key, value|
8
+ case key
9
+ when 'cx'
10
+ slide_size.width = (value.value.to_f / OoxmlParser.configuration.units_delimiter).round(2)
11
+ when 'cy'
12
+ slide_size.height = (value.value.to_f / OoxmlParser.configuration.units_delimiter).round(2)
13
+ when 'type'
14
+ slide_size.type = value.value.to_sym
15
+ end
16
+ end
17
+ slide_size
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,62 @@
1
+ require_relative 'presentation/presentation_comment'
2
+ require_relative 'presentation/presentation_theme'
3
+ require_relative 'presentation/slide'
4
+ require_relative 'presentation/slide_size'
5
+ module OoxmlParser
6
+ class Presentation < CommonDocumentStructure
7
+ attr_accessor :slides, :theme, :slide_size, :comments
8
+
9
+ def initialize(slides = [], theme = nil, comments = [])
10
+ @slides = slides
11
+ @theme = theme
12
+ @comments = comments
13
+ end
14
+
15
+ def self.parse(path_to_folder)
16
+ OOXMLDocumentObject.path_to_folder = path_to_folder
17
+ OOXMLDocumentObject.root_subfolder = 'ppt/'
18
+ OOXMLDocumentObject.xmls_stack = []
19
+ OOXMLDocumentObject.namespace_prefix = 'a'
20
+ OOXMLDocumentObject.add_to_xmls_stack('ppt/presentation.xml')
21
+ doc = Nokogiri::XML(File.open(OOXMLDocumentObject.current_xml))
22
+ presentation = Presentation.new
23
+ presentation.theme = PresentationTheme.parse('ppt/theme/theme1.xml')
24
+ presentation_node = doc.search('//p:presentation').first
25
+ presentation_node.xpath('*').each do |presentation_node_child|
26
+ case presentation_node_child.name
27
+ when 'sldSz'
28
+ presentation.slide_size = SlideSize.parse(presentation_node_child)
29
+ when 'sldIdLst'
30
+ presentation_node_child.xpath('p:sldId').each do |silde_id_node|
31
+ id = nil
32
+ silde_id_node.attribute_nodes.select { |node| id = node.to_s if node.namespace && node.namespace.prefix == 'r' }
33
+ presentation.slides << Slide.parse("#{OOXMLDocumentObject.root_subfolder}/#{OOXMLDocumentObject.get_link_from_rels(id)}")
34
+ end
35
+ end
36
+ end
37
+ presentation.comments = PresentationComment.parse_list
38
+ OOXMLDocumentObject.xmls_stack.pop
39
+ presentation
40
+ end
41
+
42
+ class << self
43
+ # @return [FontStyle] current font_style
44
+ attr_accessor :current_font_style
45
+
46
+ def current_font_style
47
+ @current_font_style = FontStyle.new if @current_font_style.nil?
48
+ @current_font_style
49
+ end
50
+
51
+ # @return [String] default_font_typeface
52
+ def default_font_typeface
53
+ 'Arial'
54
+ end
55
+
56
+ # @return [FixNum] default_font_typeface
57
+ def default_font_size
58
+ 18
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'pptx_data/presentation.rb'
2
+
3
+ module OoxmlParser
4
+ class PptxParser
5
+ def self.parse_pptx(path_to_file)
6
+ path_to_zip_file = OOXMLDocumentObject.copy_file_and_rename_to_zip(path_to_file)
7
+ OOXMLDocumentObject.unzip_file(path_to_zip_file, path_to_zip_file.sub(File.basename(path_to_zip_file), ''))
8
+ OOXMLDocumentObject.path_to_folder = path_to_zip_file.sub(File.basename(path_to_zip_file), '')
9
+ pptx_model = Presentation.parse(OOXMLDocumentObject.path_to_folder)
10
+ pptx_model.file_path = path_to_file
11
+ FileUtils.remove_dir(OOXMLDocumentObject.path_to_folder)
12
+ pptx_model
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ module OoxmlParser
2
+ # This module holds the RuboCop version information.
3
+ module Version
4
+ STRING = '0.1.1'.freeze
5
+ end
6
+ end
@@ -0,0 +1,27 @@
1
+ # Properties of XLSX comment Character (Run)
2
+ module OoxmlParser
3
+ class ExcelCommentCharacterProperties < OOXMLDocumentObject
4
+ attr_accessor :size, :color, :font
5
+
6
+ def initialize(size = '', color = nil, font = '')
7
+ @size = size
8
+ @color = color
9
+ @font = font
10
+ end
11
+
12
+ def self.parse(properties_node)
13
+ character_properties = ExcelCommentCharacterProperties.new
14
+ properties_node.xpath('*').each do |properties_node_child|
15
+ case properties_node_child.name
16
+ when 'sz'
17
+ character_properties.size = properties_node_child.attribute('val').value
18
+ when 'color'
19
+ character_properties.color = Color.parse_color_tag(properties_node_child)
20
+ when 'rFont'
21
+ character_properties.font = properties_node_child.attribute('val').value
22
+ end
23
+ end
24
+ character_properties
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ require_relative 'excel_comment_character/excel_comment_character_properties'
2
+ # Single Properties Character (Run) of XLSX comment
3
+ module OoxmlParser
4
+ class ExcelCommentCharacter
5
+ attr_accessor :properties, :text
6
+
7
+ def initialize(properties = nil, text = '')
8
+ @properties = properties
9
+ @text = text
10
+ end
11
+
12
+ def self.parse(character_node)
13
+ character = ExcelCommentCharacter.new
14
+ character_node.xpath('*').each do |character_node_child|
15
+ case character_node_child.name
16
+ when 'rPr'
17
+ character.properties = ExcelCommentCharacterProperties.parse(character_node_child)
18
+ when 't'
19
+ character.text = character_node_child.text
20
+ end
21
+ end
22
+ character
23
+ end
24
+ end
25
+ end