openxml-drawingml 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +8 -8
  3. data/lib/openxml/drawingml.rb +11 -0
  4. data/lib/openxml/drawingml/elements.rb +1 -1
  5. data/lib/openxml/drawingml/elements/adjust_values_list.rb +2 -2
  6. data/lib/openxml/drawingml/elements/blip.rb +3 -3
  7. data/lib/openxml/drawingml/elements/blip_fill.rb +1 -2
  8. data/lib/openxml/drawingml/elements/children_extents.rb +2 -1
  9. data/lib/openxml/drawingml/elements/children_offset.rb +2 -1
  10. data/lib/openxml/drawingml/elements/extension.rb +2 -1
  11. data/lib/openxml/drawingml/elements/extension_list.rb +2 -2
  12. data/lib/openxml/drawingml/elements/extents.rb +2 -1
  13. data/lib/openxml/drawingml/elements/fill_rectangle.rb +2 -1
  14. data/lib/openxml/drawingml/elements/graphic.rb +4 -1
  15. data/lib/openxml/drawingml/elements/graphic_data.rb +3 -1
  16. data/lib/openxml/drawingml/elements/graphic_frame_locks.rb +3 -1
  17. data/lib/openxml/drawingml/elements/head_end.rb +3 -1
  18. data/lib/openxml/drawingml/elements/line_break.rb +89 -0
  19. data/lib/openxml/drawingml/elements/no_autofit.rb +2 -2
  20. data/lib/openxml/drawingml/elements/no_fill.rb +3 -1
  21. data/lib/openxml/drawingml/elements/non_visual_drawing_properties.rb +1 -1
  22. data/lib/openxml/drawingml/elements/non_visual_picture_drawing_properties.rb +1 -2
  23. data/lib/openxml/drawingml/elements/non_visual_picture_properties.rb +1 -2
  24. data/lib/openxml/drawingml/elements/non_visual_shape_drawing_properties.rb +1 -2
  25. data/lib/openxml/drawingml/elements/offset.rb +1 -1
  26. data/lib/openxml/drawingml/elements/outline.rb +2 -2
  27. data/lib/openxml/drawingml/elements/paragraph.rb +78 -0
  28. data/lib/openxml/drawingml/elements/picture.rb +1 -2
  29. data/lib/openxml/drawingml/elements/picture_locks.rb +1 -1
  30. data/lib/openxml/drawingml/elements/picture_shape_properties.rb +1 -2
  31. data/lib/openxml/drawingml/elements/preset_geometry.rb +2 -2
  32. data/lib/openxml/drawingml/elements/preset_text_warp.rb +1 -2
  33. data/lib/openxml/drawingml/elements/round.rb +4 -1
  34. data/lib/openxml/drawingml/elements/run.rb +85 -0
  35. data/lib/openxml/drawingml/elements/shape_guide.rb +1 -1
  36. data/lib/openxml/drawingml/elements/solid_fill.rb +3 -1
  37. data/lib/openxml/drawingml/elements/source_rectangle.rb +1 -1
  38. data/lib/openxml/drawingml/elements/srgb_color.rb +2 -1
  39. data/lib/openxml/drawingml/elements/stretch.rb +2 -2
  40. data/lib/openxml/drawingml/elements/tail_end.rb +3 -1
  41. data/lib/openxml/drawingml/elements/text.rb +21 -0
  42. data/lib/openxml/drawingml/elements/theme_elements.rb +4 -1
  43. data/lib/openxml/drawingml/elements/transform_effect.rb +1 -2
  44. data/lib/openxml/drawingml/parts.rb +10 -0
  45. data/lib/openxml/drawingml/parts/theme.rb +46 -0
  46. data/lib/openxml/drawingml/properties.rb +24 -0
  47. data/lib/openxml/drawingml/properties/audio_cd.rb +16 -0
  48. data/lib/openxml/drawingml/properties/audio_cd_end.rb +13 -0
  49. data/lib/openxml/drawingml/properties/audio_cd_start.rb +13 -0
  50. data/lib/openxml/drawingml/properties/audio_cd_time_property.rb +11 -0
  51. data/lib/openxml/drawingml/properties/audio_file.rb +13 -0
  52. data/lib/openxml/drawingml/properties/autofit_none.rb +11 -0
  53. data/lib/openxml/drawingml/properties/autofit_normal.rb +14 -0
  54. data/lib/openxml/drawingml/properties/autofit_shape.rb +11 -0
  55. data/lib/openxml/drawingml/properties/background_fill_style_list.rb +14 -0
  56. data/lib/openxml/drawingml/properties/blip.rb +27 -0
  57. data/lib/openxml/drawingml/properties/body_properties.rb +81 -0
  58. data/lib/openxml/drawingml/properties/bullet_color.rb +13 -0
  59. data/lib/openxml/drawingml/properties/bullet_color_text.rb +11 -0
  60. data/lib/openxml/drawingml/properties/bullet_font.rb +13 -0
  61. data/lib/openxml/drawingml/properties/bullet_font_text.rb +11 -0
  62. data/lib/openxml/drawingml/properties/bullet_size_percent.rb +20 -0
  63. data/lib/openxml/drawingml/properties/bullet_size_points.rb +20 -0
  64. data/lib/openxml/drawingml/properties/bullet_size_text.rb +11 -0
  65. data/lib/openxml/drawingml/properties/bullet_style_auto_numbered.rb +27 -0
  66. data/lib/openxml/drawingml/properties/bullet_style_blip.rb +12 -0
  67. data/lib/openxml/drawingml/properties/bullet_style_character.rb +13 -0
  68. data/lib/openxml/drawingml/properties/bullet_style_none.rb +11 -0
  69. data/lib/openxml/drawingml/properties/child_extent.rb +13 -0
  70. data/lib/openxml/drawingml/properties/child_offset.rb +13 -0
  71. data/lib/openxml/drawingml/properties/color_component_rgb.rb +17 -0
  72. data/lib/openxml/drawingml/properties/color_container_property.rb +17 -0
  73. data/lib/openxml/drawingml/properties/color_hex_rgb.rb +20 -0
  74. data/lib/openxml/drawingml/properties/color_hsl.rb +17 -0
  75. data/lib/openxml/drawingml/properties/color_mapping.rb +31 -0
  76. data/lib/openxml/drawingml/properties/color_mapping_override.rb +16 -0
  77. data/lib/openxml/drawingml/properties/color_mapping_override_map.rb +13 -0
  78. data/lib/openxml/drawingml/properties/color_mapping_override_master.rb +11 -0
  79. data/lib/openxml/drawingml/properties/color_preset_color.rb +51 -0
  80. data/lib/openxml/drawingml/properties/color_property.rb +40 -0
  81. data/lib/openxml/drawingml/properties/color_scheme.rb +29 -0
  82. data/lib/openxml/drawingml/properties/color_scheme_accent_five.rb +13 -0
  83. data/lib/openxml/drawingml/properties/color_scheme_accent_four.rb +13 -0
  84. data/lib/openxml/drawingml/properties/color_scheme_accent_one.rb +13 -0
  85. data/lib/openxml/drawingml/properties/color_scheme_accent_six.rb +13 -0
  86. data/lib/openxml/drawingml/properties/color_scheme_accent_three.rb +13 -0
  87. data/lib/openxml/drawingml/properties/color_scheme_accent_two.rb +13 -0
  88. data/lib/openxml/drawingml/properties/color_scheme_color.rb +25 -0
  89. data/lib/openxml/drawingml/properties/color_scheme_dark_one.rb +13 -0
  90. data/lib/openxml/drawingml/properties/color_scheme_dark_two.rb +13 -0
  91. data/lib/openxml/drawingml/properties/color_scheme_followed_hyperlink.rb +13 -0
  92. data/lib/openxml/drawingml/properties/color_scheme_hyperlink.rb +13 -0
  93. data/lib/openxml/drawingml/properties/color_scheme_light_one.rb +13 -0
  94. data/lib/openxml/drawingml/properties/color_scheme_light_two.rb +13 -0
  95. data/lib/openxml/drawingml/properties/color_system_color.rb +30 -0
  96. data/lib/openxml/drawingml/properties/color_xform_alpha.rb +19 -0
  97. data/lib/openxml/drawingml/properties/color_xform_alpha_modulation.rb +11 -0
  98. data/lib/openxml/drawingml/properties/color_xform_alpha_offset.rb +19 -0
  99. data/lib/openxml/drawingml/properties/color_xform_blue.rb +11 -0
  100. data/lib/openxml/drawingml/properties/color_xform_blue_modulation.rb +11 -0
  101. data/lib/openxml/drawingml/properties/color_xform_blue_offset.rb +11 -0
  102. data/lib/openxml/drawingml/properties/color_xform_complement.rb +11 -0
  103. data/lib/openxml/drawingml/properties/color_xform_gamma.rb +11 -0
  104. data/lib/openxml/drawingml/properties/color_xform_grayscale.rb +11 -0
  105. data/lib/openxml/drawingml/properties/color_xform_green.rb +11 -0
  106. data/lib/openxml/drawingml/properties/color_xform_green_modulation.rb +11 -0
  107. data/lib/openxml/drawingml/properties/color_xform_green_offset.rb +11 -0
  108. data/lib/openxml/drawingml/properties/color_xform_hue.rb +20 -0
  109. data/lib/openxml/drawingml/properties/color_xform_hue_modulation.rb +11 -0
  110. data/lib/openxml/drawingml/properties/color_xform_hue_offset.rb +11 -0
  111. data/lib/openxml/drawingml/properties/color_xform_inverse.rb +11 -0
  112. data/lib/openxml/drawingml/properties/color_xform_inverse_gamma.rb +11 -0
  113. data/lib/openxml/drawingml/properties/color_xform_luminance.rb +11 -0
  114. data/lib/openxml/drawingml/properties/color_xform_luminance_modulation.rb +11 -0
  115. data/lib/openxml/drawingml/properties/color_xform_luminance_offset.rb +11 -0
  116. data/lib/openxml/drawingml/properties/color_xform_red.rb +11 -0
  117. data/lib/openxml/drawingml/properties/color_xform_red_modulation.rb +11 -0
  118. data/lib/openxml/drawingml/properties/color_xform_red_offset.rb +11 -0
  119. data/lib/openxml/drawingml/properties/color_xform_saturation.rb +11 -0
  120. data/lib/openxml/drawingml/properties/color_xform_saturation_modulation.rb +11 -0
  121. data/lib/openxml/drawingml/properties/color_xform_saturation_offset.rb +11 -0
  122. data/lib/openxml/drawingml/properties/color_xform_shade.rb +19 -0
  123. data/lib/openxml/drawingml/properties/color_xform_tint.rb +19 -0
  124. data/lib/openxml/drawingml/properties/complex_script_font.rb +13 -0
  125. data/lib/openxml/drawingml/properties/connection.rb +11 -0
  126. data/lib/openxml/drawingml/properties/connection_end.rb +13 -0
  127. data/lib/openxml/drawingml/properties/connection_shape_locks.rb +24 -0
  128. data/lib/openxml/drawingml/properties/connection_start.rb +13 -0
  129. data/lib/openxml/drawingml/properties/custom_color.rb +13 -0
  130. data/lib/openxml/drawingml/properties/custom_color_list.rb +14 -0
  131. data/lib/openxml/drawingml/properties/custom_dash_style.rb +14 -0
  132. data/lib/openxml/drawingml/properties/custom_geometry.rb +18 -0
  133. data/lib/openxml/drawingml/properties/dash_stop.rb +14 -0
  134. data/lib/openxml/drawingml/properties/default_paragraph_properties.rb +13 -0
  135. data/lib/openxml/drawingml/properties/default_run_properties.rb +13 -0
  136. data/lib/openxml/drawingml/properties/default_shape_properties.rb +15 -0
  137. data/lib/openxml/drawingml/properties/east_asian_font.rb +13 -0
  138. data/lib/openxml/drawingml/properties/effect_dag.rb +20 -0
  139. data/lib/openxml/drawingml/properties/effect_list.rb +17 -0
  140. data/lib/openxml/drawingml/properties/effect_reference.rb +13 -0
  141. data/lib/openxml/drawingml/properties/effect_style.rb +18 -0
  142. data/lib/openxml/drawingml/properties/effect_style_list.rb +14 -0
  143. data/lib/openxml/drawingml/properties/embedded_sound_file.rb +14 -0
  144. data/lib/openxml/drawingml/properties/extension.rb +14 -0
  145. data/lib/openxml/drawingml/properties/extension_list.rb +14 -0
  146. data/lib/openxml/drawingml/properties/extent.rb +29 -0
  147. data/lib/openxml/drawingml/properties/external_media_file.rb +15 -0
  148. data/lib/openxml/drawingml/properties/extra_color_scheme.rb +14 -0
  149. data/lib/openxml/drawingml/properties/extra_color_scheme_list.rb +14 -0
  150. data/lib/openxml/drawingml/properties/fill_blip.rb +22 -0
  151. data/lib/openxml/drawingml/properties/fill_gradient.rb +24 -0
  152. data/lib/openxml/drawingml/properties/fill_group.rb +11 -0
  153. data/lib/openxml/drawingml/properties/fill_none.rb +11 -0
  154. data/lib/openxml/drawingml/properties/fill_pattern.rb +23 -0
  155. data/lib/openxml/drawingml/properties/fill_rectangle.rb +13 -0
  156. data/lib/openxml/drawingml/properties/fill_reference.rb +13 -0
  157. data/lib/openxml/drawingml/properties/fill_solid.rb +13 -0
  158. data/lib/openxml/drawingml/properties/fill_style_list.rb +19 -0
  159. data/lib/openxml/drawingml/properties/fill_to_rectangle.rb +13 -0
  160. data/lib/openxml/drawingml/properties/flat_text.rb +39 -0
  161. data/lib/openxml/drawingml/properties/font_collection_property.rb +16 -0
  162. data/lib/openxml/drawingml/properties/font_property.rb +29 -0
  163. data/lib/openxml/drawingml/properties/font_reference.rb +13 -0
  164. data/lib/openxml/drawingml/properties/font_scheme.rb +18 -0
  165. data/lib/openxml/drawingml/properties/format_scheme.rb +19 -0
  166. data/lib/openxml/drawingml/properties/geometry_guide.rb +14 -0
  167. data/lib/openxml/drawingml/properties/geometry_guide_list.rb +14 -0
  168. data/lib/openxml/drawingml/properties/gradient_line.rb +14 -0
  169. data/lib/openxml/drawingml/properties/gradient_path.rb +16 -0
  170. data/lib/openxml/drawingml/properties/gradient_stop.rb +13 -0
  171. data/lib/openxml/drawingml/properties/gradient_stop_list.rb +14 -0
  172. data/lib/openxml/drawingml/properties/graphic.rb +13 -0
  173. data/lib/openxml/drawingml/properties/graphic_data.rb +14 -0
  174. data/lib/openxml/drawingml/properties/graphic_frame_locks.rb +20 -0
  175. data/lib/openxml/drawingml/properties/group_shape_locks.rb +22 -0
  176. data/lib/openxml/drawingml/properties/group_transform.rb +16 -0
  177. data/lib/openxml/drawingml/properties/head_end.rb +13 -0
  178. data/lib/openxml/drawingml/properties/highlight.rb +13 -0
  179. data/lib/openxml/drawingml/properties/hyperlink_click.rb +13 -0
  180. data/lib/openxml/drawingml/properties/hyperlink_hover.rb +13 -0
  181. data/lib/openxml/drawingml/properties/hyperlink_mouse_over.rb +13 -0
  182. data/lib/openxml/drawingml/properties/hyperlink_property.rb +22 -0
  183. data/lib/openxml/drawingml/properties/integer_property.rb +12 -0
  184. data/lib/openxml/drawingml/properties/latin_font.rb +13 -0
  185. data/lib/openxml/drawingml/properties/level1_paragraph_properties.rb +13 -0
  186. data/lib/openxml/drawingml/properties/level2_paragraph_properties.rb +13 -0
  187. data/lib/openxml/drawingml/properties/level3_paragraph_properties.rb +13 -0
  188. data/lib/openxml/drawingml/properties/level4_paragraph_properties.rb +13 -0
  189. data/lib/openxml/drawingml/properties/level5_paragraph_properties.rb +13 -0
  190. data/lib/openxml/drawingml/properties/level6_paragraph_properties.rb +13 -0
  191. data/lib/openxml/drawingml/properties/level7_paragraph_properties.rb +13 -0
  192. data/lib/openxml/drawingml/properties/level8_paragraph_properties.rb +13 -0
  193. data/lib/openxml/drawingml/properties/level9_paragraph_properties.rb +13 -0
  194. data/lib/openxml/drawingml/properties/line_default.rb +13 -0
  195. data/lib/openxml/drawingml/properties/line_end_properties.rb +12 -0
  196. data/lib/openxml/drawingml/properties/line_join_bevel.rb +11 -0
  197. data/lib/openxml/drawingml/properties/line_join_miter.rb +31 -0
  198. data/lib/openxml/drawingml/properties/line_join_round.rb +11 -0
  199. data/lib/openxml/drawingml/properties/line_property.rb +43 -0
  200. data/lib/openxml/drawingml/properties/line_spacing.rb +16 -0
  201. data/lib/openxml/drawingml/properties/line_style_list.rb +14 -0
  202. data/lib/openxml/drawingml/properties/list_style.rb +24 -0
  203. data/lib/openxml/drawingml/properties/major_font.rb +13 -0
  204. data/lib/openxml/drawingml/properties/minor_font.rb +13 -0
  205. data/lib/openxml/drawingml/properties/object_defaults.rb +17 -0
  206. data/lib/openxml/drawingml/properties/offset.rb +29 -0
  207. data/lib/openxml/drawingml/properties/outline.rb +13 -0
  208. data/lib/openxml/drawingml/properties/outline_reference.rb +13 -0
  209. data/lib/openxml/drawingml/properties/paragraph_properties.rb +78 -0
  210. data/lib/openxml/drawingml/properties/path.rb +49 -0
  211. data/lib/openxml/drawingml/properties/path_list.rb +14 -0
  212. data/lib/openxml/drawingml/properties/percentage_property.rb +17 -0
  213. data/lib/openxml/drawingml/properties/picture_locks.rb +25 -0
  214. data/lib/openxml/drawingml/properties/positive_integer_property.rb +12 -0
  215. data/lib/openxml/drawingml/properties/positive_percentage_property.rb +17 -0
  216. data/lib/openxml/drawingml/properties/preset_dash_style.rb +16 -0
  217. data/lib/openxml/drawingml/properties/preset_geometry.rb +59 -0
  218. data/lib/openxml/drawingml/properties/preset_text_warp.rb +25 -0
  219. data/lib/openxml/drawingml/properties/quick_time_file.rb +17 -0
  220. data/lib/openxml/drawingml/properties/relative_rectangle_property.rb +13 -0
  221. data/lib/openxml/drawingml/properties/right_to_left.rb +11 -0
  222. data/lib/openxml/drawingml/properties/run_properties.rb +93 -0
  223. data/lib/openxml/drawingml/properties/scene_3d.rb +17 -0
  224. data/lib/openxml/drawingml/properties/shape_adjustment_list.rb +14 -0
  225. data/lib/openxml/drawingml/properties/shape_default.rb +13 -0
  226. data/lib/openxml/drawingml/properties/shape_locks.rb +25 -0
  227. data/lib/openxml/drawingml/properties/shape_properties.rb +46 -0
  228. data/lib/openxml/drawingml/properties/shape_style.rb +16 -0
  229. data/lib/openxml/drawingml/properties/simple_boolean_property.rb +16 -0
  230. data/lib/openxml/drawingml/properties/simple_property_container_property.rb +14 -0
  231. data/lib/openxml/drawingml/properties/source_rectangle.rb +13 -0
  232. data/lib/openxml/drawingml/properties/space_after.rb +22 -0
  233. data/lib/openxml/drawingml/properties/space_before.rb +22 -0
  234. data/lib/openxml/drawingml/properties/spacing_percent.rb +11 -0
  235. data/lib/openxml/drawingml/properties/spacing_points.rb +20 -0
  236. data/lib/openxml/drawingml/properties/stretch.rb +13 -0
  237. data/lib/openxml/drawingml/properties/style_matrix_reference_property.rb +20 -0
  238. data/lib/openxml/drawingml/properties/supplemental_font.rb +14 -0
  239. data/lib/openxml/drawingml/properties/symbol_font.rb +13 -0
  240. data/lib/openxml/drawingml/properties/tab_list.rb +14 -0
  241. data/lib/openxml/drawingml/properties/tab_stop.rb +29 -0
  242. data/lib/openxml/drawingml/properties/tail_end.rb +13 -0
  243. data/lib/openxml/drawingml/properties/text_body.rb +15 -0
  244. data/lib/openxml/drawingml/properties/text_default.rb +13 -0
  245. data/lib/openxml/drawingml/properties/theme_elements.rb +16 -0
  246. data/lib/openxml/drawingml/properties/tile.rb +35 -0
  247. data/lib/openxml/drawingml/properties/tile_rectangle.rb +13 -0
  248. data/lib/openxml/drawingml/properties/transform.rb +19 -0
  249. data/lib/openxml/drawingml/properties/underline.rb +13 -0
  250. data/lib/openxml/drawingml/properties/underline_fill.rb +20 -0
  251. data/lib/openxml/drawingml/properties/underline_fill_text.rb +11 -0
  252. data/lib/openxml/drawingml/properties/underline_text.rb +11 -0
  253. data/lib/openxml/drawingml/properties/value_property.rb +12 -0
  254. data/lib/openxml/drawingml/properties/video_file.rb +13 -0
  255. data/lib/openxml/drawingml/properties/wav_audio_file.rb +13 -0
  256. data/lib/openxml/drawingml/version.rb +1 -1
  257. data/openxml-drawingml.gemspec +3 -3
  258. metadata +222 -5
  259. data/lib/openxml/drawingml/element.rb +0 -9
@@ -1,9 +1,8 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class Picture < OpenXml::DrawingML::Element
4
+ class Picture < OpenXml::Element
5
5
  include HasChildren
6
-
7
6
  namespace :pic
8
7
  tag :pic
9
8
 
@@ -1,7 +1,7 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class PictureLocks < OpenXml::DrawingML::Element
4
+ class PictureLocks < OpenXml::Element
5
5
  namespace :a
6
6
  tag :picLocks
7
7
 
@@ -1,9 +1,8 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class PictureShapeProperties < OpenXml::DrawingML::Element
4
+ class PictureShapeProperties < OpenXml::Element
5
5
  include HasChildren
6
-
7
6
  namespace :pic
8
7
  tag :spPr
9
8
 
@@ -1,9 +1,9 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class PresetGeometry < OpenXml::DrawingML::Element
4
+ class PresetGeometry < OpenXml::Element
5
5
  include HasChildren
6
-
6
+ namespace :a
7
7
  tag :prstGeom
8
8
 
9
9
  attribute :preset, expects: :valid_geometry_preset, displays_as: :prst
@@ -1,9 +1,8 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class PresetTextWarp < OpenXml::DrawingML::Element
4
+ class PresetTextWarp < OpenXml::Element
5
5
  include HasChildren
6
-
7
6
  namespace :a
8
7
  tag :prstTxWarp
9
8
 
@@ -1,7 +1,10 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class Round < OpenXml::DrawingML::Element
4
+ class Round < OpenXml::Element
5
+ namespace :a
6
+ tag :round
7
+
5
8
  end
6
9
  end
7
10
  end
@@ -0,0 +1,85 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Run < OpenXml::Element
5
+ include HasChildren, HasProperties
6
+ namespace :a
7
+ tag :r
8
+
9
+ UNDERLINE_STYLES = %i{
10
+ dash dashHeavy dashLong dashLongHeavy dbl dotDash dotDashHeavy
11
+ dotDotDash dotDotDashHeavy dotted dottedHeavy heavy none sng wavy
12
+ wavyDbl wavyHeavy words
13
+ }.freeze
14
+
15
+ # Validations
16
+ point = lambda { |value|
17
+ valid_point = value.is_a?(Integer) && (-400_000..400_000).covers?(value)
18
+ valid_measure = value =~ /-?[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)/
19
+ raise ArgumentError unless valid_point || valid_measure
20
+ }
21
+
22
+ properties_attribute :alternative_language, displays_as: :altLang, expects: :string
23
+ properties_attribute :bold, displays_as: :b, expects: :boolean
24
+ properties_attribute :baseline, expects: :percentage
25
+ properties_attribute :bookmark_target, displays_as: :bmk, expects: :string
26
+ properties_attribute :capitalization, displays_as: :cap, one_of: %i{ all none small }
27
+ properties_attribute :dirty, expects: :boolean
28
+ properties_attribute :spelling_error, displays_as: :err, expects: :boolean
29
+ properties_attribute :italic, displays_as: :i, expects: :boolean
30
+ properties_attribute :kerning, displays_as: :kern, expects: :integer, in_range: (0..400_000)
31
+ properties_attribute :kumimoji, expects: :boolean
32
+ properties_attribute :language, displays_as: :lang, expects: :string
33
+ properties_attribute :no_proofing, displays_as: :noProof, expects: :boolean
34
+ properties_attribute :normalize_heights, displays_as: :normalizeH, expects: :boolean
35
+ properties_attribute :smart_tag_clean, displays_as: :smtClean, expects: :boolean
36
+ properties_attribute :smart_tag_id, displays_as: :smtId, expects: :positive_integer
37
+ properties_attribute :spacing, displays_as: :spc, validation: point
38
+ properties_attribute :strikethrough, displays_as: :strike, one_of: %i{ dblStrike noStrike sngStrike }
39
+ properties_attribute :font_size, displays_as: :sz, expects: :integer, in_range: (100..400_000)
40
+ properties_attribute :underline, displays_as: :u, one_of: UNDERLINE_STYLES
41
+
42
+ property :outline
43
+
44
+ property_choice do
45
+ value_property :no_fill, as: :fill_none
46
+ property :solid_fill, as: :fill_solid
47
+ property :gradient_fill, as: :fill_gradient
48
+ property :pattern_fill, as: :fill_pattern
49
+ property :blip_fill, as: :fill_blip
50
+ value_property :inherit_group_fill, as: :fill_group
51
+ end
52
+
53
+ property_choice do
54
+ property :effect_list
55
+ property :effect_dag
56
+ end
57
+
58
+ property :highlight
59
+
60
+ property_choice do
61
+ value_property :underline_inherits, as: :underline_text
62
+ property :underline
63
+ end
64
+
65
+ property_choice do
66
+ value_property :underline_fill_inherits, as: :underline_fill_text
67
+ property :underline_fill
68
+ end
69
+
70
+ value_property :latin_font
71
+ value_property :east_asian_font
72
+ value_property :complex_script_font
73
+ value_property :symbol_font
74
+
75
+ property :hyperlink_click
76
+ property :hyperlink_mouse_over
77
+
78
+ value_property :right_to_left
79
+
80
+ property :extension_list
81
+
82
+ end
83
+ end
84
+ end
85
+ end
@@ -1,7 +1,7 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class ShapeGuide < OpenXml::DrawingML::Element
4
+ class ShapeGuide < OpenXml::Element
5
5
  namespace :a
6
6
  tag :gd
7
7
 
@@ -1,8 +1,10 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class SolidFill < OpenXml::DrawingML::Element
4
+ class SolidFill < OpenXml::Element
5
5
  include HasChildren
6
+ namespace :a
7
+ tag :solidFill
6
8
 
7
9
  end
8
10
  end
@@ -1,7 +1,7 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class SourceRectangle < OpenXml::DrawingML::Element
4
+ class SourceRectangle < OpenXml::Element
5
5
  namespace :a
6
6
  tag :srcRect
7
7
 
@@ -1,7 +1,8 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class SRGBColor < OpenXml::DrawingML::Element
4
+ class SRGBColor < OpenXml::Element
5
+ namespace :a
5
6
  tag :srgbClr
6
7
  name "srgb_color"
7
8
 
@@ -1,10 +1,10 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class Stretch < OpenXml::DrawingML::Element
4
+ class Stretch < OpenXml::Element
5
5
  include HasChildren
6
-
7
6
  namespace :a
7
+ tag :stretch
8
8
 
9
9
  end
10
10
  end
@@ -1,7 +1,9 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class TailEnd < OpenXml::DrawingML::Element
4
+ class TailEnd < OpenXml::Element
5
+ namespace :a
6
+ tag :tailEnd
5
7
 
6
8
  attribute :length, expects: :valid_end_size, displays_as: :len
7
9
  attribute :type, expects: :valid_end_type
@@ -0,0 +1,21 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Elements
4
+ class Text < OpenXml::Element
5
+ namespace :a
6
+ tag :t
7
+
8
+ attr_accessor :text
9
+
10
+ def initialize(text)
11
+ self.text = text
12
+ end
13
+
14
+ def to_xml(xml)
15
+ xml[namespace].public_send(tag, text, xml_attributes)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,8 +1,11 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class ThemeElements < OpenXml::DrawingML::Element
4
+ class ThemeElements < OpenXml::Element
5
5
  include HasChildren
6
+ namespace :a
7
+ tag :themeElements
8
+
6
9
  end
7
10
  end
8
11
  end
@@ -1,9 +1,8 @@
1
1
  module OpenXml
2
2
  module DrawingML
3
3
  module Elements
4
- class TransformEffect < OpenXml::DrawingML::Element
4
+ class TransformEffect < OpenXml::Element
5
5
  include HasChildren
6
-
7
6
  namespace :a
8
7
  tag :xfrm
9
8
 
@@ -0,0 +1,10 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Parts
4
+ end
5
+ end
6
+ end
7
+
8
+ Dir.glob("#{File.join(File.dirname(__FILE__), "parts", "*.rb")}").each do |file|
9
+ require file
10
+ end
@@ -0,0 +1,46 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Parts
4
+ class Theme < OpenXml::Part
5
+ include OpenXml::ContainsProperties
6
+ attr_reader :relationships
7
+ attr_reader :theme_name
8
+
9
+ property :theme_elements, required: true
10
+ property :object_defaults
11
+ property :extra_color_scheme_list
12
+ property :custom_color_list
13
+
14
+ property :extension_list
15
+
16
+ def initialize
17
+ @relationships = OpenXml::Parts::Rels.new
18
+ end
19
+
20
+ def theme_name=(value)
21
+ raise ArgumentError, "Theme name must be a string" unless value.is_a?(String)
22
+ @theme_name = value
23
+ end
24
+
25
+ def to_xml
26
+ build_standalone_xml do |xml|
27
+ xml[:a].theme(NAMESPACE_DEFINITION.merge(xml_attributes)) do
28
+ property_xml(xml)
29
+ end
30
+ end
31
+ end
32
+
33
+ NAMESPACE_DEFINITION = {
34
+ "xmlns:a" => "http://schemas.openxmlformats.org/drawingml/2006/main"
35
+ }.freeze
36
+
37
+ private
38
+
39
+ def xml_attributes
40
+ { name: theme_name }
41
+ end
42
+
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,24 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ end
5
+ end
6
+ end
7
+
8
+ require "openxml/properties"
9
+ require "openxml/has_properties"
10
+ require "openxml/has_children"
11
+ require "openxml/has_attributes"
12
+ require "openxml/contains_properties"
13
+
14
+ require "openxml/drawingml/properties/value_property"
15
+ require "openxml/drawingml/properties/integer_property"
16
+ require "openxml/drawingml/properties/positive_integer_property"
17
+ require "openxml/drawingml/properties/percentage_property"
18
+ require "openxml/drawingml/properties/positive_percentage_property"
19
+ require "openxml/drawingml/properties/simple_boolean_property"
20
+ require "openxml/drawingml/properties/simple_property_container_property"
21
+
22
+ Dir.glob("#{File.join(File.dirname(__FILE__), "properties", "*.rb")}").each do |file|
23
+ require file
24
+ end
@@ -0,0 +1,16 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class AudioCd < SimplePropertyContainerProperty
5
+ namespace :a
6
+ tag :audioCd
7
+
8
+ property :start, as: :audio_cd_start, required: true
9
+ property :end, as: :audio_cd_end, required: true
10
+
11
+ property :extension_list
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/audio_cd_time_property"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class AudioCdEnd < AudioCdTimeProperty
7
+ namespace :a
8
+ tag :end
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/audio_cd_time_property"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class AudioCdStart < AudioCdTimeProperty
7
+ namespace :a
8
+ tag :st
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class AudioCdTimeProperty < OpenXml::Properties::ComplexProperty
5
+ attribute :track, expects: :integer, in_range: (0..255), required: true
6
+ attribute :time, expects: :positive_integer
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/external_media_file"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class AudioFile < ExternalMediaFile
7
+ namespace :a
8
+ tag :audioFile
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class AutofitNone < SimpleBooleanProperty
5
+ namespace :a
6
+ tag :noAutofit
7
+
8
+ end
9
+ end
10
+ end
11
+ end