openxml-docx 0.8.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +3 -0
  5. data/Gemfile.lock +56 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.md +67 -0
  8. data/Rakefile +6 -0
  9. data/example +23 -0
  10. data/lib/openxml-docx.rb +1 -0
  11. data/lib/openxml/docx.rb +20 -0
  12. data/lib/openxml/docx/attribute_builder.rb +298 -0
  13. data/lib/openxml/docx/elements.rb +13 -0
  14. data/lib/openxml/docx/elements/absolute_position_tab.rb +31 -0
  15. data/lib/openxml/docx/elements/bidi_embed.rb +19 -0
  16. data/lib/openxml/docx/elements/bidi_override.rb +19 -0
  17. data/lib/openxml/docx/elements/break.rb +26 -0
  18. data/lib/openxml/docx/elements/carriage_return.rb +10 -0
  19. data/lib/openxml/docx/elements/container.rb +37 -0
  20. data/lib/openxml/docx/elements/content_part.rb +10 -0
  21. data/lib/openxml/docx/elements/control.rb +12 -0
  22. data/lib/openxml/docx/elements/deleted_text.rb +10 -0
  23. data/lib/openxml/docx/elements/dirty.rb +8 -0
  24. data/lib/openxml/docx/elements/element.rb +64 -0
  25. data/lib/openxml/docx/elements/last_rendered_page_break.rb +8 -0
  26. data/lib/openxml/docx/elements/long_day.rb +10 -0
  27. data/lib/openxml/docx/elements/long_month.rb +10 -0
  28. data/lib/openxml/docx/elements/long_year.rb +10 -0
  29. data/lib/openxml/docx/elements/nonbreaking_hyphen.rb +9 -0
  30. data/lib/openxml/docx/elements/optional_hyphen.rb +10 -0
  31. data/lib/openxml/docx/elements/page_number.rb +9 -0
  32. data/lib/openxml/docx/elements/paper_source.rb +13 -0
  33. data/lib/openxml/docx/elements/paragraph.rb +58 -0
  34. data/lib/openxml/docx/elements/ruby.rb +48 -0
  35. data/lib/openxml/docx/elements/run.rb +51 -0
  36. data/lib/openxml/docx/elements/short_day.rb +10 -0
  37. data/lib/openxml/docx/elements/short_month.rb +10 -0
  38. data/lib/openxml/docx/elements/short_year.rb +10 -0
  39. data/lib/openxml/docx/elements/symbol.rb +13 -0
  40. data/lib/openxml/docx/elements/tab.rb +8 -0
  41. data/lib/openxml/docx/elements/text.rb +30 -0
  42. data/lib/openxml/docx/package.rb +34 -0
  43. data/lib/openxml/docx/parts.rb +10 -0
  44. data/lib/openxml/docx/parts/document.rb +66 -0
  45. data/lib/openxml/docx/parts/settings.rb +22 -0
  46. data/lib/openxml/docx/parts/styles.rb +50 -0
  47. data/lib/openxml/docx/properties.rb +21 -0
  48. data/lib/openxml/docx/properties/alignment.rb +14 -0
  49. data/lib/openxml/docx/properties/auto_adjust_right_indent.rb +11 -0
  50. data/lib/openxml/docx/properties/auto_space_de.rb +10 -0
  51. data/lib/openxml/docx/properties/auto_space_dn.rb +10 -0
  52. data/lib/openxml/docx/properties/base_property.rb +50 -0
  53. data/lib/openxml/docx/properties/bidi.rb +8 -0
  54. data/lib/openxml/docx/properties/bold.rb +10 -0
  55. data/lib/openxml/docx/properties/boolean_property.rb +17 -0
  56. data/lib/openxml/docx/properties/border.rb +24 -0
  57. data/lib/openxml/docx/properties/caps.rb +8 -0
  58. data/lib/openxml/docx/properties/character_spacing.rb +10 -0
  59. data/lib/openxml/docx/properties/color.rb +13 -0
  60. data/lib/openxml/docx/properties/column.rb +18 -0
  61. data/lib/openxml/docx/properties/columns.rb +15 -0
  62. data/lib/openxml/docx/properties/complex_bold.rb +10 -0
  63. data/lib/openxml/docx/properties/complex_font_size.rb +10 -0
  64. data/lib/openxml/docx/properties/complex_italics.rb +10 -0
  65. data/lib/openxml/docx/properties/complex_property.rb +19 -0
  66. data/lib/openxml/docx/properties/complex_script_formatting.rb +10 -0
  67. data/lib/openxml/docx/properties/compress_punctuation.rb +10 -0
  68. data/lib/openxml/docx/properties/conditional_formatting.rb +23 -0
  69. data/lib/openxml/docx/properties/container_property.rb +65 -0
  70. data/lib/openxml/docx/properties/contextual_spacing.rb +8 -0
  71. data/lib/openxml/docx/properties/div_id.rb +8 -0
  72. data/lib/openxml/docx/properties/document_grid.rb +22 -0
  73. data/lib/openxml/docx/properties/double_strikethrough.rb +10 -0
  74. data/lib/openxml/docx/properties/east_asian_layout.rb +22 -0
  75. data/lib/openxml/docx/properties/effect.rb +13 -0
  76. data/lib/openxml/docx/properties/emboss.rb +8 -0
  77. data/lib/openxml/docx/properties/emphasis.rb +14 -0
  78. data/lib/openxml/docx/properties/expansion.rb +20 -0
  79. data/lib/openxml/docx/properties/font.rb +34 -0
  80. data/lib/openxml/docx/properties/font_size.rb +10 -0
  81. data/lib/openxml/docx/properties/form_protection.rb +9 -0
  82. data/lib/openxml/docx/properties/frame.rb +59 -0
  83. data/lib/openxml/docx/properties/hidden_style.rb +9 -0
  84. data/lib/openxml/docx/properties/hidden_text.rb +10 -0
  85. data/lib/openxml/docx/properties/highlight.rb +13 -0
  86. data/lib/openxml/docx/properties/imprint.rb +8 -0
  87. data/lib/openxml/docx/properties/indentation.rb +18 -0
  88. data/lib/openxml/docx/properties/integer_property.rb +17 -0
  89. data/lib/openxml/docx/properties/italics.rb +10 -0
  90. data/lib/openxml/docx/properties/keep_lines.rb +8 -0
  91. data/lib/openxml/docx/properties/keep_next.rb +8 -0
  92. data/lib/openxml/docx/properties/kerning.rb +10 -0
  93. data/lib/openxml/docx/properties/kinsoku.rb +8 -0
  94. data/lib/openxml/docx/properties/language.rb +21 -0
  95. data/lib/openxml/docx/properties/latent_styles.rb +23 -0
  96. data/lib/openxml/docx/properties/latent_styles_exception.rb +21 -0
  97. data/lib/openxml/docx/properties/line_numbering.rb +23 -0
  98. data/lib/openxml/docx/properties/linked_style.rb +18 -0
  99. data/lib/openxml/docx/properties/manual_width.rb +13 -0
  100. data/lib/openxml/docx/properties/math.rb +10 -0
  101. data/lib/openxml/docx/properties/mirror_indent.rb +8 -0
  102. data/lib/openxml/docx/properties/next_style.rb +17 -0
  103. data/lib/openxml/docx/properties/no_proof.rb +8 -0
  104. data/lib/openxml/docx/properties/numbering.rb +22 -0
  105. data/lib/openxml/docx/properties/on_off_property.rb +17 -0
  106. data/lib/openxml/docx/properties/outline.rb +8 -0
  107. data/lib/openxml/docx/properties/outline_level.rb +10 -0
  108. data/lib/openxml/docx/properties/overflow_punctuation.rb +10 -0
  109. data/lib/openxml/docx/properties/page_borders.rb +61 -0
  110. data/lib/openxml/docx/properties/page_break_before.rb +8 -0
  111. data/lib/openxml/docx/properties/page_margins.rb +17 -0
  112. data/lib/openxml/docx/properties/page_numbering.rb +89 -0
  113. data/lib/openxml/docx/properties/page_size.rb +23 -0
  114. data/lib/openxml/docx/properties/paragraph_borders.rb +45 -0
  115. data/lib/openxml/docx/properties/paragraph_style.rb +10 -0
  116. data/lib/openxml/docx/properties/parent_style.rb +17 -0
  117. data/lib/openxml/docx/properties/personal.rb +8 -0
  118. data/lib/openxml/docx/properties/personal_compose.rb +8 -0
  119. data/lib/openxml/docx/properties/personal_reply.rb +8 -0
  120. data/lib/openxml/docx/properties/phonetic_guide_alignment.rb +15 -0
  121. data/lib/openxml/docx/properties/phonetic_guide_base_font_size.rb +10 -0
  122. data/lib/openxml/docx/properties/phonetic_guide_font_size.rb +10 -0
  123. data/lib/openxml/docx/properties/phonetic_guide_font_size_raise.rb +10 -0
  124. data/lib/openxml/docx/properties/phonetic_guide_language.rb +19 -0
  125. data/lib/openxml/docx/properties/position.rb +8 -0
  126. data/lib/openxml/docx/properties/positive_integer_property.rb +17 -0
  127. data/lib/openxml/docx/properties/primary_style.rb +9 -0
  128. data/lib/openxml/docx/properties/right_to_left.rb +10 -0
  129. data/lib/openxml/docx/properties/rtl_gutter.rb +8 -0
  130. data/lib/openxml/docx/properties/run_style.rb +10 -0
  131. data/lib/openxml/docx/properties/section_type.rb +15 -0
  132. data/lib/openxml/docx/properties/semi_hidden.rb +8 -0
  133. data/lib/openxml/docx/properties/shading.rb +64 -0
  134. data/lib/openxml/docx/properties/shadow.rb +8 -0
  135. data/lib/openxml/docx/properties/small_caps.rb +8 -0
  136. data/lib/openxml/docx/properties/snap_to_grid.rb +8 -0
  137. data/lib/openxml/docx/properties/spacing.rb +25 -0
  138. data/lib/openxml/docx/properties/spec_vanish.rb +8 -0
  139. data/lib/openxml/docx/properties/strikethrough.rb +10 -0
  140. data/lib/openxml/docx/properties/string_property.rb +17 -0
  141. data/lib/openxml/docx/properties/style.rb +17 -0
  142. data/lib/openxml/docx/properties/style_aliases.rb +9 -0
  143. data/lib/openxml/docx/properties/style_auto_redefinition.rb +9 -0
  144. data/lib/openxml/docx/properties/style_lock.rb +9 -0
  145. data/lib/openxml/docx/properties/style_name.rb +10 -0
  146. data/lib/openxml/docx/properties/supress_auto_hyphens.rb +8 -0
  147. data/lib/openxml/docx/properties/supress_line_numbers.rb +8 -0
  148. data/lib/openxml/docx/properties/supress_overlap.rb +8 -0
  149. data/lib/openxml/docx/properties/tab.rb +71 -0
  150. data/lib/openxml/docx/properties/tabs.rb +10 -0
  151. data/lib/openxml/docx/properties/text_alignment.rb +13 -0
  152. data/lib/openxml/docx/properties/text_direction.rb +13 -0
  153. data/lib/openxml/docx/properties/textbox_tight_wrap.rb +13 -0
  154. data/lib/openxml/docx/properties/toggle_property.rb +17 -0
  155. data/lib/openxml/docx/properties/ui_priority.rb +8 -0
  156. data/lib/openxml/docx/properties/underline.rb +24 -0
  157. data/lib/openxml/docx/properties/unhide_when_used.rb +8 -0
  158. data/lib/openxml/docx/properties/value_property.rb +31 -0
  159. data/lib/openxml/docx/properties/vertical_alignment.rb +14 -0
  160. data/lib/openxml/docx/properties/vertical_text_alignment.rb +14 -0
  161. data/lib/openxml/docx/properties/web_hidden.rb +8 -0
  162. data/lib/openxml/docx/properties/widow_control.rb +8 -0
  163. data/lib/openxml/docx/properties/word_wrap.rb +8 -0
  164. data/lib/openxml/docx/property_builder.rb +74 -0
  165. data/lib/openxml/docx/section.rb +36 -0
  166. data/lib/openxml/docx/style.rb +84 -0
  167. data/lib/openxml/docx/version.rb +5 -0
  168. data/openxml-docx.gemspec +32 -0
  169. data/spec/elements/absolute_position_tab_spec.rb +84 -0
  170. data/spec/elements/bidi_embed_spec.rb +31 -0
  171. data/spec/elements/bidi_override_spec.rb +31 -0
  172. data/spec/elements/break_spec.rb +55 -0
  173. data/spec/elements/carriage_return_spec.rb +12 -0
  174. data/spec/elements/content_part_spec.rb +18 -0
  175. data/spec/elements/control_spec.rb +41 -0
  176. data/spec/elements/deleted_text_spec.rb +24 -0
  177. data/spec/elements/dirty_spec.rb +12 -0
  178. data/spec/elements/last_rendered_page_break_spec.rb +12 -0
  179. data/spec/elements/long_day_spec.rb +12 -0
  180. data/spec/elements/long_month_spec.rb +12 -0
  181. data/spec/elements/long_year_spec.rb +12 -0
  182. data/spec/elements/nonbreaking_hyphen_spec.rb +12 -0
  183. data/spec/elements/optional_hyphen_spec.rb +12 -0
  184. data/spec/elements/page_number_spec.rb +12 -0
  185. data/spec/elements/paragraph_spec.rb +33 -0
  186. data/spec/elements/ruby_spec.rb +66 -0
  187. data/spec/elements/run_spec.rb +15 -0
  188. data/spec/elements/short_day_spec.rb +12 -0
  189. data/spec/elements/short_month_spec.rb +12 -0
  190. data/spec/elements/short_year_spec.rb +12 -0
  191. data/spec/elements/symbol_spec.rb +34 -0
  192. data/spec/elements/tab_spec.rb +12 -0
  193. data/spec/elements/text_spec.rb +24 -0
  194. data/spec/package_spec.rb +36 -0
  195. data/spec/parts/document_spec.rb +95 -0
  196. data/spec/parts/settings_spec.rb +13 -0
  197. data/spec/parts/styles_spec.rb +27 -0
  198. data/spec/properties/alignment_spec.rb +58 -0
  199. data/spec/properties/auto_adjust_right_indent_spec.rb +23 -0
  200. data/spec/properties/auto_space_de_spec.rb +23 -0
  201. data/spec/properties/auto_space_dn_spec.rb +23 -0
  202. data/spec/properties/bidi_spec.rb +23 -0
  203. data/spec/properties/bold_spec.rb +23 -0
  204. data/spec/properties/border_spec.rb +156 -0
  205. data/spec/properties/caps_spec.rb +23 -0
  206. data/spec/properties/character_spacing_spec.rb +26 -0
  207. data/spec/properties/color_spec.rb +49 -0
  208. data/spec/properties/column_spec.rb +46 -0
  209. data/spec/properties/columns_spec.rb +174 -0
  210. data/spec/properties/complex_bold_spec.rb +23 -0
  211. data/spec/properties/complex_font_size_spec.rb +24 -0
  212. data/spec/properties/complex_italics_spec.rb +23 -0
  213. data/spec/properties/complex_script_formatting_spec.rb +23 -0
  214. data/spec/properties/compress_punctuation_spec.rb +23 -0
  215. data/spec/properties/conditional_formatting_spec.rb +160 -0
  216. data/spec/properties/contextual_spacing_spec.rb +23 -0
  217. data/spec/properties/div_id_spec.rb +17 -0
  218. data/spec/properties/document_grid_spec.rb +78 -0
  219. data/spec/properties/double_strikethrough_spec.rb +23 -0
  220. data/spec/properties/east_asian_layout_spec.rb +115 -0
  221. data/spec/properties/effect_spec.rb +43 -0
  222. data/spec/properties/emboss_spec.rb +23 -0
  223. data/spec/properties/emphasis_spec.rb +37 -0
  224. data/spec/properties/expansion_spec.rb +34 -0
  225. data/spec/properties/font_size_spec.rb +24 -0
  226. data/spec/properties/font_spec.rb +273 -0
  227. data/spec/properties/form_protection_spec.rb +23 -0
  228. data/spec/properties/frame_spec.rb +338 -0
  229. data/spec/properties/hidden_style_spec.rb +23 -0
  230. data/spec/properties/hidden_text_spec.rb +23 -0
  231. data/spec/properties/highlight_spec.rb +97 -0
  232. data/spec/properties/imprint_spec.rb +23 -0
  233. data/spec/properties/indentation_spec.rb +176 -0
  234. data/spec/properties/italics_spec.rb +23 -0
  235. data/spec/properties/keep_lines_spec.rb +23 -0
  236. data/spec/properties/keep_next_spec.rb +23 -0
  237. data/spec/properties/kerning_spec.rb +24 -0
  238. data/spec/properties/kinsoku_spec.rb +23 -0
  239. data/spec/properties/language_spec.rb +29 -0
  240. data/spec/properties/latent_styles_exception_spec.rb +83 -0
  241. data/spec/properties/latent_styles_spec.rb +336 -0
  242. data/spec/properties/line_numbering_spec.rb +96 -0
  243. data/spec/properties/linked_style_spec.rb +17 -0
  244. data/spec/properties/manual_width_spec.rb +55 -0
  245. data/spec/properties/math_spec.rb +23 -0
  246. data/spec/properties/mirror_indent_spec.rb +23 -0
  247. data/spec/properties/next_style_spec.rb +17 -0
  248. data/spec/properties/no_proof_spec.rb +23 -0
  249. data/spec/properties/numbering_spec.rb +46 -0
  250. data/spec/properties/outline_level_spec.rb +20 -0
  251. data/spec/properties/outline_spec.rb +23 -0
  252. data/spec/properties/overflow_punctuation_spec.rb +23 -0
  253. data/spec/properties/page_borders_spec.rb +129 -0
  254. data/spec/properties/page_break_before_spec.rb +23 -0
  255. data/spec/properties/page_margins_spec.rb +150 -0
  256. data/spec/properties/page_numbering_spec.rb +395 -0
  257. data/spec/properties/page_size_spec.rb +90 -0
  258. data/spec/properties/paper_source_spec.rb +56 -0
  259. data/spec/properties/paragraph_borders_spec.rb +66 -0
  260. data/spec/properties/paragraph_style_spec.rb +12 -0
  261. data/spec/properties/parent_style_spec.rb +17 -0
  262. data/spec/properties/personal_compose_spec.rb +23 -0
  263. data/spec/properties/personal_reply_spec.rb +23 -0
  264. data/spec/properties/personal_spec.rb +23 -0
  265. data/spec/properties/phonetic_guide_alignment_spec.rb +42 -0
  266. data/spec/properties/phonetic_guide_base_font_size_spec.rb +25 -0
  267. data/spec/properties/phonetic_guide_font_size_raise_spec.rb +25 -0
  268. data/spec/properties/phonetic_guide_font_size_spec.rb +25 -0
  269. data/spec/properties/phonetic_guide_language_spec.rb +12 -0
  270. data/spec/properties/position_spec.rb +26 -0
  271. data/spec/properties/primary_style_spec.rb +23 -0
  272. data/spec/properties/right_to_left_spec.rb +23 -0
  273. data/spec/properties/rtl_gutter_spec.rb +23 -0
  274. data/spec/properties/run_style_spec.rb +12 -0
  275. data/spec/properties/section_type_spec.rb +33 -0
  276. data/spec/properties/semi_hidden_spec.rb +23 -0
  277. data/spec/properties/shading_spec.rb +135 -0
  278. data/spec/properties/shadow_property_spec.rb +23 -0
  279. data/spec/properties/small_caps_spec.rb +22 -0
  280. data/spec/properties/snap_to_grid_spec.rb +23 -0
  281. data/spec/properties/spacing_spec.rb +159 -0
  282. data/spec/properties/spec_vanish_spec.rb +23 -0
  283. data/spec/properties/strikethrough_spec.rb +23 -0
  284. data/spec/properties/style_aliases_spec.rb +22 -0
  285. data/spec/properties/style_auto_redefinition_spec.rb +23 -0
  286. data/spec/properties/style_lock_spec.rb +23 -0
  287. data/spec/properties/style_name_spec.rb +17 -0
  288. data/spec/properties/supress_auto_hyphens_spec.rb +23 -0
  289. data/spec/properties/supress_line_numbers_spec.rb +23 -0
  290. data/spec/properties/supress_overlap_spec.rb +23 -0
  291. data/spec/properties/tab_spec.rb +45 -0
  292. data/spec/properties/tabs_spec.rb +39 -0
  293. data/spec/properties/text_alignment_spec.rb +33 -0
  294. data/spec/properties/text_direction_spec.rb +42 -0
  295. data/spec/properties/textbox_tight_wrap_spec.rb +33 -0
  296. data/spec/properties/ui_priority_spec.rb +22 -0
  297. data/spec/properties/underline_spec.rb +161 -0
  298. data/spec/properties/unhide_when_used_spec.rb +23 -0
  299. data/spec/properties/vertical_alignment_spec.rb +26 -0
  300. data/spec/properties/vertical_text_alignment_spec.rb +28 -0
  301. data/spec/properties/web_hidden_spec.rb +23 -0
  302. data/spec/properties/widow_control_spec.rb +23 -0
  303. data/spec/properties/word_wrap_spec.rb +23 -0
  304. data/spec/section_spec.rb +44 -0
  305. data/spec/spec_helper.rb +14 -0
  306. data/spec/style_spec.rb +108 -0
  307. data/spec/support/data/elements/break_element.xml +4 -0
  308. data/spec/support/data/elements/break_with_attributes_element.xml +4 -0
  309. data/spec/support/data/elements/paragraph_element.xml +8 -0
  310. data/spec/support/data/elements/paragraph_with_runs_element.xml +14 -0
  311. data/spec/support/data/elements/run_element.xml +8 -0
  312. data/spec/support/data/elements/symbol_element.xml +4 -0
  313. data/spec/support/data/elements/text_element.xml +4 -0
  314. data/spec/support/data/parts/content_types_part.xml +1 -0
  315. data/spec/support/data/parts/document_with_children_part.xml +1 -0
  316. data/spec/support/data/parts/document_with_multiple_sections_part.xml +24 -0
  317. data/spec/support/data/parts/document_with_one_section_part.xml +16 -0
  318. data/spec/support/data/parts/empty_document_part.xml +1 -0
  319. data/spec/support/data/parts/global_rels_part.xml +1 -0
  320. data/spec/support/data/parts/rels_part.xml +1 -0
  321. data/spec/support/data/parts/settings_part.xml +1 -0
  322. data/spec/support/data/parts/styles_part.xml +1 -0
  323. data/spec/support/data/parts/styles_with_custom_style_part.xml +20 -0
  324. data/spec/support/data/styles/character_styles.xml +15 -0
  325. data/spec/support/data/styles/paragraph_styles.xml +11 -0
  326. data/spec/support/element_test_macros.rb +193 -0
  327. data/spec/support/part_test_macros.rb +27 -0
  328. data/spec/support/property_test_macros.rb +116 -0
  329. data/spec/support/style_test_macros.rb +33 -0
  330. data/spec/support/value_property_test_macros.rb +69 -0
  331. metadata +486 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c77fba73aae87283550220c6d7280217775712e1
4
+ data.tar.gz: 208f20c30d545a257a58e6a2b4faec8a585bee92
5
+ SHA512:
6
+ metadata.gz: 300b5cb3789fa19a67b760dbdc654fe1fb3f9953913f25c2722966559e7c22fbeb0072b37057cb0251cf8fa014b3b27d5cf76e8d30c8e9778b83141cd4dcfaa5
7
+ data.tar.gz: 9c9be7e6653c7fb60331a0e14be73e4d84c5fe191ac8a7db5475996c16b34132976598b38c7373d9230e94ac16f59ade2138a084d43eff3804100d14b82a9eca
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ .DS_Store
2
+ rocx-0.1.0.gem
3
+ *.gem
4
+ .rspec-local
5
+ /coverage
6
+ TODO.md
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ # .travis.yml
2
+ language: ruby
3
+ rvm:
4
+ - 2.0.0
5
+ script:
6
+ - bundle exec rake test
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,56 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ openxml-docx (0.8.0.beta1)
5
+ nokogiri
6
+ open_xml_package (= 0.1.0.beta1)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ coderay (1.0.9)
12
+ diff-lcs (1.2.5)
13
+ method_source (0.8.1)
14
+ mini_portile (0.6.2)
15
+ multi_json (1.7.2)
16
+ nokogiri (1.6.6.4)
17
+ mini_portile (~> 0.6.0)
18
+ open_xml_package (0.1.0.beta1)
19
+ nokogiri
20
+ rubyzip (~> 1.1.0)
21
+ pry (0.9.12)
22
+ coderay (~> 1.0.5)
23
+ method_source (~> 0.8)
24
+ slop (~> 3.4)
25
+ rake (10.0.4)
26
+ rr (1.1.2)
27
+ rspec (2.14.1)
28
+ rspec-core (~> 2.14.0)
29
+ rspec-expectations (~> 2.14.0)
30
+ rspec-mocks (~> 2.14.0)
31
+ rspec-core (2.14.7)
32
+ rspec-expectations (2.14.4)
33
+ diff-lcs (>= 1.1.3, < 2.0)
34
+ rspec-mocks (2.14.4)
35
+ rubyzip (1.1.7)
36
+ simplecov (0.7.1)
37
+ multi_json (~> 1.0)
38
+ simplecov-html (~> 0.7.1)
39
+ simplecov-html (0.7.1)
40
+ slop (3.4.4)
41
+ timecop (0.6.3)
42
+
43
+ PLATFORMS
44
+ ruby
45
+
46
+ DEPENDENCIES
47
+ openxml-docx!
48
+ pry
49
+ rake
50
+ rr
51
+ rspec
52
+ simplecov
53
+ timecop
54
+
55
+ BUNDLED WITH
56
+ 1.10.6
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Gene Doyel
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # OpenXml::Docx [![Code Climate](https://codeclimate.com/github/openxml/openxml-docx.png)](https://codeclimate.com/github/openxml/openxml-docx)
2
+
3
+ OpenXml::Docx is a gem for creating .docx (Office Open XML) files. It's designed to validate _before_ the document is generated, so (hopefully) any errors are caught prior to opening the file using software that can handle OOXML (like Microsoft Word, Apache Open Office, Google Docs, etc).
4
+
5
+ An example:
6
+
7
+ ```ruby
8
+ require "openxml/docx"
9
+
10
+ text = OpenXml::Docx::Elements::Text.new("Some text that I want to include in my new OOXML document")
11
+ run = OpenXml::Docx::Elements::Run.new
12
+ run.bold = true
13
+ run << text
14
+ paragraph = OpenXml::Docx::Elements::Paragraph.new
15
+ paragraph << run
16
+
17
+ document = OpenXml::Docx::Package.new
18
+ document.document << paragraph
19
+ document.save("/path/where/i/save/things/test.docx")
20
+ ```
21
+
22
+ ## Installation
23
+
24
+ You can install OpenXml::Docx by running `gem install openxml-docx`, or if you like Rails, include `gem "openxml-docx"` in your Gemfile.
25
+
26
+ ## Current features
27
+
28
+ - Paragraphs
29
+ - Runs and text
30
+ - Formatting and styles for the paragraphs, runs, and text
31
+
32
+ ## Roadmap
33
+
34
+ It's important to note that lists goes off into the future quite a bit, therefore it's very likely that it will change. That being said, this is the plan for future releases:
35
+
36
+ - 0.7.0: Sections
37
+ - 0.8.0: Increased support for styles and fonts
38
+ - 0.9.0: Images and movies
39
+ - 0.10.0: Numbering and lists
40
+ - 0.11.0: Headers and footers
41
+ - 0.12.0: Footnotes and endnotes
42
+ - 0.13.0: Glossary documents
43
+ - 0.14.0: Annotations
44
+ - 0.15.0: Increased support for document-level settings
45
+ - 0.16.0: Tables
46
+ - 0.17.0: Embedded custom markup
47
+ - 0.18.0: Fields and hyperlinks
48
+ - 0.19.0: Mail merge
49
+ - 0.20.0: Layer on a DSL for making the whole thing smoother
50
+
51
+ ## Contribute!
52
+
53
+ Want to help? Thanks, friend! Here's how:
54
+
55
+ 1. Fork it
56
+ 2. Make your changes on a topic branch
57
+ 3. Create new a pull request
58
+ 4. Receive many thank-yous
59
+
60
+ ## Changelog
61
+
62
+ - 0.6.0: Added additional run content
63
+ - 0.5.8: Added run properties
64
+ - 0.5.7: Added paragraph properties
65
+ - 0.5.0: First version with document content (i.e. paragraphs)
66
+ - 0.4.0: Rudimentary support for styles
67
+ - 0.3.0: First version supporting outputting in target format
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "rspec/core/rake_task"
2
+
3
+ RSpec::Core::RakeTask.new
4
+ task default: :spec
5
+ task test: :spec
6
+ require "bundler/gem_tasks"
data/example ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # require "rails" # workaround: openxml-package uses `extract_options!`
4
+ $:.push Dir.pwd + "/lib"
5
+ require "openxml/docx"
6
+
7
+ document = OpenXml::Docx::Package.new
8
+
9
+ include OpenXml::Docx::Elements
10
+
11
+ text = Text.new("Some text that I want to include in my new OOXML document")
12
+
13
+ run = Run.new
14
+ run << text
15
+ paragraph = Paragraph.new
16
+ paragraph << run
17
+
18
+ document.document << paragraph
19
+
20
+ filename = "gemtest1.docx"
21
+ system "rm -f ~/Desktop/#{filename}" # -f so that we don't have an error if the file doesn't exist
22
+ document.save File.expand_path("~/Desktop/#{filename}")
23
+ exec "open ~/Desktop/#{filename}"
@@ -0,0 +1 @@
1
+ require "openxml/docx"
@@ -0,0 +1,20 @@
1
+ module OpenXml
2
+ module Docx
3
+ REL_DOCUMENT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument".freeze
4
+ REL_STYLES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles".freeze
5
+ REL_SETTINGS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings".freeze
6
+
7
+ TYPE_STYLES = "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml".freeze
8
+ TYPE_SETTINGS = "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml".freeze
9
+ TYPE_XML = "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml".freeze
10
+ end
11
+ end
12
+
13
+ require "openxml/docx/attribute_builder"
14
+ require "openxml/docx/property_builder"
15
+ require "openxml/docx/properties"
16
+ require "openxml/docx/elements"
17
+ require "openxml/docx/package"
18
+ require "openxml/docx/parts"
19
+ require "openxml/docx/section"
20
+ require "openxml/docx/style"
@@ -0,0 +1,298 @@
1
+ module OpenXml
2
+ module Docx
3
+ module AttributeBuilder
4
+
5
+ VALID_THEME_COLORS = %i(accent1 accent2 accent3 accent4 accent5 accent6 background1 background2 dark1 dark2 followedHyperlink hyperlink light1 light2 none text1 text2)
6
+
7
+ VALID_TYPES = %i(apples
8
+ archedScallops
9
+ babyPacifier
10
+ babyRattle
11
+ balloons3Colors
12
+ balloonsHotAir
13
+ basicBlackDashes
14
+ basicBlackDots
15
+ basicBlackSquares
16
+ basicThinLines
17
+ basicWhiteDashes
18
+ basicWhiteDots
19
+ basicWhiteSquares
20
+ basicWideInline
21
+ basicWideMidline
22
+ basicWideOutline
23
+ bats
24
+ birds
25
+ birdsFlight
26
+ cabins
27
+ cakeSlice
28
+ candyCorn
29
+ celticKnotwork
30
+ certificateBanner
31
+ chainLink
32
+ champagneBottle
33
+ checkedBarBlack
34
+ checkedBarColor
35
+ checkered
36
+ christmasTree
37
+ circlesLines
38
+ circlesRectangles
39
+ classicalWave
40
+ clocks
41
+ compass
42
+ confetti
43
+ confettiGrays
44
+ confettiOutlines
45
+ confettiStreamers
46
+ confettiWhite
47
+ cornerTriangles
48
+ couponCutoutDashes
49
+ couponCutoutDots
50
+ crazyMaze
51
+ creaturesButterfly
52
+ creaturesFish
53
+ creaturesInsects
54
+ creaturesLadyBug
55
+ crossStitch
56
+ cup
57
+ custom
58
+ dashDotStroked
59
+ dashed
60
+ dashSmallGap
61
+ decoArch
62
+ decoArchColor
63
+ decoBlocks
64
+ diamondsGray
65
+ dotDash
66
+ dotDotDash
67
+ dotted
68
+ double
69
+ doubleD
70
+ doubleDiamonds
71
+ doubleWave
72
+ earth1
73
+ earth2
74
+ earth3
75
+ eclipsingSquares1
76
+ eclipsingSquares2
77
+ eggsBlack
78
+ fans
79
+ film
80
+ firecrackers
81
+ flowersBlockPrint
82
+ flowersDaisies
83
+ flowersModern1
84
+ flowersModern2
85
+ flowersPansy
86
+ flowersRedRose
87
+ flowersRoses
88
+ flowersTeacup
89
+ flowersTiny
90
+ gems
91
+ gingerbreadMan
92
+ gradient
93
+ handmade1
94
+ handmade2
95
+ heartBalloon
96
+ heartGray
97
+ hearts
98
+ heebieJeebies
99
+ holly
100
+ houseFunky
101
+ hypnotic
102
+ iceCreamCones
103
+ inset
104
+ lightBulb
105
+ lightning1
106
+ lightning2
107
+ mapleLeaf
108
+ mapleMuffins
109
+ mapPins
110
+ marquee
111
+ marqueeToothed
112
+ moons
113
+ mosaic
114
+ musicNotes
115
+ nil
116
+ none
117
+ northwest
118
+ outset
119
+ ovals
120
+ packages
121
+ palmsBlack
122
+ palmsColor
123
+ paperClips
124
+ papyrus
125
+ partyFavor
126
+ partyGlass
127
+ pencils
128
+ people
129
+ peopleHats
130
+ peopleWaving
131
+ poinsettias
132
+ postageStamp
133
+ pumpkin1
134
+ pushPinNote1
135
+ pushPinNote2
136
+ pyramids
137
+ pyramidsAbove
138
+ quadrants
139
+ rings
140
+ safari
141
+ sawtooth
142
+ sawtoothGray
143
+ scaredCat
144
+ seattle
145
+ shadowedSquares
146
+ shapes1
147
+ shapes2
148
+ sharksTeeth
149
+ shorebirdTracks
150
+ single
151
+ skyrocket
152
+ snowflakeFancy
153
+ snowflaskes
154
+ sombrero
155
+ southwest
156
+ stars
157
+ stars3d
158
+ starsBlack
159
+ starsShadowed
160
+ starsTop
161
+ sun
162
+ swirligig
163
+ thick
164
+ thickThinLargeGap
165
+ thickThinMediumGap
166
+ thickThinSmallGap
167
+ thinThickLargeGap
168
+ thinThickMediumGap
169
+ thinThickSmallGap
170
+ thinThickThinLargeGap
171
+ thinThickThinMediumGap
172
+ thinThickThinSmallGap
173
+ threeDEmboss
174
+ threeDEngrave
175
+ tornPaper
176
+ tornPaperBlack
177
+ trees
178
+ triangle1
179
+ triangle2
180
+ triangleCircle1
181
+ triangleCircle2
182
+ triangleParty
183
+ triangle
184
+ triple
185
+ twistedLines1
186
+ twistedLines2
187
+ vine
188
+ wave
189
+ waveline
190
+ weavingAngles
191
+ weavingBraid
192
+ weavingRibbon
193
+ weavingStrips
194
+ whiteFlowers
195
+ woodwork
196
+ xIllusions
197
+ zanyTriangles
198
+ zigZag
199
+ zigZagStitch)
200
+
201
+ def self.included(base)
202
+ base.extend(ClassMethods)
203
+ end
204
+
205
+ module ClassMethods
206
+ def attribute(name, expects: nil, displays_as: nil, namespace: nil)
207
+ bad_names = %w(tag name namespace properties_tag)
208
+ raise ArgumentError if bad_names.member? name
209
+
210
+ attr_reader name
211
+
212
+ define_method "#{name}=" do |value|
213
+ send(expects, value)
214
+ instance_variable_set "@#{name}", value
215
+ end
216
+
217
+ camelized_name = name.to_s.gsub(/_([a-z])/i) { $1.upcase }.to_sym
218
+ attributes[name] = [displays_as || camelized_name, namespace || :w]
219
+ end
220
+
221
+ def attributes
222
+ @attributes ||= {}
223
+ end
224
+ end
225
+
226
+ def render?
227
+ attributes.keys.map(&method(:send)).any?
228
+ end
229
+
230
+ def attributes
231
+ self.class.attributes
232
+ end
233
+
234
+ private
235
+
236
+ def xml_attributes
237
+ attributes.each_with_object({}) do |(name, options), attrs|
238
+ display, namespace = options
239
+ value = send(name)
240
+ attrs["#{namespace}:#{display}"] = value if value
241
+ end
242
+ end
243
+
244
+ def true_or_false(value)
245
+ message = "Invalid #{name}: frame must be true or false"
246
+ raise ArgumentError, message unless [true, false].member? value
247
+ end
248
+
249
+ def hex_color(value)
250
+ message = "Invalid #{name}: must be :auto or a hex color, e.g. 4F1B8C"
251
+ raise ArgumentError, message unless value == :auto || value =~ /[0-9A-F]{6}/
252
+ end
253
+
254
+ def hex_digit(value)
255
+ message = "Invalid #{name}: must be a two-digit hex number, e.g. BF"
256
+ raise ArgumentError, message unless value =~ /[0-9A-F]{2}/
257
+ end
258
+
259
+ def hex_digit_4(value)
260
+ message = "Invalid #{name}: must be a four-digit hex number, e.g. BF12"
261
+ raise ArgumentError, message unless value =~ /[0-9A-F]{4}/
262
+ end
263
+
264
+ def integer(value)
265
+ message = "Invalid #{name}: must be an integer"
266
+ raise ArgumentError, message unless value.is_a?(Integer)
267
+ end
268
+
269
+ def positive_integer(value)
270
+ message = "Invalid #{name}: must be a positive integer"
271
+ raise ArgumentError, message unless value.is_a?(Integer) && value >= 0
272
+ end
273
+
274
+ def string(value)
275
+ message = "Invalid #{name}: must be a string"
276
+ raise ArgumentError, message if !value.is_a?(String) || value.length.zero?
277
+ end
278
+
279
+ def on_or_off(value)
280
+ valid_in? value, [:on, :off]
281
+ end
282
+
283
+ def valid_theme_color(value)
284
+ valid_in? value, VALID_THEME_COLORS
285
+ end
286
+
287
+ def valid_type(value)
288
+ valid_in? value, VALID_TYPES
289
+ end
290
+
291
+ def valid_in?(value, list)
292
+ message = "Invalid #{name}: must be one of #{list.join(", ")} (was #{value.inspect})"
293
+ raise ArgumentError, message unless list.member?(value)
294
+ end
295
+
296
+ end
297
+ end
298
+ end