openxml-docx 0.9.0 → 0.10.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 (211) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -4
  3. data/examples/drawing-ml +134 -0
  4. data/examples/table +28 -0
  5. data/lib/openxml/docx.rb +9 -0
  6. data/lib/openxml/docx/attribute_builder.rb +17 -4
  7. data/lib/openxml/docx/elements/absolute_position_tab.rb +4 -19
  8. data/lib/openxml/docx/elements/bidi_embed.rb +1 -10
  9. data/lib/openxml/docx/elements/bidi_override.rb +1 -9
  10. data/lib/openxml/docx/elements/break.rb +3 -14
  11. data/lib/openxml/docx/elements/control.rb +5 -2
  12. data/lib/openxml/docx/elements/deleted_text.rb +1 -1
  13. data/lib/openxml/docx/elements/drawing.rb +9 -0
  14. data/lib/openxml/docx/elements/element.rb +2 -1
  15. data/lib/openxml/docx/elements/embed_bold.rb +25 -0
  16. data/lib/openxml/docx/elements/embed_bold_italic.rb +25 -0
  17. data/lib/openxml/docx/elements/embed_italic.rb +25 -0
  18. data/lib/openxml/docx/elements/embed_regular.rb +25 -0
  19. data/lib/openxml/docx/elements/family.rb +22 -0
  20. data/lib/openxml/docx/elements/font.rb +14 -0
  21. data/lib/openxml/docx/elements/grid_column.rb +2 -2
  22. data/lib/openxml/docx/elements/group_shape.rb +10 -0
  23. data/lib/openxml/docx/elements/markup_compatibility_alternate_content.rb +10 -0
  24. data/lib/openxml/docx/elements/markup_compatibility_choice.rb +13 -0
  25. data/lib/openxml/docx/elements/markup_compatibility_fallback.rb +10 -0
  26. data/lib/openxml/docx/elements/paper_source.rb +4 -2
  27. data/lib/openxml/docx/elements/section_properties.rb +9 -0
  28. data/lib/openxml/docx/elements/symbol.rb +4 -2
  29. data/lib/openxml/docx/elements/table.rb +1 -1
  30. data/lib/openxml/docx/elements/table_cell.rb +2 -1
  31. data/lib/openxml/docx/elements/table_row.rb +7 -5
  32. data/lib/openxml/docx/elements/text.rb +1 -10
  33. data/lib/openxml/docx/elements/vml_container.rb +10 -0
  34. data/lib/openxml/docx/elements/word_processing_drawing_anchor.rb +23 -0
  35. data/lib/openxml/docx/elements/word_processing_drawing_effect_extent.rb +16 -0
  36. data/lib/openxml/docx/elements/word_processing_drawing_extent.rb +14 -0
  37. data/lib/openxml/docx/elements/word_processing_drawing_nv_graphic_frame_properties.rb +11 -0
  38. data/lib/openxml/docx/elements/word_processing_drawing_object_nv_properties.rb +17 -0
  39. data/lib/openxml/docx/elements/word_processing_drawing_position_h.rb +23 -0
  40. data/lib/openxml/docx/elements/word_processing_drawing_position_offset.rb +10 -0
  41. data/lib/openxml/docx/elements/word_processing_drawing_position_v.rb +23 -0
  42. data/lib/openxml/docx/elements/word_processing_drawing_simple_position.rb +13 -0
  43. data/lib/openxml/docx/elements/word_processing_drawing_wrap_none.rb +10 -0
  44. data/lib/openxml/docx/elements/word_processing_shapes_body_properties.rb +58 -0
  45. data/lib/openxml/docx/elements/word_processing_shapes_shape.rb +12 -0
  46. data/lib/openxml/docx/elements/word_processing_shapes_shape_properties.rb +23 -0
  47. data/lib/openxml/docx/package.rb +73 -1
  48. data/lib/openxml/docx/parts/document.rb +6 -24
  49. data/lib/openxml/docx/parts/fonts.rb +35 -0
  50. data/lib/openxml/docx/parts/footer.rb +32 -0
  51. data/lib/openxml/docx/parts/header.rb +32 -0
  52. data/lib/openxml/docx/parts/settings.rb +6 -2
  53. data/lib/openxml/docx/parts/styles.rb +5 -6
  54. data/lib/openxml/docx/properties.rb +0 -1
  55. data/lib/openxml/docx/properties/alignment.rb +1 -1
  56. data/lib/openxml/docx/properties/base_property.rb +13 -0
  57. data/lib/openxml/docx/properties/border.rb +11 -9
  58. data/lib/openxml/docx/properties/color.rb +6 -4
  59. data/lib/openxml/docx/properties/column.rb +4 -2
  60. data/lib/openxml/docx/properties/columns.rb +6 -4
  61. data/lib/openxml/docx/properties/complex_property.rb +1 -1
  62. data/lib/openxml/docx/properties/conditional_formatting.rb +14 -12
  63. data/lib/openxml/docx/properties/document_grid.rb +4 -10
  64. data/lib/openxml/docx/properties/east_asian_layout.rb +6 -11
  65. data/lib/openxml/docx/properties/font.rb +18 -22
  66. data/lib/openxml/docx/properties/footer_reference.rb +21 -0
  67. data/lib/openxml/docx/properties/frame.rb +16 -47
  68. data/lib/openxml/docx/properties/header_reference.rb +21 -0
  69. data/lib/openxml/docx/properties/indentation.rb +11 -8
  70. data/lib/openxml/docx/properties/language.rb +5 -3
  71. data/lib/openxml/docx/properties/latent_styles.rb +9 -6
  72. data/lib/openxml/docx/properties/latent_styles_exception.rb +9 -6
  73. data/lib/openxml/docx/properties/line_numbering.rb +5 -11
  74. data/lib/openxml/docx/properties/manual_width.rb +4 -2
  75. data/lib/openxml/docx/properties/numbering.rb +4 -2
  76. data/lib/openxml/docx/properties/page_borders.rb +6 -19
  77. data/lib/openxml/docx/properties/page_margins.rb +10 -7
  78. data/lib/openxml/docx/properties/page_numbering.rb +66 -74
  79. data/lib/openxml/docx/properties/page_size.rb +5 -12
  80. data/lib/openxml/docx/properties/shading.rb +46 -52
  81. data/lib/openxml/docx/properties/spacing.rb +9 -14
  82. data/lib/openxml/docx/properties/table_border.rb +12 -10
  83. data/lib/openxml/docx/properties/table_cell_border.rb +12 -10
  84. data/lib/openxml/docx/properties/table_cell_margin.rb +6 -4
  85. data/lib/openxml/docx/properties/table_cell_spacing.rb +5 -3
  86. data/lib/openxml/docx/properties/table_cell_width.rb +5 -3
  87. data/lib/openxml/docx/properties/table_indent.rb +5 -3
  88. data/lib/openxml/docx/properties/table_layout.rb +2 -4
  89. data/lib/openxml/docx/properties/table_look.rb +8 -6
  90. data/lib/openxml/docx/properties/table_p_pr.rb +11 -30
  91. data/lib/openxml/docx/properties/table_row_height.rb +13 -0
  92. data/lib/openxml/docx/properties/table_width.rb +5 -3
  93. data/lib/openxml/docx/properties/underline.rb +13 -12
  94. data/lib/openxml/docx/properties/wafter.rb +5 -3
  95. data/lib/openxml/docx/properties/wbefore.rb +5 -3
  96. data/lib/openxml/docx/root_namespaces.rb +74 -0
  97. data/lib/openxml/docx/section.rb +2 -0
  98. data/lib/openxml/docx/style.rb +4 -4
  99. data/lib/openxml/docx/version.rb +1 -1
  100. data/lib/openxml/drawingml.rb +17 -0
  101. data/lib/openxml/drawingml/elements.rb +13 -0
  102. data/lib/openxml/drawingml/elements/adjust_values_list.rb +11 -0
  103. data/lib/openxml/drawingml/elements/blip_fill.rb +14 -0
  104. data/lib/openxml/drawingml/elements/extension.rb +13 -0
  105. data/lib/openxml/drawingml/elements/extension_list.rb +11 -0
  106. data/lib/openxml/drawingml/elements/extents.rb +14 -0
  107. data/lib/openxml/drawingml/elements/graphic.rb +10 -0
  108. data/lib/openxml/drawingml/elements/graphic_data.rb +12 -0
  109. data/lib/openxml/drawingml/elements/graphic_frame_locks.rb +17 -0
  110. data/lib/openxml/drawingml/elements/head_end.rb +28 -0
  111. data/lib/openxml/drawingml/elements/no_fill.rb +10 -0
  112. data/lib/openxml/drawingml/elements/non_visual_drawing_properties.rb +17 -0
  113. data/lib/openxml/drawingml/elements/non_visual_picture_drawing_properties.rb +12 -0
  114. data/lib/openxml/drawingml/elements/non_visual_picture_properties.rb +10 -0
  115. data/lib/openxml/drawingml/elements/offset.rb +14 -0
  116. data/lib/openxml/drawingml/elements/outline.rb +36 -0
  117. data/lib/openxml/drawingml/elements/picture.rb +10 -0
  118. data/lib/openxml/drawingml/elements/preset_geometry.rb +210 -0
  119. data/lib/openxml/drawingml/elements/round.rb +10 -0
  120. data/lib/openxml/drawingml/elements/shape_guide.rb +40 -0
  121. data/lib/openxml/drawingml/elements/solid_fill.rb +10 -0
  122. data/lib/openxml/drawingml/elements/srgb_color.rb +14 -0
  123. data/lib/openxml/drawingml/elements/tail_end.rb +28 -0
  124. data/lib/openxml/drawingml/elements/transform_effect.rb +18 -0
  125. data/lib/openxml/drawingml/elements/wordprocessing_shape_group.rb +11 -0
  126. data/lib/openxml/vml.rb +17 -0
  127. data/lib/openxml/vml/elements.rb +13 -0
  128. data/lib/openxml/vml/elements/group.rb +88 -0
  129. data/lib/openxml/vml/elements/rectangle.rb +115 -0
  130. data/lib/openxml/vml/elements/rounded_rectangle.rb +121 -0
  131. data/openxml-docx.gemspec +1 -1
  132. data/spec/elements/absolute_position_tab_spec.rb +15 -47
  133. data/spec/elements/bidi_embed_spec.rb +4 -8
  134. data/spec/elements/bidi_override_spec.rb +4 -8
  135. data/spec/elements/break_spec.rb +8 -31
  136. data/spec/elements/content_part_spec.rb +2 -2
  137. data/spec/elements/control_spec.rb +6 -6
  138. data/spec/elements/deleted_text_spec.rb +2 -2
  139. data/spec/elements/drawing_spec.rb +11 -0
  140. data/spec/elements/drawingml/adjust_values_list_spec.rb +8 -0
  141. data/spec/elements/drawingml/blip_fill_spec.rb +34 -0
  142. data/spec/elements/drawingml/extension_list_spec.rb +8 -0
  143. data/spec/elements/drawingml/extension_spec.rb +19 -0
  144. data/spec/elements/drawingml/extents_spec.rb +33 -0
  145. data/spec/elements/drawingml/graphic_data_spec.rb +19 -0
  146. data/spec/elements/drawingml/graphic_frame_locks_spec.rb +78 -0
  147. data/spec/elements/drawingml/graphic_spec.rb +8 -0
  148. data/spec/elements/drawingml/head_end_spec.rb +45 -0
  149. data/spec/elements/drawingml/no_fill_spec.rb +8 -0
  150. data/spec/elements/drawingml/non_visual_drawing_properties_spec.rb +63 -0
  151. data/spec/elements/drawingml/non_visual_picture_drawing_properties_spec.rb +18 -0
  152. data/spec/elements/drawingml/non_visual_picture_properties_spec.rb +8 -0
  153. data/spec/elements/drawingml/offset_spec.rb +32 -0
  154. data/spec/elements/drawingml/outline_spec.rb +58 -0
  155. data/spec/elements/drawingml/picture_spec.rb +8 -0
  156. data/spec/elements/drawingml/preset_geometry_spec.rb +19 -0
  157. data/spec/elements/drawingml/round_spec.rb +8 -0
  158. data/spec/elements/drawingml/shape_guide_spec.rb +49 -0
  159. data/spec/elements/drawingml/solid_fill_spec.rb +8 -0
  160. data/spec/elements/drawingml/srgb_color_spec.rb +20 -0
  161. data/spec/elements/drawingml/tail_end_spec.rb +44 -0
  162. data/spec/elements/drawingml/transform_effect_spec.rb +80 -0
  163. data/spec/elements/drawingml/wordprocessing_shape_group_spec.rb +12 -0
  164. data/spec/elements/group_shape_spec.rb +11 -0
  165. data/spec/elements/markup_compatibility_alternate_content_spec.rb +11 -0
  166. data/spec/elements/markup_compatibility_choice_spec.rb +22 -0
  167. data/spec/elements/markup_compatibility_fallback_spec.rb +11 -0
  168. data/spec/elements/section_properties_spec.rb +12 -0
  169. data/spec/elements/symbol_spec.rb +4 -7
  170. data/spec/elements/text_spec.rb +2 -2
  171. data/spec/elements/vml/group_spec.rb +542 -0
  172. data/spec/elements/vml/rectangle_spec.rb +739 -0
  173. data/spec/elements/vml/rounded_rectangle_spec.rb +656 -0
  174. data/spec/elements/vml_container_spec.rb +11 -0
  175. data/spec/elements/word_processing_drawing_anchor_spec.rb +40 -0
  176. data/spec/elements/word_processing_drawing_effect_extent_spec.rb +57 -0
  177. data/spec/elements/word_processing_drawing_extent_spec.rb +34 -0
  178. data/spec/elements/word_processing_drawing_nv_graphic_frame_properties_spec.rb +11 -0
  179. data/spec/elements/word_processing_drawing_object_nv_properties_spec.rb +67 -0
  180. data/spec/elements/word_processing_drawing_position_h_spec.rb +21 -0
  181. data/spec/elements/word_processing_drawing_position_v_spec.rb +21 -0
  182. data/spec/elements/word_processing_drawing_simple_position_spec.rb +34 -0
  183. data/spec/elements/word_processing_drawing_wrap_none_spec.rb +12 -0
  184. data/spec/elements/word_processing_shapes_body_properties_spec.rb +223 -0
  185. data/spec/elements/word_processing_shapes_shape_properties_spec.rb +21 -0
  186. data/spec/elements/word_processing_shapes_shape_spec.rb +23 -0
  187. data/spec/parts/footer_spec.rb +33 -0
  188. data/spec/parts/header_spec.rb +33 -0
  189. data/spec/properties/footer_reference_spec.rb +32 -0
  190. data/spec/properties/header_reference_spec.rb +32 -0
  191. data/spec/properties/page_numbering_spec.rb +1 -1
  192. data/spec/properties/{table_cell_fit_text.rb → table_cell_fit_text_spec.rb} +0 -0
  193. data/spec/properties/{table_cell_width.rb → table_cell_width_spec.rb} +0 -0
  194. data/spec/properties/table_layout_spec.rb +14 -12
  195. data/spec/properties/{table_row_height.rb → table_row_height_spec.rb} +0 -0
  196. data/spec/section_spec.rb +2 -0
  197. data/spec/spec_helper.rb +2 -0
  198. data/spec/support/data/elements/grid_column_element.xml +1 -1
  199. data/spec/support/data/elements/table_grid_element.xml +1 -1
  200. data/spec/support/data/parts/document_with_children_part.xml +2 -1
  201. data/spec/support/data/parts/document_with_multiple_sections_part.xml +1 -1
  202. data/spec/support/data/parts/document_with_one_section_part.xml +1 -1
  203. data/spec/support/data/parts/empty_document_part.xml +1 -1
  204. data/spec/support/data/parts/empty_footer_part.xml +1 -0
  205. data/spec/support/data/parts/empty_header_part.xml +1 -0
  206. data/spec/support/data/parts/footer_with_children_part.xml +1 -0
  207. data/spec/support/data/parts/header_with_children_part.xml +1 -0
  208. data/spec/support/element_test_macros.rb +58 -9
  209. metadata +126 -9
  210. data/lib/openxml/docx/properties/tr_height.rb +0 -19
  211. data/lib/openxml/docx/properties/width_property.rb +0 -17
@@ -0,0 +1,13 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ end
5
+ end
6
+ end
7
+
8
+ require "openxml/docx/elements/element"
9
+ require "openxml/docx/elements/container"
10
+ require "openxml/docx/elements/text"
11
+ Dir.glob("#{File.join(File.dirname(__FILE__), "elements", "*.rb")}").each do |file|
12
+ require file
13
+ end
@@ -0,0 +1,11 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class AdjustValuesList < OpenXml::Docx::Elements::Container
5
+ namespace :a
6
+ tag :avLst
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class BlipFill < OpenXml::Docx::Elements::Container
5
+ namespace :pic
6
+ tag :blipFill
7
+
8
+ attribute :dpi, expects: :integer
9
+ attribute :rotWithShape, expects: :true_or_false
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Extension < OpenXml::Docx::Elements::Element
5
+ namespace :a
6
+ tag :ext
7
+
8
+ attribute :uri, expects: :string
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class ExtensionList < OpenXml::Docx::Elements::Container
5
+ namespace :a
6
+ tag :extLst
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Extents < OpenXml::Docx::Elements::Element
5
+ namespace :a
6
+ tag :ext
7
+
8
+ attribute :extent_length, expects: :positive_integer, displays_as: :cx
9
+ attribute :extent_width, expects: :positive_integer, displays_as: :cy
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Graphic < OpenXml::Docx::Elements::Container
5
+ namespace :a
6
+
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class GraphicData < OpenXml::Docx::Elements::Container
5
+ namespace :a
6
+
7
+ attribute :uri, expects: :string
8
+
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class GraphicFrameLocks < OpenXml::Docx::Elements::Element
5
+ namespace :a
6
+
7
+ attribute :noChangeAspect, expects: :true_or_false
8
+ attribute :noDrilldown, expects: :true_or_false
9
+ attribute :noGrouping, expects: :true_or_false, displays_as: :noGrp
10
+ attribute :noMove, expects: :true_or_false
11
+ attribute :noResize, expects: :true_or_false
12
+ attribute :noSelect, expects: :true_or_false
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class HeadEnd < OpenXml::Docx::Elements::Element
5
+ namespace :a
6
+
7
+ attribute :length, expects: :valid_end_size, displays_as: :len
8
+ attribute :type, expects: :valid_end_type
9
+ attribute :width, expects: :valid_end_size, displays_as: :w
10
+
11
+ private
12
+
13
+ def valid_end_size(value)
14
+ ok_values = %i(lg med sm)
15
+ message = "Invalid #{name} (#{value}). Valid values are: #{ok_values.join(", ")}."
16
+ raise ArgumentError, message unless ok_values.include? value
17
+ end
18
+
19
+ def valid_end_type(value)
20
+ ok_values = %i(arrow diamond none oval stealth triangle)
21
+ message = "Invalid end type (#{value}). Valid values are: #{ok_values.join(", ")}."
22
+ raise ArgumentError, message unless ok_values.include? value
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,10 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class NoFill < OpenXml::Docx::Elements::Element
5
+ namespace :a
6
+
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class NonVisualDrawingProperties < OpenXml::Docx::Elements::Element
5
+ namespace :pic
6
+ tag :cNvPr
7
+
8
+ attribute :descr, expects: :string
9
+ attribute :hidden, expects: :true_or_false
10
+ attribute :id, expects: :positive_integer
11
+ attribute :picture_name, expects: :string, displays_as: :name
12
+ attribute :title, expects: :string
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class NonVisualPictureDrawingProperties < OpenXml::Docx::Elements::Container
5
+ namespace :pic
6
+ tag :cNvPicPr
7
+
8
+ attribute :preferRelativeResize, expects: :true_or_false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class NonVisualPictureProperties < OpenXml::Docx::Elements::Container
5
+ namespace :pic
6
+ tag :nvPicPr
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Offset < OpenXml::Docx::Elements::Element
5
+ namespace :a
6
+ tag :off
7
+
8
+ attribute :x, expects: :integer
9
+ attribute :y, expects: :integer
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,36 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Outline < OpenXml::Docx::Elements::Container
5
+ namespace :a
6
+ tag :ln
7
+
8
+ attribute :alignment, expects: :valid_stroke_alignment, displays_as: :algn
9
+ attribute :cap, expects: :valid_cap_type
10
+ attribute :compound_type, expects: :valid_compound_type, displays_as: :cmpd
11
+ attribute :width, expects: :positive_integer, displays_as: :w
12
+
13
+ private
14
+
15
+ def valid_stroke_alignment(value)
16
+ ok_values = %i(ctr in)
17
+ message = "Invalid stroke alignment (#{value}). Valid values are: #{ok_values.join(", ")}."
18
+ raise ArgumentError, message unless ok_values.include? value
19
+ end
20
+
21
+ def valid_cap_type(value)
22
+ ok_values = %i(flat rnd sq)
23
+ message = "Invalid line cap type (#{value}). Valid values are: #{ok_values.join(", ")}."
24
+ raise ArgumentError, message unless ok_values.include? value
25
+ end
26
+
27
+ def valid_compound_type(value)
28
+ ok_values = %i(dbl sng thickThin thinThick tri)
29
+ message = "Invalid compound line type (#{value}). Valid values are: #{ok_values.join(", ")}."
30
+ raise ArgumentError, message unless ok_values.include? value
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,10 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Picture < OpenXml::Docx::Elements::Container
5
+ namespace :pic
6
+ tag :pic
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,210 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class PresetGeometry < OpenXml::Docx::Elements::Container
5
+ namespace :a
6
+ tag :prstGeom
7
+
8
+ attribute :preset, expects: :valid_geometry_preset, displays_as: :prst
9
+
10
+ private
11
+
12
+ def valid_geometry_preset(value)
13
+ message = "Invalid preset geometry: #{value}"
14
+ raise ArgumentError, message unless ok_values.include? value
15
+ end
16
+
17
+ def ok_values
18
+ %i( accentBorderCallout1
19
+ accentBorderCallout2
20
+ accentBorderCallout3
21
+ accentCallout1
22
+ accentCallout2
23
+ accentCallout3
24
+ actionButtonBackPrevious
25
+ actionButtonBeginning
26
+ actionButtonBlank
27
+ actionButtonDocument
28
+ actionButtonEnd
29
+ actionButtonForwardNext
30
+ actionButtonHelp
31
+ actionButtonHome
32
+ actionButtonInformation
33
+ actionButtonMovie
34
+ actionButtonReturn
35
+ actionButtonSound
36
+ arc
37
+ bentArrow
38
+ bentConnector2
39
+ bentConnector3
40
+ bentConnector4
41
+ bentConnector5
42
+ bentUpArrow
43
+ bevel
44
+ blockArc
45
+ borderCallout1
46
+ borderCallout2
47
+ borderCallout3
48
+ bracePair
49
+ bracketPair
50
+ callout1
51
+ callout2
52
+ callout3
53
+ can
54
+ chartPlus
55
+ chartStar
56
+ chartX
57
+ chevron
58
+ chord
59
+ circularArrow
60
+ cloud
61
+ cloudCallout
62
+ corner
63
+ cornerTabs
64
+ cube
65
+ curvedConnector2
66
+ curvedConnector3
67
+ curvedConnector4
68
+ curvedConnector5
69
+ curvedDownArrow
70
+ curvedLeftArrow
71
+ curvedRightArrow
72
+ curvedUpArrow
73
+ decagon
74
+ diagStripe
75
+ diamond
76
+ dodecagon
77
+ donut
78
+ doubleWave
79
+ downArrow
80
+ downArrowCallout
81
+ ellipse
82
+ ellipseRibbon
83
+ ellipseRibbon2
84
+ flowChartAlternateProcess
85
+ flowChartCollate
86
+ flowChartConnector
87
+ flowChartDecision
88
+ flowChartDelay
89
+ flowChartDisplay
90
+ flowChartDocument
91
+ flowChartExtract
92
+ flowChartInputOutput
93
+ flowChartInternalStorage
94
+ flowChartMagneticDisk
95
+ flowChartMagneticDrum
96
+ flowChartMagneticTape
97
+ flowChartManualInput
98
+ flowChartManualOperation
99
+ flowChartMerge
100
+ flowChartMultidocument
101
+ flowChartOfflineStorage
102
+ flowChartOffpageConnector
103
+ flowChartOnlineStorage
104
+ flowChartOr
105
+ flowChartPredefinedProcess
106
+ flowChartPreparation
107
+ flowChartProcess
108
+ flowChartPunchedCard
109
+ flowChartPunchedTape
110
+ flowChartSort
111
+ flowChartSummingJunction
112
+ flowChartTerminator
113
+ foldedCorner
114
+ frame
115
+ funnel
116
+ gear6
117
+ gear9
118
+ halfFrame
119
+ heart
120
+ heptagon
121
+ hexagon
122
+ homePlate
123
+ horizontalScroll
124
+ irregularSeal1
125
+ irregularSeal2
126
+ leftArrow
127
+ leftArrowCallout
128
+ leftBrace
129
+ leftBracket
130
+ leftCircularArrow
131
+ leftRightArrow
132
+ leftRightArrowCallout
133
+ leftRightCircularArrow
134
+ leftRightRibbon
135
+ leftRightUpArrow
136
+ leftUpArrow
137
+ lightningBolt
138
+ line
139
+ lineInv
140
+ mathDivide
141
+ mathEqual
142
+ mathMinus
143
+ mathMultiply
144
+ mathNotEqual
145
+ mathPlus
146
+ moon
147
+ nonIsoscelesTrapazoid
148
+ noSmoking
149
+ notchedRightArrow
150
+ octagon
151
+ parallelogram
152
+ pentagon
153
+ pie
154
+ pieWedge
155
+ plaque
156
+ plaqueTabs
157
+ plus
158
+ quadArrow
159
+ quadArrowCallout
160
+ rect
161
+ ribbon
162
+ ribbon2
163
+ rightArrow
164
+ rightArrowCallout
165
+ rightBrace
166
+ rightBracket
167
+ round1Rect
168
+ round2DiagRect
169
+ round2SameRect
170
+ roundRect
171
+ rtTriangle
172
+ smileyFace
173
+ snip1Rect
174
+ snip2DiagRect
175
+ snip2SameRect
176
+ snipRoundRect
177
+ squareTabs
178
+ star10
179
+ star12
180
+ star16
181
+ star24
182
+ star32
183
+ star4
184
+ star5
185
+ star6
186
+ star7
187
+ star8
188
+ straightConnector1
189
+ stripedRightArrow
190
+ sun
191
+ swooshArrow
192
+ teardrop
193
+ trapezoid
194
+ triangle
195
+ upArrow
196
+ upArrowCallout
197
+ upDownArrow
198
+ upDownArrowCallout
199
+ uturnArrow
200
+ verticalScroll
201
+ wave
202
+ wedgeEllipseCallout
203
+ wedgeRectCallout
204
+ wedgeRoundRectCallout ) # Office Open XML spec section 20.1.10.55
205
+ end
206
+
207
+ end
208
+ end
209
+ end
210
+ end