openxml-docx 0.8.0.beta1

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 (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
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Docx::Properties::Bold do
4
+ include ValuePropertyTestMacros
5
+
6
+ it_should_use tag: :b, name: "bold"
7
+
8
+ with_value(true) do
9
+ it_should_work
10
+ it_should_output "<w:b/>"
11
+ end
12
+
13
+ with_value(false) do
14
+ it_should_work
15
+ it_should_output ""
16
+ end
17
+
18
+ with_value(nil) do
19
+ it_should_work
20
+ it_should_output ""
21
+ end
22
+
23
+ end
@@ -0,0 +1,156 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Docx::Properties::Border do
4
+ include PropertyTestMacros
5
+
6
+ context "always" do
7
+ before(:each) do
8
+ @instance = described_class.new(:left)
9
+ end
10
+
11
+ it "should have the right name" do
12
+ expect(instance.name).to eq("border")
13
+ end
14
+
15
+ it "should have its tag be equal to the argument passed on initialize" do
16
+ expect(instance.tag).to eq(:left)
17
+ end
18
+ end
19
+
20
+ context "when no tag is specified" do
21
+ before(:each) do
22
+ @instance = described_class.new
23
+ instance.color = "FF00FF"
24
+ instance.type = :crazyMaze
25
+ end
26
+
27
+ it "should have its tag be :bdr" do
28
+ expect(instance.tag).to eq(:bdr)
29
+ end
30
+
31
+ it_should_output "<w:bdr w:color=\"FF00FF\" w:val=\"crazyMaze\"/>", assign: false
32
+ end
33
+
34
+ for_attribute(:color) do
35
+ with_value("4F81BD") do
36
+ it_should_assign_successfully
37
+ it_should_output "<w:bdr w:color=\"4F81BD\"/>"
38
+ end
39
+
40
+ with_value(:auto) do
41
+ it_should_assign_successfully
42
+ it_should_output "<w:bdr w:color=\"auto\"/>"
43
+ end
44
+
45
+ with_value(:green) do
46
+ it_should_raise_an_exception
47
+ end
48
+ end
49
+
50
+ for_attribute(:frame) do
51
+ with_value(true) do
52
+ it_should_assign_successfully
53
+ it_should_output "<w:bdr w:frame=\"true\"/>"
54
+ end
55
+
56
+ with_value(false) do
57
+ it_should_assign_successfully
58
+ it_should_output ""
59
+ end
60
+
61
+ with_value(:yep) do
62
+ it_should_raise_an_exception
63
+ end
64
+ end
65
+
66
+ for_attribute(:shadow) do
67
+ with_value(true) do
68
+ it_should_assign_successfully
69
+ it_should_output "<w:bdr w:shadow=\"true\"/>"
70
+ end
71
+
72
+ with_value(false) do
73
+ it_should_assign_successfully
74
+ it_should_output ""
75
+ end
76
+
77
+ with_value(:yep) do
78
+ it_should_raise_an_exception
79
+ end
80
+ end
81
+
82
+ for_attribute(:size) do
83
+ with_value(24) do
84
+ it_should_assign_successfully
85
+ it_should_output "<w:bdr w:sz=\"24\"/>"
86
+ end
87
+
88
+ with_value(-24) do
89
+ it_should_raise_an_exception
90
+ end
91
+
92
+ with_value(:big) do
93
+ it_should_raise_an_exception
94
+ end
95
+ end
96
+
97
+ for_attribute(:space) do
98
+ with_value(24) do
99
+ it_should_assign_successfully
100
+ it_should_output "<w:bdr w:space=\"24\"/>"
101
+ end
102
+
103
+ with_value(-24) do
104
+ it_should_raise_an_exception
105
+ end
106
+
107
+ with_value(:big) do
108
+ it_should_raise_an_exception
109
+ end
110
+ end
111
+
112
+ for_attribute(:theme_color) do
113
+ with_value(:hyperlink) do
114
+ it_should_assign_successfully
115
+ it_should_output "<w:bdr w:themeColor=\"hyperlink\"/>"
116
+ end
117
+
118
+ with_value(:lens_flare) do
119
+ it_should_raise_an_exception
120
+ end
121
+ end
122
+
123
+ for_attribute(:theme_shade) do
124
+ with_value("BF") do
125
+ it_should_assign_successfully
126
+ it_should_output "<w:bdr w:themeShade=\"BF\"/>"
127
+ end
128
+
129
+ with_value(:dark) do
130
+ it_should_raise_an_exception
131
+ end
132
+ end
133
+
134
+ for_attribute(:theme_tint) do
135
+ with_value("BF") do
136
+ it_should_assign_successfully
137
+ it_should_output "<w:bdr w:themeTint=\"BF\"/>"
138
+ end
139
+
140
+ with_value(:pink) do
141
+ it_should_raise_an_exception
142
+ end
143
+ end
144
+
145
+ for_attribute(:type) do
146
+ with_value(:single) do
147
+ it_should_assign_successfully
148
+ it_should_output "<w:bdr w:val=\"single\"/>"
149
+ end
150
+
151
+ with_value(:programmers) do
152
+ it_should_raise_an_exception
153
+ end
154
+ end
155
+
156
+ end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Docx::Properties::Caps do
4
+ include ValuePropertyTestMacros
5
+
6
+ it_should_use tag: :caps, name: "caps"
7
+
8
+ with_value(true) do
9
+ it_should_work
10
+ it_should_output "<w:caps/>"
11
+ end
12
+
13
+ with_value(false) do
14
+ it_should_work
15
+ it_should_output ""
16
+ end
17
+
18
+ with_value(nil) do
19
+ it_should_work
20
+ it_should_output ""
21
+ end
22
+
23
+ end
@@ -0,0 +1,26 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Docx::Properties::CharacterSpacing do
4
+ include ValuePropertyTestMacros
5
+
6
+ it_should_use tag: :spacing, name: "character_spacing", value: 1
7
+
8
+ with_value(400) do
9
+ it_should_work
10
+ it_should_output "<w:spacing w:val=\"400\"/>"
11
+ end
12
+
13
+ with_value(-230) do
14
+ it_should_work
15
+ it_should_output "<w:spacing w:val=\"-230\"/>"
16
+ end
17
+
18
+ with_value(4.2) do
19
+ it_should_not_work
20
+ end
21
+
22
+ with_value(:twelve) do
23
+ it_should_not_work
24
+ end
25
+
26
+ end
@@ -0,0 +1,49 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Docx::Properties::Color do
4
+ include PropertyTestMacros
5
+
6
+ it_should_use tag: :color, name: "color"
7
+
8
+ for_attribute(:theme_color) do
9
+ with_value(:hyperlink) do
10
+ it_should_assign_successfully
11
+ it_should_output "<w:color w:themeColor=\"hyperlink\"/>"
12
+ end
13
+ end
14
+
15
+ for_attribute(:theme_shade) do
16
+ with_value("BF") do
17
+ it_should_assign_successfully
18
+ it_should_output "<w:color w:themeShade=\"BF\"/>"
19
+ end
20
+
21
+ with_value(:dark) do
22
+ it_should_raise_an_exception
23
+ end
24
+ end
25
+
26
+ for_attribute(:theme_tint) do
27
+ with_value("BF") do
28
+ it_should_assign_successfully
29
+ it_should_output "<w:color w:themeTint=\"BF\"/>"
30
+ end
31
+
32
+ with_value(:pink) do
33
+ it_should_raise_an_exception
34
+ end
35
+ end
36
+
37
+ for_attribute(:color) do
38
+ with_value(:D99694) do
39
+ it_should_assign_successfully
40
+ it_should_output "<w:color w:val=\"D99694\"/>"
41
+ end
42
+
43
+ with_value(:auto) do
44
+ it_should_assign_successfully
45
+ it_should_output "<w:color w:val=\"auto\"/>"
46
+ end
47
+ end
48
+
49
+ end
@@ -0,0 +1,46 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Docx::Properties::Column do
4
+ include PropertyTestMacros
5
+
6
+ it_should_use tag: :col, name: "column", value: [1, 1]
7
+
8
+ for_attribute(:space) do
9
+ with_value(2) do
10
+ it_should_assign_successfully 1, 1
11
+ it_should_output "<w:col w:space=\"2\" w:w=\"1\"/>", 1, 1
12
+ end
13
+
14
+ with_value(-1) do
15
+ it_should_raise_an_exception
16
+ end
17
+
18
+ with_value(12.1) do
19
+ it_should_raise_an_exception
20
+ end
21
+
22
+ with_value(:big) do
23
+ it_should_raise_an_exception
24
+ end
25
+ end
26
+
27
+ for_attribute(:width) do
28
+ with_value(2) do
29
+ it_should_assign_successfully 1, 1
30
+ it_should_output "<w:col w:space=\"1\" w:w=\"2\"/>", 1, 1
31
+ end
32
+
33
+ with_value(-1) do
34
+ it_should_raise_an_exception
35
+ end
36
+
37
+ with_value(12.1) do
38
+ it_should_raise_an_exception
39
+ end
40
+
41
+ with_value(:big) do
42
+ it_should_raise_an_exception
43
+ end
44
+ end
45
+
46
+ end
@@ -0,0 +1,174 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Docx::Properties::Columns do
4
+ include PropertyTestMacros
5
+
6
+ it_should_use tag: :cols, name: "columns"
7
+
8
+ context "when trying to add columns, it" do
9
+ before(:each) do
10
+ @instance = described_class.new
11
+ end
12
+
13
+ it "should raise an exception if the column to be added isn't a column at all" do
14
+ expect { instance << [] }.to raise_error(ArgumentError)
15
+ end
16
+ end
17
+
18
+ context "when there are no columns" do
19
+ before(:each) do
20
+ @instance = described_class.new
21
+ end
22
+
23
+ it "should not output any XML" do
24
+ expect(xml(instance)).to eq("")
25
+ end
26
+ end
27
+
28
+ context "when there are columns" do
29
+ before(:each) do
30
+ @instance = described_class.new
31
+ instance << OpenXml::Docx::Properties::Column.new(1234, 5678)
32
+ instance << OpenXml::Docx::Properties::Column.new(8765, 4321)
33
+ end
34
+
35
+ it "should output the correct XML" do
36
+ expect(xml(instance)).to eq("<w:cols>\n <w:col w:space=\"1234\" w:w=\"5678\"/>\n <w:col w:space=\"8765\" w:w=\"4321\"/>\n </w:cols>")
37
+ end
38
+ end
39
+
40
+ for_attribute(:equal_width) do
41
+ before(:each) do
42
+ @instance = described_class.new
43
+ @instance << OpenXml::Docx::Properties::Column.new(1, 1)
44
+ end
45
+
46
+ context "when the value is true" do
47
+ before(:each) do
48
+ @value = true
49
+ end
50
+
51
+ it "should accept the value" do
52
+ expect { instance.send("#{attribute}=", value) }.to_not raise_error
53
+ end
54
+
55
+ it "should output the correct value" do
56
+ instance.send("#{attribute}=", value)
57
+ expect(xml(instance)).to eq("<w:cols w:equalWidth=\"true\">\n <w:col w:space=\"1\" w:w=\"1\"/>\n </w:cols>")
58
+ end
59
+ end
60
+
61
+ for_attribute(:number) do
62
+ before(:each) do
63
+ @instance = described_class.new
64
+ @instance << OpenXml::Docx::Properties::Column.new(1, 1)
65
+ end
66
+
67
+ context "when the value is 1" do
68
+ before(:each) do
69
+ @value = 1
70
+ end
71
+
72
+ it "should accept the value" do
73
+ expect { instance.send("#{attribute}=", value) }.to_not raise_error
74
+ end
75
+
76
+ it "should output the correct value" do
77
+ instance.send("#{attribute}=", value)
78
+ expect(xml(instance)).to eq("<w:cols w:num=\"1\">\n <w:col w:space=\"1\" w:w=\"1\"/>\n </w:cols>")
79
+ end
80
+ end
81
+
82
+ context "when the value is -1" do
83
+ before(:each) do
84
+ @value = -1
85
+ end
86
+
87
+ it "should accept the value" do
88
+ expect { instance.send("#{attribute}=", value) }.to_not raise_error
89
+ end
90
+
91
+ it "should output the correct value" do
92
+ instance.send("#{attribute}=", value)
93
+ expect(xml(instance)).to eq("<w:cols w:num=\"-1\">\n <w:col w:space=\"1\" w:w=\"1\"/>\n </w:cols>")
94
+ end
95
+ end
96
+
97
+ with_value(1.3) do
98
+ it_should_raise_an_exception
99
+ end
100
+
101
+ with_value(:a_lot) do
102
+ it_should_raise_an_exception
103
+ end
104
+ end
105
+
106
+ for_attribute(:separator) do
107
+ before(:each) do
108
+ @instance = described_class.new
109
+ @instance << OpenXml::Docx::Properties::Column.new(1, 1)
110
+ end
111
+
112
+ context "when the value is true" do
113
+ before(:each) do
114
+ @value = true
115
+ end
116
+
117
+ it "should accept the value" do
118
+ expect { instance.send("#{attribute}=", value) }.to_not raise_error
119
+ end
120
+
121
+ it "should output the correct value" do
122
+ instance.send("#{attribute}=", value)
123
+ expect(xml(instance)).to eq("<w:cols w:sep=\"true\">\n <w:col w:space=\"1\" w:w=\"1\"/>\n </w:cols>")
124
+ end
125
+ end
126
+ end
127
+
128
+ for_attribute(:space) do
129
+ before(:each) do
130
+ @instance = described_class.new
131
+ @instance << OpenXml::Docx::Properties::Column.new(1, 1)
132
+ end
133
+
134
+ context "when the value is 1" do
135
+ before(:each) do
136
+ @value = 1
137
+ end
138
+
139
+ it "should accept the value" do
140
+ expect { instance.send("#{attribute}=", value) }.to_not raise_error
141
+ end
142
+
143
+ it "should output the correct value" do
144
+ instance.send("#{attribute}=", value)
145
+ expect(xml(instance)).to eq("<w:cols w:space=\"1\">\n <w:col w:space=\"1\" w:w=\"1\"/>\n </w:cols>")
146
+ end
147
+ end
148
+
149
+ context "when the value is -1" do
150
+ before(:each) do
151
+ @value = -1
152
+ end
153
+
154
+ it "should accept the value" do
155
+ expect { instance.send("#{attribute}=", value) }.to_not raise_error
156
+ end
157
+
158
+ it "should output the correct value" do
159
+ instance.send("#{attribute}=", value)
160
+ expect(xml(instance)).to eq("<w:cols w:space=\"-1\">\n <w:col w:space=\"1\" w:w=\"1\"/>\n </w:cols>")
161
+ end
162
+ end
163
+
164
+ with_value(1.3) do
165
+ it_should_raise_an_exception
166
+ end
167
+
168
+ with_value(:a_lot) do
169
+ it_should_raise_an_exception
170
+ end
171
+ end
172
+
173
+ end
174
+ end