rocx 0.5.7 → 0.5.8

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 (236) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile.lock +11 -7
  4. data/Rakefile +3 -8
  5. data/lib/rocx/elements/base_container.rb +8 -4
  6. data/lib/rocx/elements/paragraph.rb +4 -4
  7. data/lib/rocx/elements/run.rb +40 -1
  8. data/lib/rocx/properties.rb +5 -0
  9. data/lib/rocx/properties/alignment.rb +4 -19
  10. data/lib/rocx/properties/attribute_builder.rb +8 -2
  11. data/lib/rocx/properties/auto_adjust_right_indent.rb +3 -9
  12. data/lib/rocx/properties/auto_space_de.rb +1 -8
  13. data/lib/rocx/properties/auto_space_dn.rb +1 -8
  14. data/lib/rocx/properties/base_property.rb +20 -11
  15. data/lib/rocx/properties/bold.rb +1 -4
  16. data/lib/rocx/properties/boolean_property.rb +1 -1
  17. data/lib/rocx/properties/border.rb +5 -13
  18. data/lib/rocx/properties/borders.rb +2 -8
  19. data/lib/rocx/properties/caps.rb +6 -0
  20. data/lib/rocx/properties/character_spacing.rb +8 -0
  21. data/lib/rocx/properties/color.rb +13 -0
  22. data/lib/rocx/properties/complex_bold.rb +8 -0
  23. data/lib/rocx/properties/complex_font_size.rb +8 -0
  24. data/lib/rocx/properties/complex_italics.rb +8 -0
  25. data/lib/rocx/properties/complex_property.rb +16 -0
  26. data/lib/rocx/properties/complex_script_formatting.rb +8 -0
  27. data/lib/rocx/properties/compress_punctuation.rb +1 -4
  28. data/lib/rocx/properties/conditional_formatting.rb +17 -56
  29. data/lib/rocx/properties/div_id.rb +1 -18
  30. data/lib/rocx/properties/double_strikethrough.rb +8 -0
  31. data/lib/rocx/properties/east_asian_layout.rb +22 -0
  32. data/lib/rocx/properties/effect.rb +11 -0
  33. data/lib/rocx/properties/emboss.rb +6 -0
  34. data/lib/rocx/properties/emphasis.rb +12 -0
  35. data/lib/rocx/properties/expansion.rb +18 -0
  36. data/lib/rocx/properties/font.rb +34 -0
  37. data/lib/rocx/properties/font_size.rb +8 -0
  38. data/lib/rocx/properties/frame.rb +5 -16
  39. data/lib/rocx/properties/hidden_text.rb +8 -0
  40. data/lib/rocx/properties/highlight.rb +11 -0
  41. data/lib/rocx/properties/imprint.rb +6 -0
  42. data/lib/rocx/properties/indentation.rb +11 -24
  43. data/lib/rocx/properties/integer_property.rb +15 -0
  44. data/lib/rocx/properties/italics.rb +1 -4
  45. data/lib/rocx/properties/kerning.rb +8 -0
  46. data/lib/rocx/properties/language.rb +20 -0
  47. data/lib/rocx/properties/manual_width.rb +12 -0
  48. data/lib/rocx/properties/math.rb +8 -0
  49. data/lib/rocx/properties/no_proof.rb +6 -0
  50. data/lib/rocx/properties/numbering.rb +4 -10
  51. data/lib/rocx/properties/on_off_property.rb +1 -1
  52. data/lib/rocx/properties/outline.rb +6 -0
  53. data/lib/rocx/properties/outline_level.rb +2 -17
  54. data/lib/rocx/properties/overflow_punctuation.rb +1 -8
  55. data/lib/rocx/properties/paragraph_style.rb +8 -0
  56. data/lib/rocx/properties/position.rb +6 -0
  57. data/lib/rocx/properties/positive_integer_property.rb +15 -0
  58. data/lib/rocx/properties/right_to_left.rb +8 -0
  59. data/lib/rocx/properties/run_style.rb +8 -0
  60. data/lib/rocx/properties/shading.rb +9 -20
  61. data/lib/rocx/properties/shadow.rb +6 -0
  62. data/lib/rocx/properties/small_caps.rb +6 -0
  63. data/lib/rocx/properties/spacing.rb +4 -17
  64. data/lib/rocx/properties/spec_vanish.rb +6 -0
  65. data/lib/rocx/properties/strikethrough.rb +8 -0
  66. data/lib/rocx/properties/style.rb +15 -0
  67. data/lib/rocx/properties/tab.rb +1 -9
  68. data/lib/rocx/properties/tabs.rb +1 -9
  69. data/lib/rocx/properties/text_alignment.rb +11 -0
  70. data/lib/rocx/properties/text_direction.rb +1 -5
  71. data/lib/rocx/properties/textbox_tight_wrap.rb +1 -5
  72. data/lib/rocx/properties/toggle_property.rb +1 -1
  73. data/lib/rocx/properties/underline.rb +24 -0
  74. data/lib/rocx/properties/value_property.rb +29 -0
  75. data/lib/rocx/properties/vertical_alignment.rb +3 -10
  76. data/lib/rocx/properties/web_hidden.rb +6 -0
  77. data/lib/rocx/version.rb +1 -1
  78. data/rocx.gemspec +1 -2
  79. data/spec/elements/break_spec.rb +47 -0
  80. data/spec/elements/paragraph_spec.rb +31 -0
  81. data/spec/elements/run_spec.rb +15 -0
  82. data/spec/elements/symbol_spec.rb +24 -0
  83. data/spec/elements/text_spec.rb +23 -0
  84. data/spec/package_spec.rb +48 -0
  85. data/spec/parts/content_types_spec.rb +32 -0
  86. data/spec/parts/document_spec.rb +32 -0
  87. data/spec/parts/global_rels_spec.rb +13 -0
  88. data/spec/parts/rels_spec.rb +42 -0
  89. data/spec/parts/settings_spec.rb +13 -0
  90. data/spec/parts/styles_spec.rb +27 -0
  91. data/spec/properties/alignment_spec.rb +58 -0
  92. data/spec/properties/auto_adjust_right_indent_spec.rb +23 -0
  93. data/spec/properties/auto_space_de_spec.rb +23 -0
  94. data/spec/properties/auto_space_dn_spec.rb +23 -0
  95. data/spec/properties/bidi_spec.rb +23 -0
  96. data/spec/properties/bold_spec.rb +23 -0
  97. data/spec/properties/border_spec.rb +156 -0
  98. data/spec/properties/borders_spec.rb +66 -0
  99. data/spec/properties/caps_spec.rb +23 -0
  100. data/spec/properties/character_spacing_spec.rb +26 -0
  101. data/spec/properties/color_spec.rb +49 -0
  102. data/spec/properties/complex_bold_spec.rb +23 -0
  103. data/spec/properties/complex_font_size_spec.rb +24 -0
  104. data/spec/properties/complex_italics_spec.rb +23 -0
  105. data/spec/properties/complex_script_formatting_spec.rb +23 -0
  106. data/spec/properties/compress_punctuation_spec.rb +23 -0
  107. data/spec/properties/conditional_formatting_spec.rb +160 -0
  108. data/spec/properties/contextual_spacing_spec.rb +23 -0
  109. data/spec/properties/div_id_spec.rb +17 -0
  110. data/spec/properties/double_strikethrough_spec.rb +23 -0
  111. data/spec/properties/east_asian_layout_spec.rb +115 -0
  112. data/spec/properties/effect_spec.rb +43 -0
  113. data/spec/properties/emboss_spec.rb +23 -0
  114. data/spec/properties/emphasis_spec.rb +37 -0
  115. data/spec/properties/expansion_spec.rb +34 -0
  116. data/spec/properties/font_size_spec.rb +24 -0
  117. data/spec/properties/font_spec.rb +273 -0
  118. data/spec/properties/frame_spec.rb +338 -0
  119. data/spec/properties/hidden_text_spec.rb +23 -0
  120. data/spec/properties/highlight_spec.rb +97 -0
  121. data/spec/properties/imprint_spec.rb +23 -0
  122. data/spec/properties/indentation_spec.rb +176 -0
  123. data/spec/properties/italics_spec.rb +23 -0
  124. data/spec/properties/keep_lines_spec.rb +23 -0
  125. data/spec/properties/keep_next_spec.rb +23 -0
  126. data/spec/properties/kerning_spec.rb +24 -0
  127. data/spec/properties/kinsoku_spec.rb +23 -0
  128. data/spec/properties/language_spec.rb +29 -0
  129. data/spec/properties/manual_width_spec.rb +55 -0
  130. data/spec/properties/math_spec.rb +23 -0
  131. data/spec/properties/mirror_indent_spec.rb +23 -0
  132. data/spec/properties/no_proof_spec.rb +23 -0
  133. data/spec/properties/numbering_spec.rb +46 -0
  134. data/spec/properties/outline_level_spec.rb +20 -0
  135. data/spec/properties/outline_spec.rb +23 -0
  136. data/spec/properties/overflow_punctuation_spec.rb +23 -0
  137. data/spec/properties/page_break_before_spec.rb +23 -0
  138. data/spec/properties/paragraph_style_spec.rb +12 -0
  139. data/spec/properties/position_spec.rb +26 -0
  140. data/spec/properties/right_to_left_spec.rb +23 -0
  141. data/spec/properties/run_style_spec.rb +12 -0
  142. data/spec/properties/shading_spec.rb +135 -0
  143. data/spec/properties/shadow_property_spec.rb +23 -0
  144. data/spec/properties/small_caps_spec.rb +22 -0
  145. data/spec/properties/snap_to_grid_spec.rb +23 -0
  146. data/spec/properties/spacing_spec.rb +159 -0
  147. data/spec/properties/spec_vanish_spec.rb +23 -0
  148. data/spec/properties/strikethrough_spec.rb +23 -0
  149. data/spec/properties/supress_auto_hyphens_spec.rb +23 -0
  150. data/spec/properties/supress_line_numbers_spec.rb +23 -0
  151. data/spec/properties/supress_overlap_spec.rb +23 -0
  152. data/spec/properties/tab_spec.rb +45 -0
  153. data/spec/properties/tabs_spec.rb +39 -0
  154. data/spec/properties/text_alignment_spec.rb +33 -0
  155. data/spec/properties/text_direction_spec.rb +42 -0
  156. data/spec/properties/textbox_tight_wrap_spec.rb +33 -0
  157. data/spec/properties/underline_spec.rb +161 -0
  158. data/spec/properties/vertical_alignment_spec.rb +26 -0
  159. data/spec/properties/web_hidden_spec.rb +23 -0
  160. data/spec/properties/widow_control_spec.rb +23 -0
  161. data/spec/properties/word_wrap_spec.rb +23 -0
  162. data/spec/spec_helper.rb +14 -0
  163. data/spec/style_spec.rb +34 -0
  164. data/{test → spec/support}/data/elements/break_element.xml +0 -0
  165. data/{test → spec/support}/data/elements/break_with_attributes_element.xml +0 -0
  166. data/{test → spec/support}/data/elements/paragraph_element.xml +0 -0
  167. data/{test → spec/support}/data/elements/paragraph_with_runs_element.xml +1 -1
  168. data/{test → spec/support}/data/elements/run_element.xml +0 -0
  169. data/{test → spec/support}/data/elements/symbol_element.xml +0 -0
  170. data/{test → spec/support}/data/elements/text_element.xml +0 -0
  171. data/{test → spec/support}/data/parts/content_types_part.xml +0 -0
  172. data/{test → spec/support}/data/parts/document_with_children_part.xml +0 -0
  173. data/{test → spec/support}/data/parts/empty_document_part.xml +0 -0
  174. data/{test → spec/support}/data/parts/global_rels_part.xml +0 -0
  175. data/{test → spec/support}/data/parts/rels_part.xml +0 -0
  176. data/{test → spec/support}/data/parts/settings_part.xml +0 -0
  177. data/{test → spec/support}/data/parts/styles_part.xml +0 -0
  178. data/{test → spec/support}/data/parts/styles_with_custom_style_part.xml +0 -0
  179. data/{test → spec/support}/data/styles/character_styles.xml +0 -0
  180. data/{test → spec/support}/data/styles/paragraph_styles.xml +0 -0
  181. data/spec/support/element_test_macros.rb +33 -0
  182. data/spec/support/part_test_macros.rb +27 -0
  183. data/spec/support/property_test_macros.rb +116 -0
  184. data/spec/support/style_test_macros.rb +33 -0
  185. data/spec/support/value_property_test_macros.rb +69 -0
  186. metadata +151 -133
  187. data/lib/rocx/elements/style.rb +0 -19
  188. data/test/elements/break_test.rb +0 -54
  189. data/test/elements/paragraph_test.rb +0 -37
  190. data/test/elements/run_test.rb +0 -18
  191. data/test/elements/symbol_test.rb +0 -23
  192. data/test/elements/text_test.rb +0 -26
  193. data/test/package_test.rb +0 -48
  194. data/test/parts/content_types_test.rb +0 -37
  195. data/test/parts/document_test.rb +0 -31
  196. data/test/parts/global_rels_test.rb +0 -13
  197. data/test/parts/rels_test.rb +0 -48
  198. data/test/parts/settings_test.rb +0 -13
  199. data/test/parts/styles_test.rb +0 -29
  200. data/test/properties/auto_adjust_right_indent_test.rb +0 -50
  201. data/test/properties/auto_space_de_test.rb +0 -50
  202. data/test/properties/auto_space_dn_test.rb +0 -50
  203. data/test/properties/bidi_test.rb +0 -50
  204. data/test/properties/bold_test.rb +0 -50
  205. data/test/properties/border_test.rb +0 -216
  206. data/test/properties/borders_test.rb +0 -95
  207. data/test/properties/compress_punctuation_test.rb +0 -50
  208. data/test/properties/conditional_formatting_test.rb +0 -46
  209. data/test/properties/contextual_spacing_test.rb +0 -50
  210. data/test/properties/div_id_test.rb +0 -38
  211. data/test/properties/frame_test.rb +0 -497
  212. data/test/properties/italics_test.rb +0 -50
  213. data/test/properties/keep_lines_test.rb +0 -50
  214. data/test/properties/keep_next_test.rb +0 -50
  215. data/test/properties/kinsoku_test.rb +0 -50
  216. data/test/properties/mirror_indent_test.rb +0 -50
  217. data/test/properties/numbering_test.rb +0 -86
  218. data/test/properties/outline_level_test.rb +0 -46
  219. data/test/properties/overflow_punctuation_test.rb +0 -50
  220. data/test/properties/page_break_before_test.rb +0 -50
  221. data/test/properties/shading_test.rb +0 -225
  222. data/test/properties/snap_to_grid_test.rb +0 -50
  223. data/test/properties/spacing_test.rb +0 -248
  224. data/test/properties/style_test.rb +0 -30
  225. data/test/properties/supress_auto_hyphens_test.rb +0 -50
  226. data/test/properties/supress_line_numbers_test.rb +0 -50
  227. data/test/properties/supress_overlap_test.rb +0 -50
  228. data/test/properties/tab_test.rb +0 -63
  229. data/test/properties/tabs_test.rb +0 -54
  230. data/test/properties/text_direction_test.rb +0 -100
  231. data/test/properties/textbox_tight_wrap_test.rb +0 -88
  232. data/test/properties/vertical_alignment_test.rb +0 -88
  233. data/test/properties/widow_control_test.rb +0 -50
  234. data/test/properties/word_wrap_test.rb +0 -50
  235. data/test/style_test.rb +0 -54
  236. data/test/test_helper.rb +0 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ebac9d8d2e707e65cf407ccc36232723b714808
4
- data.tar.gz: 31d5f1ddbf1b278ffd9e7f28a615bd53e58c5f05
3
+ metadata.gz: e4eeb08bee13a8278c055c33dd6c18a6dad0fc8d
4
+ data.tar.gz: 3b733fe765443f5e4b56e9794b66f9bae84af56d
5
5
  SHA512:
6
- metadata.gz: ff8b3600a3cb1319f49cfc4abef91b0494973f21f4cf3b8c958d860bf61c2223fdb32fe7b4f6bd959096fe5198cb10349ffb4d15417b24f48d067055deb5258d
7
- data.tar.gz: 2227d88abf6fe8c3829fce89535b371af53302c0c761b63569fbd9d0b0831bc7acc80f383f09e3a0d7cf80ae1c2afa90978f14ba543f9f11330693aa1b2ec175
6
+ metadata.gz: 1fb231ad17a78eccddf31d2c3fc7373d0004a5a5cad0412875d0e50dfc6ac268af1891161e3ed05805ae14f2b38f22629fd694ae79a627924b09256219671b46
7
+ data.tar.gz: ee68b316c2ba4c1b87cd1f5d3ca1ceaeb6d791881f064267bbdb59b1be775353fd24ddfbe999554ab83d99fa572e33e2ca04d29c718a89da735e9a0573dd932a
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  .DS_Store
2
2
  rocx-0.1.0.gem
3
3
  *.gem
4
+ .rspec-local
4
5
  /coverage
5
6
  TODO.md
@@ -1,15 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rocx (0.5.7)
4
+ rocx (0.5.8)
5
5
  nokogiri
6
6
  open_xml_package
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- ansi (1.4.3)
12
11
  coderay (1.0.9)
12
+ diff-lcs (1.2.5)
13
13
  method_source (0.8.1)
14
14
  mini_portile (0.5.3)
15
15
  multi_json (1.7.2)
@@ -23,16 +23,21 @@ GEM
23
23
  slop (~> 3.4)
24
24
  rake (10.0.4)
25
25
  rr (1.1.2)
26
+ rspec (2.14.1)
27
+ rspec-core (~> 2.14.0)
28
+ rspec-expectations (~> 2.14.0)
29
+ rspec-mocks (~> 2.14.0)
30
+ rspec-core (2.14.7)
31
+ rspec-expectations (2.14.4)
32
+ diff-lcs (>= 1.1.3, < 2.0)
33
+ rspec-mocks (2.14.4)
26
34
  rubyzip (1.1.3)
27
- shoulda-context (1.1.6)
28
35
  simplecov (0.7.1)
29
36
  multi_json (~> 1.0)
30
37
  simplecov-html (~> 0.7.1)
31
38
  simplecov-html (0.7.1)
32
39
  slop (3.4.4)
33
40
  timecop (0.6.3)
34
- turn (0.9.6)
35
- ansi
36
41
 
37
42
  PLATFORMS
38
43
  ruby
@@ -42,7 +47,6 @@ DEPENDENCIES
42
47
  rake
43
48
  rocx!
44
49
  rr
45
- shoulda-context
50
+ rspec
46
51
  simplecov
47
52
  timecop
48
- turn
data/Rakefile CHANGED
@@ -1,9 +1,4 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require "rspec/core/rake_task"
3
2
 
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << 'lib'
6
- t.libs << 'test'
7
- t.pattern = 'test/**/*_test.rb'
8
- t.verbose = false
9
- end
3
+ RSpec::Core::RakeTask.new
4
+ task default: :spec
@@ -12,18 +12,21 @@ module Rocx
12
12
  def value_property(name)
13
13
  attr_reader name
14
14
 
15
- define_method "#{name}=" do |value|
16
- class_name = name.to_s.split("_").map(&:capitalize).join
15
+ class_eval <<-CODE, __FILE__, __LINE__ + 1
16
+ def #{name}=(value)
17
+ class_name = "#{name}".split.map(&:capitalize).join
17
18
  prop_class = Rocx::Properties.const_get class_name
18
19
  instance_variable_set "@#{name}", prop_class.new(value)
19
20
  end
21
+ CODE
20
22
 
21
23
  properties << name
22
24
  end
23
25
 
24
26
  def property(name)
25
- define_method "#{name}" do
26
- class_name = name.to_s.split("_").map(&:capitalize).join
27
+ class_eval <<-CODE, __FILE__, __LINE__ + 1
28
+ def #{name}
29
+ class_name = "#{name}".split("_").map(&:capitalize).join
27
30
  prop_class = Rocx::Properties.const_get class_name
28
31
 
29
32
  if instance_variable_get("@#{name}").nil?
@@ -32,6 +35,7 @@ module Rocx
32
35
 
33
36
  instance_variable_get "@#{name}"
34
37
  end
38
+ CODE
35
39
 
36
40
  properties << name
37
41
  end
@@ -11,29 +11,29 @@ module Rocx
11
11
  value_property :auto_space_dn
12
12
  value_property :bidi
13
13
  value_property :compress_punctuation
14
- value_property :conditional_formatting
15
14
  value_property :contextual_spacing
16
15
  value_property :div_id
17
16
  value_property :keep_lines
18
17
  value_property :keep_next
19
- value_property :indentation
20
18
  value_property :mirror_indent
21
19
  value_property :outline_level
22
20
  value_property :overflow_punctuation
23
21
  value_property :page_break_before
24
22
  value_property :snap_to_grid
25
- value_property :style
23
+ value_property :paragraph_style
26
24
  value_property :supress_auto_hyphens
27
25
  value_property :supress_line_numbers
28
26
  value_property :supress_overlap
29
27
  value_property :textbox_tight_wrap
28
+ value_property :text_alignment
30
29
  value_property :text_direction
31
- value_property :vertical_alignment
32
30
  value_property :widow_control
33
31
  value_property :word_wrap
34
32
 
35
33
  property :borders
34
+ property :conditional_formatting
36
35
  property :frame
36
+ property :indentation
37
37
  property :numbering
38
38
  property :shading
39
39
  property :spacing
@@ -4,8 +4,47 @@ module Rocx
4
4
  tag_name :r
5
5
  namespace :w
6
6
  properties_tag :rPr
7
- value_property :italics
7
+
8
8
  value_property :bold
9
+ value_property :caps
10
+ value_property :character_spacing
11
+ value_property :complex_bold
12
+ value_property :complex_font_size
13
+ value_property :complex_italics
14
+ value_property :complex_script_formatting
15
+ value_property :double_strikethrough
16
+ value_property :effect
17
+ value_property :emboss
18
+ value_property :emphasis
19
+ value_property :expansion
20
+ value_property :font_size
21
+ value_property :hidden_text
22
+ value_property :highlight
23
+ value_property :kerning
24
+ value_property :imprint
25
+ value_property :italics
26
+ value_property :math
27
+ value_property :no_proof
28
+ value_property :outline
29
+ value_property :position
30
+ value_property :right_to_left
31
+ value_property :run_style
32
+ value_property :shadow
33
+ value_property :small_caps
34
+ value_property :snap_to_grid
35
+ value_property :spec_vanish
36
+ value_property :strikethrough
37
+ value_property :vertical_alignment
38
+ value_property :web_hidden
39
+
40
+ property :border
41
+ property :color
42
+ property :font
43
+ property :east_asian_layout
44
+ property :language
45
+ property :manual_width
46
+ property :shading
47
+ property :underline
9
48
 
10
49
  end
11
50
  end
@@ -4,9 +4,14 @@ module Rocx
4
4
  end
5
5
 
6
6
  require "rocx/properties/base_property"
7
+ require "rocx/properties/complex_property"
8
+ require "rocx/properties/value_property"
7
9
  require "rocx/properties/boolean_property"
10
+ require "rocx/properties/integer_property"
11
+ require "rocx/properties/positive_integer_property"
8
12
  require "rocx/properties/on_off_property"
9
13
  require "rocx/properties/toggle_property"
14
+ require "rocx/properties/style"
10
15
  Dir.glob("#{File.join(File.dirname(__FILE__), "properties", "*.rb")}").each do |file|
11
16
  require file
12
17
  end
@@ -1,25 +1,10 @@
1
1
  module Rocx
2
2
  module Properties
3
- class Alignment < BaseProperty
4
- attr_reader :value
3
+ class Alignment < ValueProperty
4
+ tag :jc
5
5
 
6
- OK_VALUES = [:both, :center, :distribute, :end, :highKashida, :lowKashida, :mediumKashida, :numTab, :start, :thaiDistribute]
7
-
8
- def initialize(value)
9
- @value = value
10
- raise ArgumentError invalid_message unless valid?
11
- end
12
-
13
- def invalid_message
14
- "Invalid value for alignment; acceptable values are #{OK_VALUES.join(", ")}"
15
- end
16
-
17
- def valid?
18
- OK_VALUES.member? value
19
- end
20
-
21
- def to_xml(xml)
22
- xml["w"].jc("w:val" => value) if value
6
+ def ok_values
7
+ [:both, :center, :distribute, :end, :highKashida, :lowKashida, :mediumKashida, :numTab, :start, :thaiDistribute]
23
8
  end
24
9
 
25
10
  end
@@ -211,7 +211,8 @@ module Rocx
211
211
  instance_variable_set "@#{name}", value
212
212
  end
213
213
 
214
- attributes[name] = displays_as || name
214
+ camelized_name = name.to_s.gsub(/_([a-z])/i) { $1.upcase }.to_sym
215
+ attributes[name] = displays_as || camelized_name
215
216
  end
216
217
 
217
218
  def attributes
@@ -261,6 +262,11 @@ module Rocx
261
262
  raise ArgumentError, message unless value.is_a?(Integer) && value >= 0
262
263
  end
263
264
 
265
+ def string(value)
266
+ message = "Invalid #{name}: must be a string"
267
+ raise ArgumentError, message unless value.is_a?(String)
268
+ end
269
+
264
270
  def on_or_off(value)
265
271
  valid_in? value, [:on, :off]
266
272
  end
@@ -274,7 +280,7 @@ module Rocx
274
280
  end
275
281
 
276
282
  def valid_in?(value, list)
277
- message = "Invalid #{name}: must be one of #{list.join(", ")}"
283
+ message = "Invalid #{name}: must be one of #{list.join(", ")} (was #{value.inspect})"
278
284
  raise ArgumentError, message unless list.member?(value)
279
285
  end
280
286
 
@@ -1,15 +1,9 @@
1
1
  module Rocx
2
2
  module Properties
3
3
  class AutoAdjustRightIndent < BooleanProperty
4
-
5
- def name
6
- "auto_adjust_right_ind"
7
- end
8
-
9
- def tag
10
- :adjustRightInd
11
- end
12
-
4
+ tag :adjustRightInd
5
+ name "auto_adjust_right_ind"
6
+
13
7
  end
14
8
  end
15
9
  end
@@ -1,14 +1,7 @@
1
1
  module Rocx
2
2
  module Properties
3
3
  class AutoSpaceDe < BooleanProperty
4
-
5
- def name
6
- "auto_space_de"
7
- end
8
-
9
- def tag
10
- :autoSpaceDE
11
- end
4
+ tag :autoSpaceDE
12
5
 
13
6
  end
14
7
  end
@@ -1,14 +1,7 @@
1
1
  module Rocx
2
2
  module Properties
3
3
  class AutoSpaceDn < BooleanProperty
4
-
5
- def name
6
- "auto_space_dn"
7
- end
8
-
9
- def tag
10
- :autoSpaceDN
11
- end
4
+ tag :autoSpaceDN
12
5
 
13
6
  end
14
7
  end
@@ -3,17 +3,18 @@ module Rocx
3
3
  class BaseProperty
4
4
  attr_reader :value
5
5
 
6
- def initialize(value)
7
- @value = value
8
- raise ArgumentError, invalid_message unless valid?
9
- end
10
-
11
- def valid?
12
- ok_values.member? value
13
- end
14
-
15
- def invalid_message
16
- "Invalid value for #{name}; acceptable values are #{ok_values.join(", ")}"
6
+ class << self
7
+ attr_reader :property_name
8
+
9
+ def tag(*args)
10
+ @tag = args.first if args.any?
11
+ @tag
12
+ end
13
+
14
+ def name(*args)
15
+ @property_name = args.first if args.any?
16
+ @name
17
+ end
17
18
  end
18
19
 
19
20
  def render?
@@ -21,10 +22,18 @@ module Rocx
21
22
  end
22
23
 
23
24
  def name
25
+ self.class.property_name || default_name
26
+ end
27
+
28
+ def default_name
24
29
  class_name.gsub(/(.)([A-Z])/, '\1_\2').downcase
25
30
  end
26
31
 
27
32
  def tag
33
+ self.class.tag || default_tag
34
+ end
35
+
36
+ def default_tag
28
37
  (class_name[0, 1].downcase + class_name[1..-1]).to_sym
29
38
  end
30
39
 
@@ -1,10 +1,7 @@
1
1
  module Rocx
2
2
  module Properties
3
3
  class Bold < ToggleProperty
4
-
5
- def tag
6
- :b
7
- end
4
+ tag :b
8
5
 
9
6
  end
10
7
  end
@@ -1,6 +1,6 @@
1
1
  module Rocx
2
2
  module Properties
3
- class BooleanProperty < BaseProperty
3
+ class BooleanProperty < ValueProperty
4
4
 
5
5
  def ok_values
6
6
  [nil, true, false]
@@ -1,6 +1,6 @@
1
1
  module Rocx
2
2
  module Properties
3
- class Border
3
+ class Border < ComplexProperty
4
4
  include AttributeBuilder
5
5
 
6
6
  attr_reader :tag
@@ -10,23 +10,15 @@ module Rocx
10
10
  attribute :shadow, expects: :true_or_false
11
11
  attribute :size, expects: :positive_integer, displays_as: :sz
12
12
  attribute :space, expects: :positive_integer
13
- attribute :theme_color, expects: :valid_theme_color, displays_as: :themeColor
14
- attribute :theme_shade, expects: :hex_digit, displays_as: :themeShade
15
- attribute :theme_tint, expects: :hex_digit, displays_as: :themeTint
13
+ attribute :theme_color, expects: :valid_theme_color
14
+ attribute :theme_shade, expects: :hex_digit
15
+ attribute :theme_tint, expects: :hex_digit
16
16
  attribute :type, expects: :valid_type, displays_as: :val
17
17
 
18
- def initialize(tag)
18
+ def initialize(tag=:bdr)
19
19
  @tag = tag
20
20
  end
21
21
 
22
- def name
23
- "border"
24
- end
25
-
26
- def to_xml(xml)
27
- xml["w"].public_send(tag, xml_attributes)
28
- end
29
-
30
22
  end
31
23
  end
32
24
  end
@@ -1,6 +1,6 @@
1
1
  module Rocx
2
2
  module Properties
3
- class Borders
3
+ class Borders < ComplexProperty
4
4
  attr_reader :left, :right, :top, :bottom, :between, :bar
5
5
 
6
6
  def initialize
@@ -12,13 +12,7 @@ module Rocx
12
12
  @bar = new_border :bar
13
13
  end
14
14
 
15
- def tag
16
- :pBdr
17
- end
18
-
19
- def name
20
- "borders"
21
- end
15
+ tag :pBdr
22
16
 
23
17
  def render?
24
18
  !renderable_borders.length.zero?