caxlsx 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +385 -354
  5. data/LICENSE +21 -21
  6. data/README.md +165 -168
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +299 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +91 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +107 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +398 -388
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +535 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +416 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +425 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  141. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  143. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  149. data/lib/axlsx.rb +204 -185
  150. data/lib/caxlsx.rb +2 -2
  151. data/lib/schema/dc.xsd +118 -118
  152. data/lib/schema/dcmitype.xsd +51 -51
  153. data/lib/schema/dcterms.xsd +331 -331
  154. data/lib/schema/dml-chartDrawing.xsd +146 -146
  155. data/lib/schema/dml-compatibility.xsd +14 -14
  156. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  157. data/lib/schema/dml-main.xsd +3048 -3048
  158. data/lib/schema/dml-picture.xsd +23 -23
  159. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  160. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  161. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  162. data/lib/schema/shared-bibliography.xsd +144 -144
  163. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  164. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  165. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  166. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  167. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  168. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  169. data/lib/schema/shared-relationshipReference.xsd +25 -25
  170. data/lib/schema/vml-main.xsd +569 -569
  171. data/lib/schema/vml-officeDrawing.xsd +509 -509
  172. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  173. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  174. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  175. data/lib/schema/xml.xsd +116 -116
  176. metadata +5 -252
  177. data/test/benchmark.rb +0 -72
  178. data/test/content_type/tc_content_type.rb +0 -76
  179. data/test/content_type/tc_default.rb +0 -16
  180. data/test/content_type/tc_override.rb +0 -14
  181. data/test/doc_props/tc_app.rb +0 -43
  182. data/test/doc_props/tc_core.rb +0 -42
  183. data/test/drawing/tc_area_chart.rb +0 -39
  184. data/test/drawing/tc_area_series.rb +0 -71
  185. data/test/drawing/tc_axes.rb +0 -8
  186. data/test/drawing/tc_axis.rb +0 -112
  187. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  188. data/test/drawing/tc_bar_chart.rb +0 -86
  189. data/test/drawing/tc_bar_series.rb +0 -46
  190. data/test/drawing/tc_bubble_chart.rb +0 -44
  191. data/test/drawing/tc_bubble_series.rb +0 -21
  192. data/test/drawing/tc_cat_axis.rb +0 -31
  193. data/test/drawing/tc_cat_axis_data.rb +0 -27
  194. data/test/drawing/tc_chart.rb +0 -123
  195. data/test/drawing/tc_d_lbls.rb +0 -57
  196. data/test/drawing/tc_data_source.rb +0 -23
  197. data/test/drawing/tc_drawing.rb +0 -80
  198. data/test/drawing/tc_graphic_frame.rb +0 -27
  199. data/test/drawing/tc_hyperlink.rb +0 -64
  200. data/test/drawing/tc_line_3d_chart.rb +0 -47
  201. data/test/drawing/tc_line_chart.rb +0 -39
  202. data/test/drawing/tc_line_series.rb +0 -71
  203. data/test/drawing/tc_marker.rb +0 -44
  204. data/test/drawing/tc_named_axis_data.rb +0 -27
  205. data/test/drawing/tc_num_data.rb +0 -31
  206. data/test/drawing/tc_num_val.rb +0 -29
  207. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  208. data/test/drawing/tc_pic.rb +0 -103
  209. data/test/drawing/tc_picture_locking.rb +0 -72
  210. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  211. data/test/drawing/tc_pie_series.rb +0 -33
  212. data/test/drawing/tc_scaling.rb +0 -36
  213. data/test/drawing/tc_scatter_chart.rb +0 -48
  214. data/test/drawing/tc_scatter_series.rb +0 -74
  215. data/test/drawing/tc_ser_axis.rb +0 -31
  216. data/test/drawing/tc_series.rb +0 -23
  217. data/test/drawing/tc_series_title.rb +0 -54
  218. data/test/drawing/tc_str_data.rb +0 -18
  219. data/test/drawing/tc_str_val.rb +0 -30
  220. data/test/drawing/tc_title.rb +0 -70
  221. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  222. data/test/drawing/tc_val_axis.rb +0 -24
  223. data/test/drawing/tc_view_3D.rb +0 -54
  224. data/test/drawing/tc_vml_drawing.rb +0 -25
  225. data/test/drawing/tc_vml_shape.rb +0 -106
  226. data/test/fixtures/image1.gif +0 -0
  227. data/test/fixtures/image1.jpeg +0 -0
  228. data/test/fixtures/image1.jpg +0 -0
  229. data/test/fixtures/image1.png +0 -0
  230. data/test/fixtures/image1_fake.jpg +0 -0
  231. data/test/profile.rb +0 -24
  232. data/test/rels/tc_relationship.rb +0 -52
  233. data/test/rels/tc_relationships.rb +0 -37
  234. data/test/stylesheet/tc_border.rb +0 -37
  235. data/test/stylesheet/tc_border_pr.rb +0 -32
  236. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  237. data/test/stylesheet/tc_cell_protection.rb +0 -29
  238. data/test/stylesheet/tc_cell_style.rb +0 -57
  239. data/test/stylesheet/tc_color.rb +0 -43
  240. data/test/stylesheet/tc_dxf.rb +0 -81
  241. data/test/stylesheet/tc_fill.rb +0 -18
  242. data/test/stylesheet/tc_font.rb +0 -133
  243. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  244. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  245. data/test/stylesheet/tc_num_fmt.rb +0 -30
  246. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  247. data/test/stylesheet/tc_styles.rb +0 -309
  248. data/test/stylesheet/tc_table_style.rb +0 -44
  249. data/test/stylesheet/tc_table_style_element.rb +0 -45
  250. data/test/stylesheet/tc_table_styles.rb +0 -29
  251. data/test/stylesheet/tc_xf.rb +0 -120
  252. data/test/tc_axlsx.rb +0 -109
  253. data/test/tc_helper.rb +0 -10
  254. data/test/tc_package.rb +0 -317
  255. data/test/util/tc_mime_type_utils.rb +0 -13
  256. data/test/util/tc_serialized_attributes.rb +0 -19
  257. data/test/util/tc_simple_typed_list.rb +0 -77
  258. data/test/util/tc_validators.rb +0 -210
  259. data/test/workbook/tc_defined_name.rb +0 -49
  260. data/test/workbook/tc_shared_strings_table.rb +0 -59
  261. data/test/workbook/tc_workbook.rb +0 -165
  262. data/test/workbook/tc_workbook_view.rb +0 -50
  263. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  264. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  265. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  266. data/test/workbook/worksheet/tc_break.rb +0 -49
  267. data/test/workbook/worksheet/tc_cell.rb +0 -465
  268. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  269. data/test/workbook/worksheet/tc_col.rb +0 -93
  270. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  271. data/test/workbook/worksheet/tc_comment.rb +0 -72
  272. data/test/workbook/worksheet/tc_comments.rb +0 -57
  273. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  274. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  275. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  276. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  277. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  278. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  279. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  280. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  281. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  282. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  283. data/test/workbook/worksheet/tc_pane.rb +0 -54
  284. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  285. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  286. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  287. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  288. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  289. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  290. data/test/workbook/worksheet/tc_row.rb +0 -160
  291. data/test/workbook/worksheet/tc_selection.rb +0 -55
  292. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  293. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  294. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  295. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  296. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  297. data/test/workbook/worksheet/tc_table.rb +0 -77
  298. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  299. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  300. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,312 +1,312 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # Validate a value against a specific list of allowed values.
4
- class RestrictionValidator
5
- # Perform validation
6
- # @param [String] name The name of what is being validatied. This is included in the error message
7
- # @param [Array] choices The list of choices to validate against
8
- # @param [Any] v The value to be validated
9
- # @raise [ArgumentError] Raised if the value provided is not in the list of choices.
10
- # @return [Boolean] true if validation succeeds.
11
- def self.validate(name, choices, v)
12
- raise ArgumentError, (ERR_RESTRICTION % [v.to_s, name, choices.inspect]) unless choices.include?(v)
13
- true
14
- end
15
- end
16
-
17
- # Validate that the value provided is between a specific range
18
- # Note that no data conversions will be done for you!
19
- # Comparisons will be made using < and > or <= and <= when the inclusive parameter is true
20
- class RangeValidator
21
- # @param [String] name The name of what is being validated
22
- # @param [Any] min The minimum allowed value
23
- # @param [Any] max The maximum allowed value
24
- # @param [Any] value The value to be validated
25
- # @param [Boolean] inclusive Flag indicating if the comparison should be inclusive.
26
- def self.validate(name, min, max, value, inclusive = true)
27
- passes = if inclusive
28
- min <= value && value <= max
29
- else
30
- min < value && value < max
31
- end
32
- raise ArgumentError, (ERR_RANGE % [value.inspect, min.to_s, max.to_s, inclusive]) unless passes
33
- end
34
- end
35
- # Validates the value against the regular expression provided.
36
- class RegexValidator
37
- # @param [String] name The name of what is being validated. This is included in the output when the value is invalid
38
- # @param [Regexp] regex The regular expression to evaluate
39
- # @param [Any] v The value to validate.
40
- def self.validate(name, regex, v)
41
- raise ArgumentError, (ERR_REGEX % [v.inspect, regex.to_s]) unless (v.respond_to?(:to_s) && v.to_s.match(regex))
42
- end
43
- end
44
-
45
- # Validate that the class of the value provided is either an instance or the class of the allowed types and that any specified additional validation returns true.
46
- class DataTypeValidator
47
- # Perform validation
48
- # @param [String] name The name of what is being validated. This is included in the error message
49
- # @param [Array, Class] types A single class or array of classes that the value is validated against.
50
- # @param [Block] other Any block that must evaluate to true for the value to be valid
51
- # @raise [ArugumentError] Raised if the class of the value provided is not in the specified array of types or the block passed returns false
52
- # @return [Boolean] true if validation succeeds.
53
- # @see validate_boolean
54
- def self.validate(name, types, v, other=false)
55
- if other.is_a?(Proc)
56
- raise ArgumentError, (ERR_TYPE % [v.inspect, name, types.inspect]) unless other.call(v)
57
- end
58
- v_class = v.is_a?(Class) ? v : v.class
59
- Array(types).each do |t|
60
- return if v_class <= t
61
- end
62
- raise ArgumentError, (ERR_TYPE % [v.inspect, name, types.inspect])
63
- end
64
- end
65
-
66
-
67
- # Requires that the value can be converted to an integer
68
- # @para, [Any] v the value to validate
69
- # @raise [ArgumentError] raised if the value cannot be converted to an integer
70
- def self.validate_integerish(v)
71
- raise ArgumentError, (ERR_INTEGERISH % v.inspect) unless (v.respond_to?(:to_i) && v.to_i.is_a?(Integer))
72
- end
73
-
74
- # Requires that the value is between -54000000 and 54000000
75
- # @param [Any] v The value validated
76
- # @raise [ArgumentError] raised if the value cannot be converted to an integer between the allowed angle values for chart label rotation.
77
- # @return [Boolean] true if the data is valid
78
- def self.validate_angle(v)
79
- raise ArgumentError, (ERR_ANGLE % v.inspect) unless (v.to_i >= -5400000 && v.to_i <= 5400000)
80
- end
81
-
82
- # Validates an unsigned intger
83
- UINT_VALIDATOR = lambda { |arg| arg.respond_to?(:>=) && arg >= 0 }
84
-
85
- # Requires that the value is a Integer and is greater or equal to 0
86
- # @param [Any] v The value validated
87
- # @raise [ArgumentError] raised if the value is not a Integer value greater or equal to 0
88
- # @return [Boolean] true if the data is valid
89
- def self.validate_unsigned_int(v)
90
- DataTypeValidator.validate(:unsigned_int, Integer, v, UINT_VALIDATOR)
91
- end
92
-
93
- # Requires that the value is a Integer or Float and is greater or equal to 0
94
- # @param [Any] v The value validated
95
- # @raise [ArgumentError] raised if the value is not a Integer, Float value greater or equal to 0
96
- # @return [Boolean] true if the data is valid
97
- def self.validate_unsigned_numeric(v)
98
- DataTypeValidator.validate(:unsigned_numeric, Numeric, v, UINT_VALIDATOR)
99
- end
100
-
101
- # Requires that the value is a Integer
102
- # @param [Any] v The value validated
103
- def self.validate_int(v)
104
- DataTypeValidator.validate :signed_int, Integer, v
105
- end
106
-
107
- # Requires that the value is a form that can be evaluated as a boolean in an xml document.
108
- # The value must be an instance of String, Integer, Symbol, TrueClass or FalseClass and
109
- # it must be one of 0, 1, "true", "false", :true, :false, true, false, "0", or "1"
110
- # @param [Any] v The value validated
111
- def self.validate_boolean(v)
112
- DataTypeValidator.validate(:boolean, [String, Integer, Symbol, TrueClass, FalseClass], v, lambda { |arg| [0, 1, "true", "false", :true, :false, true, false, "0", "1"].include?(arg) })
113
- end
114
-
115
- # Requires that the value is a String
116
- # @param [Any] v The value validated
117
- def self.validate_string(v)
118
- DataTypeValidator.validate :string, String, v
119
- end
120
-
121
- # Requires that the value is a Float
122
- # @param [Any] v The value validated
123
- def self.validate_float(v)
124
- DataTypeValidator.validate :float, Float, v
125
- end
126
-
127
- # Requires that the value is a string containing a positive decimal number followed by one of the following units:
128
- # "mm", "cm", "in", "pt", "pc", "pi"
129
- def self.validate_number_with_unit(v)
130
- RegexValidator.validate "number_with_unit", /\A[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)\Z/, v
131
- end
132
-
133
- # Requires that the value is an integer ranging from 10 to 400.
134
- def self.validate_scale_10_400(v)
135
- DataTypeValidator.validate "page_scale", Integer, v, lambda { |arg| arg >= 10 && arg <= 400 }
136
- end
137
-
138
- # Requires that the value is an integer ranging from 10 to 400 or 0.
139
- def self.validate_scale_0_10_400(v)
140
- DataTypeValidator.validate "page_scale", Integer, v, lambda { |arg| arg == 0 || (arg >= 10 && arg <= 400) }
141
- end
142
-
143
- # Requires that the value is one of :default, :landscape, or :portrait.
144
- def self.validate_page_orientation(v)
145
- RestrictionValidator.validate "page_orientation", [:default, :landscape, :portrait], v
146
- end
147
- # Requires that the value is one of :none, :single, :double, :singleAccounting, :doubleAccounting
148
- def self.validate_cell_u(v)
149
- RestrictionValidator.validate "cell run style u", [:none, :single, :double, :singleAccounting, :doubleAccounting], v
150
- end
151
-
152
- # validates cell style family which must be between 1 and 5
153
- def self.validate_family(v)
154
- RestrictionValidator.validate "cell run style family", 1..5, v
155
- end
156
- # Requires that the value is valid pattern type.
157
- # valid pattern types must be one of :none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown,
158
- # :darkUp, :darkGrid, :darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, or :gray0625.
159
- # @param [Any] v The value validated
160
- def self.validate_pattern_type(v)
161
- RestrictionValidator.validate :pattern_type, [:none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown, :darkUp, :darkGrid,
162
- :darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, :gray0625], v
163
- end
164
-
165
- # Requires that the value is one of the ST_TimePeriod types
166
- # valid time period types are today, yesterday, tomorrow, last7Days,
167
- # thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek
168
- def self.validate_time_period_type(v)
169
- RestrictionValidator.validate :time_period_type, [:today, :yesterday, :tomorrow, :last7Days, :thisMonth, :lastMonth, :nextMonth, :thisWeek, :lastWeek, :nextWeek], v
170
- end
171
-
172
- # Requires that the value is one of the valid ST_IconSet types
173
- # Allowed values are: 3Arrows, 3ArrowsGray, 3Flags, 3TrafficLights1, 3TrafficLights2, 3Signs, 3Symbols, 3Symbols2, 4Arrows, 4ArrowsGray, 4RedToBlack, 4Rating, 4TrafficLights, 5Arrows, 5ArrowsGray, 5Rating, 5Quarters
174
- def self.validate_icon_set(v)
175
- RestrictionValidator.validate :iconSet, ["3Arrows", "3ArrowsGray", "3Flags", "3TrafficLights1", "3TrafficLights2", "3Signs", "3Symbols", "3Symbols2", "4Arrows", "4ArrowsGray", "4RedToBlack", "4Rating", "4TrafficLights", "5Arrows", "5ArrowsGray", "5Rating", "5Quarters"], v
176
- end
177
-
178
- # Requires that the value is valid conditional formatting type.
179
- # valid types must be one of expression, cellIs, colorScale,
180
- # dataBar, iconSet, top10, uniqueValues, duplicateValues,
181
- # containsText, notContainsText, beginsWith, endsWith,
182
- # containsBlanks, notContainsBlanks, containsErrors,
183
- # notContainsErrors, timePeriod, aboveAverage
184
- # @param [Any] v The value validated
185
- def self.validate_conditional_formatting_type(v)
186
- RestrictionValidator.validate :conditional_formatting_type, [:expression, :cellIs, :colorScale, :dataBar, :iconSet, :top10, :uniqueValues, :duplicateValues, :containsText, :notContainsText, :beginsWith, :endsWith, :containsBlanks, :notContainsBlanks, :containsErrors, :notContainsErrors, :timePeriod, :aboveAverage], v
187
- end
188
-
189
- # Requires thatt he value is a valid conditional formatting value object type.
190
- # valid types must be one of num, percent, max, min, formula and percentile
191
- def self.validate_conditional_formatting_value_object_type(v)
192
- RestrictionValidator.validate :conditional_formatting_value_object_type, [:num, :percent, :max, :min, :formula, :percentile], v
193
- end
194
-
195
- # Requires that the value is valid conditional formatting operator.
196
- # valid operators must be one of lessThan, lessThanOrEqual, equal,
197
- # notEqual, greaterThanOrEqual, greaterThan, between, notBetween,
198
- # containsText, notContains, beginsWith, endsWith
199
- # @param [Any] v The value validated
200
- def self.validate_conditional_formatting_operator(v)
201
- RestrictionValidator.validate :conditional_formatting_type, [:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween, :containsText, :notContains, :beginsWith, :endsWith], v
202
- end
203
-
204
- # Requires that the value is a gradient_type.
205
- # valid types are :linear and :path
206
- # @param [Any] v The value validated
207
- def self.validate_gradient_type(v)
208
- RestrictionValidator.validate :gradient_type, [:linear, :path], v
209
- end
210
-
211
- # Requires that the value is a valid scatterStyle
212
- # must be one of :none | :line | :lineMarker | :marker | :smooth | :smoothMarker
213
- # must be one of "none" | "line" | "lineMarker" | "marker" | "smooth" | "smoothMarker"
214
- # @param [Symbol|String] v the value to validate
215
- def self.validate_scatter_style(v)
216
- Axlsx::RestrictionValidator.validate "ScatterChart.scatterStyle", [:none, :line, :lineMarker, :marker, :smooth, :smoothMarker], v.to_sym
217
- end
218
- # Requires that the value is a valid horizontal_alignment
219
- # :general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed are allowed
220
- # @param [Any] v The value validated
221
- def self.validate_horizontal_alignment(v)
222
- RestrictionValidator.validate :horizontal_alignment, [:general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed], v
223
- end
224
-
225
- # Requires that the value is a valid vertical_alignment
226
- # :top, :center, :bottom, :justify, :distributed are allowed
227
- # @param [Any] v The value validated
228
- def self.validate_vertical_alignment(v)
229
- RestrictionValidator.validate :vertical_alignment, [:top, :center, :bottom, :justify, :distributed], v
230
- end
231
-
232
- # Requires that the value is a valid content_type
233
- # TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, DRAWING_CT, COMMENT_CT are allowed
234
- # @param [Any] v The value validated
235
- def self.validate_content_type(v)
236
- RestrictionValidator.validate :content_type, [TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, JPEG_CT, GIF_CT, PNG_CT, DRAWING_CT, COMMENT_CT, VML_DRAWING_CT, PIVOT_TABLE_CT, PIVOT_TABLE_CACHE_DEFINITION_CT], v
237
- end
238
-
239
- # Requires that the value is a valid relationship_type
240
- # XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R, IMAGE_R, HYPERLINK_R, SHARED_STRINGS_R are allowed
241
- # @param [Any] v The value validated
242
- def self.validate_relationship_type(v)
243
- RestrictionValidator.validate :relationship_type, [XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R, IMAGE_R, HYPERLINK_R, SHARED_STRINGS_R, COMMENT_R, VML_DRAWING_R, COMMENT_R_NULL, PIVOT_TABLE_R, PIVOT_TABLE_CACHE_DEFINITION_R], v
244
- end
245
-
246
- # Requires that the value is a valid table element type
247
- # :wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues are allowed
248
- # @param [Any] v The value validated
249
- def self.validate_table_element_type(v)
250
- RestrictionValidator.validate :table_element_type, [:wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues], v
251
- end
252
-
253
- # Requires that the value is a valid data_validation_error_style
254
- # :information, :stop, :warning
255
- # @param [Any] v The value validated
256
- def self.validate_data_validation_error_style(v)
257
- RestrictionValidator.validate :validate_data_validation_error_style, [:information, :stop, :warning], v
258
- end
259
-
260
- # Requires that the value is valid data validation operator.
261
- # valid operators must be one of lessThan, lessThanOrEqual, equal,
262
- # notEqual, greaterThanOrEqual, greaterThan, between, notBetween
263
- # @param [Any] v The value validated
264
- def self.validate_data_validation_operator(v)
265
- RestrictionValidator.validate :data_validation_operator, [:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween], v
266
- end
267
-
268
- # Requires that the value is valid data validation type.
269
- # valid types must be one of custom, data, decimal, list, none, textLength, time, whole
270
- # @param [Any] v The value validated
271
- def self.validate_data_validation_type(v)
272
- RestrictionValidator.validate :data_validation_type, [:custom, :data, :decimal, :list, :none, :textLength, :date, :time, :whole], v
273
- end
274
-
275
- # Requires that the value is a valid sheet view type.
276
- # valid types must be one of normal, page_break_preview, page_layout
277
- # @param [Any] v The value validated
278
- def self.validate_sheet_view_type(v)
279
- RestrictionValidator.validate :sheet_view_type, [:normal, :page_break_preview, :page_layout], v
280
- end
281
-
282
- # Requires that the value is a valid active pane type.
283
- # valid types must be one of bottom_left, bottom_right, top_left, top_right
284
- # @param [Any] v The value validated
285
- def self.validate_pane_type(v)
286
- RestrictionValidator.validate :active_pane_type, [:bottom_left, :bottom_right, :top_left, :top_right], v
287
- end
288
-
289
- # Requires that the value is a valid split state type.
290
- # valid types must be one of frozen, frozen_split, split
291
- # @param [Any] v The value validated
292
- def self.validate_split_state_type(v)
293
- RestrictionValidator.validate :split_state_type, [:frozen, :frozen_split, :split], v
294
- end
295
-
296
- # Requires that the value is a valid "display blanks as" type.
297
- # valid types must be one of gap, span, zero
298
- # @param [Any] v The value validated
299
- def self.validate_display_blanks_as(v)
300
- RestrictionValidator.validate :display_blanks_as, [:gap, :span, :zero], v
301
- end
302
-
303
- # Requires that the value is one of :visible, :hidden, :very_hidden
304
- def self.validate_view_visibility(v)
305
- RestrictionValidator.validate :visibility, [:visible, :hidden, :very_hidden], v
306
- end
307
-
308
- # Requires that the value is one of :default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x
309
- def self.validate_marker_symbol(v)
310
- RestrictionValidator.validate :marker_symbol, [:default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x], v
311
- end
312
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # Validate a value against a specific list of allowed values.
4
+ class RestrictionValidator
5
+ # Perform validation
6
+ # @param [String] name The name of what is being validatied. This is included in the error message
7
+ # @param [Array] choices The list of choices to validate against
8
+ # @param [Any] v The value to be validated
9
+ # @raise [ArgumentError] Raised if the value provided is not in the list of choices.
10
+ # @return [Boolean] true if validation succeeds.
11
+ def self.validate(name, choices, v)
12
+ raise ArgumentError, (ERR_RESTRICTION % [v.to_s, name, choices.inspect]) unless choices.include?(v)
13
+ true
14
+ end
15
+ end
16
+
17
+ # Validate that the value provided is between a specific range
18
+ # Note that no data conversions will be done for you!
19
+ # Comparisons will be made using < and > or <= and <= when the inclusive parameter is true
20
+ class RangeValidator
21
+ # @param [String] name The name of what is being validated
22
+ # @param [Any] min The minimum allowed value
23
+ # @param [Any] max The maximum allowed value
24
+ # @param [Any] value The value to be validated
25
+ # @param [Boolean] inclusive Flag indicating if the comparison should be inclusive.
26
+ def self.validate(name, min, max, value, inclusive = true)
27
+ passes = if inclusive
28
+ min <= value && value <= max
29
+ else
30
+ min < value && value < max
31
+ end
32
+ raise ArgumentError, (ERR_RANGE % [value.inspect, min.to_s, max.to_s, inclusive]) unless passes
33
+ end
34
+ end
35
+ # Validates the value against the regular expression provided.
36
+ class RegexValidator
37
+ # @param [String] name The name of what is being validated. This is included in the output when the value is invalid
38
+ # @param [Regexp] regex The regular expression to evaluate
39
+ # @param [Any] v The value to validate.
40
+ def self.validate(name, regex, v)
41
+ raise ArgumentError, (ERR_REGEX % [v.inspect, regex.to_s]) unless (v.respond_to?(:to_s) && v.to_s.match(regex))
42
+ end
43
+ end
44
+
45
+ # Validate that the class of the value provided is either an instance or the class of the allowed types and that any specified additional validation returns true.
46
+ class DataTypeValidator
47
+ # Perform validation
48
+ # @param [String] name The name of what is being validated. This is included in the error message
49
+ # @param [Array, Class] types A single class or array of classes that the value is validated against.
50
+ # @param [Block] other Any block that must evaluate to true for the value to be valid
51
+ # @raise [ArugumentError] Raised if the class of the value provided is not in the specified array of types or the block passed returns false
52
+ # @return [Boolean] true if validation succeeds.
53
+ # @see validate_boolean
54
+ def self.validate(name, types, v, other=false)
55
+ if other.is_a?(Proc)
56
+ raise ArgumentError, (ERR_TYPE % [v.inspect, name, types.inspect]) unless other.call(v)
57
+ end
58
+ v_class = v.is_a?(Class) ? v : v.class
59
+ Array(types).each do |t|
60
+ return if v_class <= t
61
+ end
62
+ raise ArgumentError, (ERR_TYPE % [v.inspect, name, types.inspect])
63
+ end
64
+ end
65
+
66
+
67
+ # Requires that the value can be converted to an integer
68
+ # @para, [Any] v the value to validate
69
+ # @raise [ArgumentError] raised if the value cannot be converted to an integer
70
+ def self.validate_integerish(v)
71
+ raise ArgumentError, (ERR_INTEGERISH % v.inspect) unless (v.respond_to?(:to_i) && v.to_i.is_a?(Integer))
72
+ end
73
+
74
+ # Requires that the value is between -54000000 and 54000000
75
+ # @param [Any] v The value validated
76
+ # @raise [ArgumentError] raised if the value cannot be converted to an integer between the allowed angle values for chart label rotation.
77
+ # @return [Boolean] true if the data is valid
78
+ def self.validate_angle(v)
79
+ raise ArgumentError, (ERR_ANGLE % v.inspect) unless (v.to_i >= -5400000 && v.to_i <= 5400000)
80
+ end
81
+
82
+ # Validates an unsigned intger
83
+ UINT_VALIDATOR = lambda { |arg| arg.respond_to?(:>=) && arg >= 0 }
84
+
85
+ # Requires that the value is a Integer and is greater or equal to 0
86
+ # @param [Any] v The value validated
87
+ # @raise [ArgumentError] raised if the value is not a Integer value greater or equal to 0
88
+ # @return [Boolean] true if the data is valid
89
+ def self.validate_unsigned_int(v)
90
+ DataTypeValidator.validate(:unsigned_int, Integer, v, UINT_VALIDATOR)
91
+ end
92
+
93
+ # Requires that the value is a Integer or Float and is greater or equal to 0
94
+ # @param [Any] v The value validated
95
+ # @raise [ArgumentError] raised if the value is not a Integer, Float value greater or equal to 0
96
+ # @return [Boolean] true if the data is valid
97
+ def self.validate_unsigned_numeric(v)
98
+ DataTypeValidator.validate(:unsigned_numeric, Numeric, v, UINT_VALIDATOR)
99
+ end
100
+
101
+ # Requires that the value is a Integer
102
+ # @param [Any] v The value validated
103
+ def self.validate_int(v)
104
+ DataTypeValidator.validate :signed_int, Integer, v
105
+ end
106
+
107
+ # Requires that the value is a form that can be evaluated as a boolean in an xml document.
108
+ # The value must be an instance of String, Integer, Symbol, TrueClass or FalseClass and
109
+ # it must be one of 0, 1, "true", "false", :true, :false, true, false, "0", or "1"
110
+ # @param [Any] v The value validated
111
+ def self.validate_boolean(v)
112
+ DataTypeValidator.validate(:boolean, [String, Integer, Symbol, TrueClass, FalseClass], v, lambda { |arg| [0, 1, "true", "false", :true, :false, true, false, "0", "1"].include?(arg) })
113
+ end
114
+
115
+ # Requires that the value is a String
116
+ # @param [Any] v The value validated
117
+ def self.validate_string(v)
118
+ DataTypeValidator.validate :string, String, v
119
+ end
120
+
121
+ # Requires that the value is a Float
122
+ # @param [Any] v The value validated
123
+ def self.validate_float(v)
124
+ DataTypeValidator.validate :float, Float, v
125
+ end
126
+
127
+ # Requires that the value is a string containing a positive decimal number followed by one of the following units:
128
+ # "mm", "cm", "in", "pt", "pc", "pi"
129
+ def self.validate_number_with_unit(v)
130
+ RegexValidator.validate "number_with_unit", /\A[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)\Z/, v
131
+ end
132
+
133
+ # Requires that the value is an integer ranging from 10 to 400.
134
+ def self.validate_scale_10_400(v)
135
+ DataTypeValidator.validate "page_scale", Integer, v, lambda { |arg| arg >= 10 && arg <= 400 }
136
+ end
137
+
138
+ # Requires that the value is an integer ranging from 10 to 400 or 0.
139
+ def self.validate_scale_0_10_400(v)
140
+ DataTypeValidator.validate "page_scale", Integer, v, lambda { |arg| arg == 0 || (arg >= 10 && arg <= 400) }
141
+ end
142
+
143
+ # Requires that the value is one of :default, :landscape, or :portrait.
144
+ def self.validate_page_orientation(v)
145
+ RestrictionValidator.validate "page_orientation", [:default, :landscape, :portrait], v
146
+ end
147
+ # Requires that the value is one of :none, :single, :double, :singleAccounting, :doubleAccounting
148
+ def self.validate_cell_u(v)
149
+ RestrictionValidator.validate "cell run style u", [:none, :single, :double, :singleAccounting, :doubleAccounting], v
150
+ end
151
+
152
+ # validates cell style family which must be between 1 and 5
153
+ def self.validate_family(v)
154
+ RestrictionValidator.validate "cell run style family", 1..5, v
155
+ end
156
+ # Requires that the value is valid pattern type.
157
+ # valid pattern types must be one of :none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown,
158
+ # :darkUp, :darkGrid, :darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, or :gray0625.
159
+ # @param [Any] v The value validated
160
+ def self.validate_pattern_type(v)
161
+ RestrictionValidator.validate :pattern_type, [:none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown, :darkUp, :darkGrid,
162
+ :darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, :gray0625], v
163
+ end
164
+
165
+ # Requires that the value is one of the ST_TimePeriod types
166
+ # valid time period types are today, yesterday, tomorrow, last7Days,
167
+ # thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek
168
+ def self.validate_time_period_type(v)
169
+ RestrictionValidator.validate :time_period_type, [:today, :yesterday, :tomorrow, :last7Days, :thisMonth, :lastMonth, :nextMonth, :thisWeek, :lastWeek, :nextWeek], v
170
+ end
171
+
172
+ # Requires that the value is one of the valid ST_IconSet types
173
+ # Allowed values are: 3Arrows, 3ArrowsGray, 3Flags, 3TrafficLights1, 3TrafficLights2, 3Signs, 3Symbols, 3Symbols2, 4Arrows, 4ArrowsGray, 4RedToBlack, 4Rating, 4TrafficLights, 5Arrows, 5ArrowsGray, 5Rating, 5Quarters
174
+ def self.validate_icon_set(v)
175
+ RestrictionValidator.validate :iconSet, ["3Arrows", "3ArrowsGray", "3Flags", "3TrafficLights1", "3TrafficLights2", "3Signs", "3Symbols", "3Symbols2", "4Arrows", "4ArrowsGray", "4RedToBlack", "4Rating", "4TrafficLights", "5Arrows", "5ArrowsGray", "5Rating", "5Quarters"], v
176
+ end
177
+
178
+ # Requires that the value is valid conditional formatting type.
179
+ # valid types must be one of expression, cellIs, colorScale,
180
+ # dataBar, iconSet, top10, uniqueValues, duplicateValues,
181
+ # containsText, notContainsText, beginsWith, endsWith,
182
+ # containsBlanks, notContainsBlanks, containsErrors,
183
+ # notContainsErrors, timePeriod, aboveAverage
184
+ # @param [Any] v The value validated
185
+ def self.validate_conditional_formatting_type(v)
186
+ RestrictionValidator.validate :conditional_formatting_type, [:expression, :cellIs, :colorScale, :dataBar, :iconSet, :top10, :uniqueValues, :duplicateValues, :containsText, :notContainsText, :beginsWith, :endsWith, :containsBlanks, :notContainsBlanks, :containsErrors, :notContainsErrors, :timePeriod, :aboveAverage], v
187
+ end
188
+
189
+ # Requires thatt he value is a valid conditional formatting value object type.
190
+ # valid types must be one of num, percent, max, min, formula and percentile
191
+ def self.validate_conditional_formatting_value_object_type(v)
192
+ RestrictionValidator.validate :conditional_formatting_value_object_type, [:num, :percent, :max, :min, :formula, :percentile], v
193
+ end
194
+
195
+ # Requires that the value is valid conditional formatting operator.
196
+ # valid operators must be one of lessThan, lessThanOrEqual, equal,
197
+ # notEqual, greaterThanOrEqual, greaterThan, between, notBetween,
198
+ # containsText, notContains, beginsWith, endsWith
199
+ # @param [Any] v The value validated
200
+ def self.validate_conditional_formatting_operator(v)
201
+ RestrictionValidator.validate :conditional_formatting_type, [:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween, :containsText, :notContains, :beginsWith, :endsWith], v
202
+ end
203
+
204
+ # Requires that the value is a gradient_type.
205
+ # valid types are :linear and :path
206
+ # @param [Any] v The value validated
207
+ def self.validate_gradient_type(v)
208
+ RestrictionValidator.validate :gradient_type, [:linear, :path], v
209
+ end
210
+
211
+ # Requires that the value is a valid scatterStyle
212
+ # must be one of :none | :line | :lineMarker | :marker | :smooth | :smoothMarker
213
+ # must be one of "none" | "line" | "lineMarker" | "marker" | "smooth" | "smoothMarker"
214
+ # @param [Symbol|String] v the value to validate
215
+ def self.validate_scatter_style(v)
216
+ Axlsx::RestrictionValidator.validate "ScatterChart.scatterStyle", [:none, :line, :lineMarker, :marker, :smooth, :smoothMarker], v.to_sym
217
+ end
218
+ # Requires that the value is a valid horizontal_alignment
219
+ # :general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed are allowed
220
+ # @param [Any] v The value validated
221
+ def self.validate_horizontal_alignment(v)
222
+ RestrictionValidator.validate :horizontal_alignment, [:general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed], v
223
+ end
224
+
225
+ # Requires that the value is a valid vertical_alignment
226
+ # :top, :center, :bottom, :justify, :distributed are allowed
227
+ # @param [Any] v The value validated
228
+ def self.validate_vertical_alignment(v)
229
+ RestrictionValidator.validate :vertical_alignment, [:top, :center, :bottom, :justify, :distributed], v
230
+ end
231
+
232
+ # Requires that the value is a valid content_type
233
+ # TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, DRAWING_CT, COMMENT_CT are allowed
234
+ # @param [Any] v The value validated
235
+ def self.validate_content_type(v)
236
+ RestrictionValidator.validate :content_type, [TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, JPEG_CT, GIF_CT, PNG_CT, DRAWING_CT, COMMENT_CT, VML_DRAWING_CT, PIVOT_TABLE_CT, PIVOT_TABLE_CACHE_DEFINITION_CT], v
237
+ end
238
+
239
+ # Requires that the value is a valid relationship_type
240
+ # XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R, IMAGE_R, HYPERLINK_R, SHARED_STRINGS_R are allowed
241
+ # @param [Any] v The value validated
242
+ def self.validate_relationship_type(v)
243
+ RestrictionValidator.validate :relationship_type, [XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R, IMAGE_R, HYPERLINK_R, SHARED_STRINGS_R, COMMENT_R, VML_DRAWING_R, COMMENT_R_NULL, PIVOT_TABLE_R, PIVOT_TABLE_CACHE_DEFINITION_R], v
244
+ end
245
+
246
+ # Requires that the value is a valid table element type
247
+ # :wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues are allowed
248
+ # @param [Any] v The value validated
249
+ def self.validate_table_element_type(v)
250
+ RestrictionValidator.validate :table_element_type, [:wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues], v
251
+ end
252
+
253
+ # Requires that the value is a valid data_validation_error_style
254
+ # :information, :stop, :warning
255
+ # @param [Any] v The value validated
256
+ def self.validate_data_validation_error_style(v)
257
+ RestrictionValidator.validate :validate_data_validation_error_style, [:information, :stop, :warning], v
258
+ end
259
+
260
+ # Requires that the value is valid data validation operator.
261
+ # valid operators must be one of lessThan, lessThanOrEqual, equal,
262
+ # notEqual, greaterThanOrEqual, greaterThan, between, notBetween
263
+ # @param [Any] v The value validated
264
+ def self.validate_data_validation_operator(v)
265
+ RestrictionValidator.validate :data_validation_operator, [:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween], v
266
+ end
267
+
268
+ # Requires that the value is valid data validation type.
269
+ # valid types must be one of custom, data, decimal, list, none, textLength, time, whole
270
+ # @param [Any] v The value validated
271
+ def self.validate_data_validation_type(v)
272
+ RestrictionValidator.validate :data_validation_type, [:custom, :data, :decimal, :list, :none, :textLength, :date, :time, :whole], v
273
+ end
274
+
275
+ # Requires that the value is a valid sheet view type.
276
+ # valid types must be one of normal, page_break_preview, page_layout
277
+ # @param [Any] v The value validated
278
+ def self.validate_sheet_view_type(v)
279
+ RestrictionValidator.validate :sheet_view_type, [:normal, :page_break_preview, :page_layout], v
280
+ end
281
+
282
+ # Requires that the value is a valid active pane type.
283
+ # valid types must be one of bottom_left, bottom_right, top_left, top_right
284
+ # @param [Any] v The value validated
285
+ def self.validate_pane_type(v)
286
+ RestrictionValidator.validate :active_pane_type, [:bottom_left, :bottom_right, :top_left, :top_right], v
287
+ end
288
+
289
+ # Requires that the value is a valid split state type.
290
+ # valid types must be one of frozen, frozen_split, split
291
+ # @param [Any] v The value validated
292
+ def self.validate_split_state_type(v)
293
+ RestrictionValidator.validate :split_state_type, [:frozen, :frozen_split, :split], v
294
+ end
295
+
296
+ # Requires that the value is a valid "display blanks as" type.
297
+ # valid types must be one of gap, span, zero
298
+ # @param [Any] v The value validated
299
+ def self.validate_display_blanks_as(v)
300
+ RestrictionValidator.validate :display_blanks_as, [:gap, :span, :zero], v
301
+ end
302
+
303
+ # Requires that the value is one of :visible, :hidden, :very_hidden
304
+ def self.validate_view_visibility(v)
305
+ RestrictionValidator.validate :visibility, [:visible, :hidden, :very_hidden], v
306
+ end
307
+
308
+ # Requires that the value is one of :default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x
309
+ def self.validate_marker_symbol(v)
310
+ RestrictionValidator.validate :marker_symbol, [:default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x], v
311
+ end
312
+ end