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