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
@@ -0,0 +1,6 @@
1
+ module Rocx
2
+ module Properties
3
+ class Caps < ToggleProperty
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class CharacterSpacing < IntegerProperty
4
+ tag :spacing
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,13 @@
1
+ module Rocx
2
+ module Properties
3
+ class Color < ComplexProperty
4
+ include AttributeBuilder
5
+
6
+ attribute :color, expects: :hex_color, displays_as: :val
7
+ attribute :theme_color, expects: :valid_theme_color
8
+ attribute :theme_shade, expects: :hex_digit
9
+ attribute :theme_tint, expects: :hex_digit
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class ComplexBold < ToggleProperty
4
+ tag :bCs
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class ComplexFontSize < PositiveIntegerProperty
4
+ tag :szCs
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class ComplexItalics < ToggleProperty
4
+ tag :iCs
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ module Rocx
2
+ module Properties
3
+ class ComplexProperty < BaseProperty
4
+
5
+ def to_xml(xml)
6
+ return unless render?
7
+ xml["w"].public_send(tag, xml_attributes)
8
+ end
9
+
10
+ def render?
11
+ !xml_attributes.empty?
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class ComplexScriptFormatting < ToggleProperty
4
+ tag :cs
5
+
6
+ end
7
+ end
8
+ end
@@ -1,10 +1,7 @@
1
1
  module Rocx
2
2
  module Properties
3
3
  class CompressPunctuation < OnOffProperty
4
-
5
- def tag
6
- :topLinePunct
7
- end
4
+ tag :topLinePunct
8
5
 
9
6
  end
10
7
  end
@@ -1,61 +1,22 @@
1
1
  module Rocx
2
2
  module Properties
3
- class ConditionalFormatting < BaseProperty
4
- VALID_ARGUMENTS = %i(even_h
5
- even_v
6
- odd_h
7
- odd_v
8
- first_column
9
- first_row
10
- last_column
11
- last_row
12
- first_row_first_column
13
- first_row_last_column
14
- last_row_first_column
15
- last_row_last_column)
16
-
17
- VALID_ARGUMENTS.each do |arg|
18
- attr_accessor arg
19
- end
20
-
21
- def initialize(**args)
22
- check_arguments(args)
23
- assign_arguments(args)
24
- end
25
-
26
- def tag
27
- :cnfStyle
28
- end
29
-
30
- def to_xml(xml)
31
- xml["w"].public_send(tag, xml_properties)
32
- end
33
-
34
- private
35
-
36
- def check_arguments(args)
37
-
38
- args.keys.each do |key|
39
- raise ArgumentError, "Invalid argument for conditional formatting" unless VALID_ARGUMENTS.member?(key)
40
- end
41
-
42
- args.values.each do |value|
43
- raise ArgumentError, "Invalid value for conditional formatting" unless [true, false].member?(value)
44
- end
45
- end
46
-
47
- def assign_arguments(args)
48
- args.each do |key, val|
49
- send "#{key}=", val
50
- end
51
- end
52
-
53
- def xml_properties
54
- VALID_ARGUMENTS.each_with_object({}) do |arg, props|
55
- value = send(arg)
56
- props["w:#{arg}"] = value if value
57
- end
58
- end
3
+ class ConditionalFormatting < ComplexProperty
4
+ include AttributeBuilder
5
+
6
+ tag :cnfStyle
7
+
8
+ attribute :even_horizontal_band, expects: :true_or_false, displays_as: :evenHBand
9
+ attribute :even_vertical_band, expects: :true_or_false, displays_as: :evenVBand
10
+ attribute :first_column, expects: :true_or_false
11
+ attribute :first_row, expects: :true_or_false
12
+ attribute :first_row_first_column, expects: :true_or_false
13
+ attribute :first_row_last_column, expects: :true_or_false
14
+ attribute :last_column, expects: :true_or_false
15
+ attribute :last_row, expects: :true_or_false
16
+ attribute :last_row_first_column, expects: :true_or_false
17
+ attribute :last_row_last_column, expects: :true_or_false
18
+ attribute :odd_horizontal_band, expects: :true_or_false, displays_as: :oddHBand
19
+ attribute :odd_vertical_band, expects: :true_or_false, displays_as: :oddVBand
59
20
 
60
21
  end
61
22
  end
@@ -1,23 +1,6 @@
1
1
  module Rocx
2
2
  module Properties
3
- class DivId < BaseProperty
4
-
5
- def valid?
6
- value.is_a?(Integer)
7
- end
8
-
9
- def invalid_message
10
- "Invalid value for #{name}; acceptable values are integers"
11
- end
12
-
13
- def tag
14
- :divId
15
- end
16
-
17
- def to_xml(xml)
18
- xml["w"].public_send(tag, "w:val" => value)
19
- end
20
-
3
+ class DivId < IntegerProperty
21
4
  end
22
5
  end
23
6
  end
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class DoubleStrikethrough < BooleanProperty
4
+ tag :dstrike
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,22 @@
1
+ module Rocx
2
+ module Properties
3
+ class EastAsianLayout < ComplexProperty
4
+ include AttributeBuilder
5
+
6
+ VALID_BRACKETS = %i(angle curly none round square)
7
+
8
+ attribute :combine, expects: :on_or_off
9
+ attribute :combine_brackets, expects: :valid_bracket
10
+ attribute :id, expects: :integer
11
+ attribute :vertical, expects: :on_or_off, displays_as: :vert
12
+ attribute :vertical_compress, expects: :on_or_off, displays_as: :vertCompress
13
+
14
+ private
15
+
16
+ def valid_bracket(value)
17
+ valid_in? value, VALID_BRACKETS
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ module Rocx
2
+ module Properties
3
+ class Effect < ValueProperty
4
+
5
+ def ok_values
6
+ %i(antsBlack antsRed blinkBackground lights none shimmer sparkle)
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Rocx
2
+ module Properties
3
+ class Emboss < ToggleProperty
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ module Rocx
2
+ module Properties
3
+ class Emphasis < ValueProperty
4
+ tag :em
5
+
6
+ def ok_values
7
+ %i(circle comma dot none underDot)
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ module Rocx
2
+ module Properties
3
+ class Expansion < ValueProperty
4
+ tag :w
5
+
6
+ def valid?
7
+ return false unless value =~ /(\d{1,3})%/
8
+ percentage = $1.to_i
9
+ percentage >= 1 && percentage <= 600
10
+ end
11
+
12
+ def invalid_message
13
+ "Invalid #{name}: value must be a percentage greater than 0 or less than 601"
14
+ end
15
+
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,34 @@
1
+ module Rocx
2
+ module Properties
3
+ class Font < ComplexProperty
4
+ include AttributeBuilder
5
+
6
+ tag :rFonts
7
+
8
+ attribute :ascii, expects: :string
9
+ attribute :ascii_theme, expects: :valid_theme
10
+ attribute :complex, expects: :string, displays_as: :cs
11
+ attribute :complex_theme, expects: :valid_theme, displays_as: :cstheme
12
+ attribute :east_asia, expects: :string
13
+ attribute :east_asia_theme, expects: :valid_theme
14
+ attribute :high_ansi, expects: :string, displays_as: :hAnsi
15
+ attribute :high_ansi_theme, expects: :valid_theme, displays_as: :hAnsiTheme
16
+ attribute :hint, expects: :valid_hint
17
+
18
+ VALID_HINTS = %i(cs default eastAsia)
19
+
20
+ VALID_THEMES = %i(majorAscii majorBidi majorEastAsia majorHAnsi minorAscii minorBidi minorEastAsia minorHAnsi)
21
+
22
+ private
23
+
24
+ def valid_theme(value)
25
+ valid_in? value, VALID_THEMES
26
+ end
27
+
28
+ def valid_hint(value)
29
+ valid_in? value, VALID_HINTS
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class FontSize < PositiveIntegerProperty
4
+ tag :sz
5
+
6
+ end
7
+ end
8
+ end
@@ -1,8 +1,10 @@
1
1
  module Rocx
2
2
  module Properties
3
- class Frame
3
+ class Frame < ComplexProperty
4
4
  include AttributeBuilder
5
5
 
6
+ tag :framePr
7
+
6
8
  VALID_ANCHORS = %i(margin page text)
7
9
  VALID_DROP_CAPS = %i(drop margin none)
8
10
  VALID_HEIGHT_RULES = %i(atLeast auto exact)
@@ -10,8 +12,8 @@ module Rocx
10
12
  VALID_RELATIVE_VERTICAL_POSITIONS = %i(bottom center inline inside outside top)
11
13
  VALID_WRAPS = %i(around auto none notBeside through tight)
12
14
 
13
- attribute :anchor_lock, expects: :true_or_false, displays_as: :anchorLock
14
- attribute :drop_cap, expects: :valid_drop_cap, displays_as: :dropCap
15
+ attribute :anchor_lock, expects: :true_or_false
16
+ attribute :drop_cap, expects: :valid_drop_cap
15
17
  attribute :height, expects: :positive_integer, displays_as: :h
16
18
  attribute :height_rule, expects: :valid_height_rule, displays_as: :hRule
17
19
  attribute :horizontal_anchor, expects: :valid_anchor, displays_as: :hAnchor
@@ -26,19 +28,6 @@ module Rocx
26
28
  attribute :width, expects: :positive_integer, displays_as: :w
27
29
  attribute :wrap, expects: :valid_wrap
28
30
 
29
- def tag
30
- :framePr
31
- end
32
-
33
- def name
34
- "frame"
35
- end
36
-
37
- def to_xml(xml)
38
- return if xml_attributes.empty?
39
- xml["w"].public_send(tag, xml_attributes)
40
- end
41
-
42
31
  private
43
32
 
44
33
  def valid_drop_cap(value)
@@ -0,0 +1,8 @@
1
+ module Rocx
2
+ module Properties
3
+ class HiddenText < ToggleProperty
4
+ tag :vanish
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ module Rocx
2
+ module Properties
3
+ class Highlight < ValueProperty
4
+
5
+ def ok_values
6
+ %i(black blue cyan darkBlue darkCyan darkGray darkGreen darkMagenta darkRed darkYellow green lightGray magenta none red white yellow)
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Rocx
2
+ module Properties
3
+ class Imprint < ToggleProperty
4
+ end
5
+ end
6
+ end
@@ -1,31 +1,18 @@
1
1
  module Rocx
2
2
  module Properties
3
- class Indentation < BaseProperty
4
- attr_reader :value
3
+ class Indentation < ComplexProperty
4
+ include AttributeBuilder
5
5
 
6
- OK_KEYS = [:end, :endChars, :firstLine, :firstLineChars, :hanging, :hangingChars, :start, :startChars]
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 indentation"
15
- end
16
-
17
- def valid?
18
- value.keys.all?(&OK_KEYS.method(:member?))
19
- end
20
-
21
- def to_xml(xml)
22
- return unless value.length > 0
23
- namespaced_values = value.each_with_object({}) do |(prop, value), values|
24
- values["w:#{prop}"] = value
25
- end
26
- xml["w"].ind(namespaced_values) if value
27
- end
6
+ tag :ind
28
7
 
8
+ attribute :end, expects: :integer
9
+ attribute :end_characters, expects: :integer, displays_as: :endChars
10
+ attribute :hanging, expects: :integer
11
+ attribute :hanging_characters, expects: :integer, displays_as: :hangingChars
12
+ attribute :first_line, expects: :integer
13
+ attribute :first_line_characters, expects: :integer, displays_as: :firstLineChars
14
+ attribute :start, expects: :integer
15
+ attribute :start_characters, expects: :integer, displays_as: :startChars
29
16
  end
30
17
  end
31
18
  end