caxlsx 3.0.4 → 3.2.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +354 -334
  5. data/LICENSE +21 -21
  6. data/README.md +168 -170
  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 -151
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -143
  22. data/lib/axlsx/drawing/bar_series.rb +97 -80
  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 +276 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +90 -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 -98
  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 +97 -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 +388 -363
  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 -71
  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 +494 -420
  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 +410 -401
  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 +395 -370
  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/break.rb +35 -35
  98. data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  102. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  105. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  106. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  107. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  123. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -289
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  132. data/lib/axlsx/workbook/worksheet/row.rb +164 -162
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  134. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  137. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  138. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  139. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  140. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  141. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  142. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  143. data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -764
  144. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  145. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  148. data/lib/axlsx.rb +185 -170
  149. data/lib/caxlsx.rb +2 -2
  150. data/lib/schema/dc.xsd +118 -118
  151. data/lib/schema/dcmitype.xsd +51 -51
  152. data/lib/schema/dcterms.xsd +331 -331
  153. data/lib/schema/dml-chartDrawing.xsd +146 -146
  154. data/lib/schema/dml-compatibility.xsd +14 -14
  155. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  156. data/lib/schema/dml-main.xsd +3048 -3048
  157. data/lib/schema/dml-picture.xsd +23 -23
  158. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  159. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  160. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  161. data/lib/schema/shared-bibliography.xsd +144 -144
  162. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  163. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  164. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  165. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  166. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  167. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  168. data/lib/schema/shared-relationshipReference.xsd +25 -25
  169. data/lib/schema/vml-main.xsd +569 -569
  170. data/lib/schema/vml-officeDrawing.xsd +509 -509
  171. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  172. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  173. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  174. data/lib/schema/xml.xsd +116 -116
  175. data/test/benchmark.rb +72 -72
  176. data/test/content_type/tc_content_type.rb +76 -76
  177. data/test/content_type/tc_default.rb +16 -16
  178. data/test/content_type/tc_override.rb +14 -14
  179. data/test/doc_props/tc_app.rb +43 -43
  180. data/test/doc_props/tc_core.rb +42 -42
  181. data/test/drawing/tc_area_chart.rb +39 -39
  182. data/test/drawing/tc_area_series.rb +71 -71
  183. data/test/drawing/tc_axes.rb +7 -7
  184. data/test/drawing/tc_axis.rb +112 -112
  185. data/test/drawing/tc_bar_3D_chart.rb +86 -71
  186. data/test/drawing/tc_bar_chart.rb +86 -71
  187. data/test/drawing/tc_bar_series.rb +46 -37
  188. data/test/drawing/tc_bubble_chart.rb +44 -44
  189. data/test/drawing/tc_bubble_series.rb +21 -21
  190. data/test/drawing/tc_cat_axis.rb +31 -31
  191. data/test/drawing/tc_cat_axis_data.rb +27 -27
  192. data/test/drawing/tc_chart.rb +123 -123
  193. data/test/drawing/tc_d_lbls.rb +57 -57
  194. data/test/drawing/tc_data_source.rb +23 -23
  195. data/test/drawing/tc_drawing.rb +80 -80
  196. data/test/drawing/tc_graphic_frame.rb +27 -27
  197. data/test/drawing/tc_hyperlink.rb +64 -64
  198. data/test/drawing/tc_line_3d_chart.rb +47 -47
  199. data/test/drawing/tc_line_chart.rb +39 -39
  200. data/test/drawing/tc_line_series.rb +71 -71
  201. data/test/drawing/tc_marker.rb +44 -44
  202. data/test/drawing/tc_named_axis_data.rb +27 -27
  203. data/test/drawing/tc_num_data.rb +31 -31
  204. data/test/drawing/tc_num_val.rb +29 -29
  205. data/test/drawing/tc_one_cell_anchor.rb +66 -66
  206. data/test/drawing/tc_pic.rb +103 -103
  207. data/test/drawing/tc_picture_locking.rb +72 -72
  208. data/test/drawing/tc_pie_3D_chart.rb +28 -28
  209. data/test/drawing/tc_pie_series.rb +33 -33
  210. data/test/drawing/tc_scaling.rb +36 -36
  211. data/test/drawing/tc_scatter_chart.rb +48 -48
  212. data/test/drawing/tc_scatter_series.rb +74 -56
  213. data/test/drawing/tc_ser_axis.rb +31 -31
  214. data/test/drawing/tc_series.rb +23 -23
  215. data/test/drawing/tc_series_title.rb +54 -54
  216. data/test/drawing/tc_str_data.rb +18 -18
  217. data/test/drawing/tc_str_val.rb +30 -30
  218. data/test/drawing/tc_title.rb +70 -70
  219. data/test/drawing/tc_two_cell_anchor.rb +36 -36
  220. data/test/drawing/tc_val_axis.rb +24 -24
  221. data/test/drawing/tc_view_3D.rb +54 -54
  222. data/test/drawing/tc_vml_drawing.rb +25 -25
  223. data/test/drawing/tc_vml_shape.rb +106 -106
  224. data/test/profile.rb +24 -24
  225. data/test/rels/tc_relationship.rb +52 -52
  226. data/test/rels/tc_relationships.rb +37 -37
  227. data/test/stylesheet/tc_border.rb +37 -37
  228. data/test/stylesheet/tc_border_pr.rb +32 -32
  229. data/test/stylesheet/tc_cell_alignment.rb +81 -81
  230. data/test/stylesheet/tc_cell_protection.rb +29 -29
  231. data/test/stylesheet/tc_cell_style.rb +57 -57
  232. data/test/stylesheet/tc_color.rb +43 -43
  233. data/test/stylesheet/tc_dxf.rb +81 -81
  234. data/test/stylesheet/tc_fill.rb +18 -18
  235. data/test/stylesheet/tc_font.rb +133 -133
  236. data/test/stylesheet/tc_gradient_fill.rb +72 -72
  237. data/test/stylesheet/tc_gradient_stop.rb +31 -31
  238. data/test/stylesheet/tc_num_fmt.rb +30 -30
  239. data/test/stylesheet/tc_pattern_fill.rb +43 -43
  240. data/test/stylesheet/tc_styles.rb +309 -261
  241. data/test/stylesheet/tc_table_style.rb +44 -44
  242. data/test/stylesheet/tc_table_style_element.rb +45 -45
  243. data/test/stylesheet/tc_table_styles.rb +29 -29
  244. data/test/stylesheet/tc_xf.rb +120 -120
  245. data/test/tc_axlsx.rb +109 -109
  246. data/test/tc_helper.rb +10 -12
  247. data/test/tc_package.rb +317 -264
  248. data/test/util/tc_mime_type_utils.rb +13 -13
  249. data/test/util/tc_serialized_attributes.rb +19 -19
  250. data/test/util/tc_simple_typed_list.rb +77 -77
  251. data/test/util/tc_validators.rb +210 -210
  252. data/test/workbook/tc_defined_name.rb +49 -49
  253. data/test/workbook/tc_shared_strings_table.rb +59 -59
  254. data/test/workbook/tc_workbook.rb +165 -160
  255. data/test/workbook/tc_workbook_view.rb +50 -50
  256. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
  257. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
  258. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
  259. data/test/workbook/worksheet/tc_break.rb +49 -49
  260. data/test/workbook/worksheet/tc_cell.rb +465 -453
  261. data/test/workbook/worksheet/tc_cfvo.rb +31 -31
  262. data/test/workbook/worksheet/tc_col.rb +93 -93
  263. data/test/workbook/worksheet/tc_color_scale.rb +58 -58
  264. data/test/workbook/worksheet/tc_comment.rb +72 -72
  265. data/test/workbook/worksheet/tc_comments.rb +57 -57
  266. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
  267. data/test/workbook/worksheet/tc_data_bar.rb +46 -46
  268. data/test/workbook/worksheet/tc_data_validation.rb +265 -265
  269. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
  270. data/test/workbook/worksheet/tc_header_footer.rb +151 -151
  271. data/test/workbook/worksheet/tc_icon_set.rb +45 -45
  272. data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
  273. data/test/workbook/worksheet/tc_page_margins.rb +97 -97
  274. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
  275. data/test/workbook/worksheet/tc_page_setup.rb +143 -143
  276. data/test/workbook/worksheet/tc_pane.rb +54 -54
  277. data/test/workbook/worksheet/tc_pivot_table.rb +180 -135
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
  279. data/test/workbook/worksheet/tc_print_options.rb +72 -72
  280. data/test/workbook/worksheet/tc_protected_range.rb +17 -17
  281. data/test/workbook/worksheet/tc_rich_text.rb +44 -44
  282. data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
  283. data/test/workbook/worksheet/tc_row.rb +160 -139
  284. data/test/workbook/worksheet/tc_selection.rb +55 -55
  285. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
  286. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
  287. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
  288. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
  289. data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
  290. data/test/workbook/worksheet/tc_table.rb +77 -67
  291. data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
  292. data/test/workbook/worksheet/tc_worksheet.rb +632 -601
  293. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
  294. metadata +11 -11
@@ -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