caxlsx 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +385 -354
  5. data/LICENSE +21 -21
  6. data/README.md +165 -168
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +299 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +91 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +107 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +398 -388
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +535 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +416 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +425 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  141. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  143. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  149. data/lib/axlsx.rb +204 -185
  150. data/lib/caxlsx.rb +2 -2
  151. data/lib/schema/dc.xsd +118 -118
  152. data/lib/schema/dcmitype.xsd +51 -51
  153. data/lib/schema/dcterms.xsd +331 -331
  154. data/lib/schema/dml-chartDrawing.xsd +146 -146
  155. data/lib/schema/dml-compatibility.xsd +14 -14
  156. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  157. data/lib/schema/dml-main.xsd +3048 -3048
  158. data/lib/schema/dml-picture.xsd +23 -23
  159. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  160. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  161. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  162. data/lib/schema/shared-bibliography.xsd +144 -144
  163. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  164. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  165. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  166. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  167. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  168. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  169. data/lib/schema/shared-relationshipReference.xsd +25 -25
  170. data/lib/schema/vml-main.xsd +569 -569
  171. data/lib/schema/vml-officeDrawing.xsd +509 -509
  172. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  173. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  174. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  175. data/lib/schema/xml.xsd +116 -116
  176. metadata +5 -252
  177. data/test/benchmark.rb +0 -72
  178. data/test/content_type/tc_content_type.rb +0 -76
  179. data/test/content_type/tc_default.rb +0 -16
  180. data/test/content_type/tc_override.rb +0 -14
  181. data/test/doc_props/tc_app.rb +0 -43
  182. data/test/doc_props/tc_core.rb +0 -42
  183. data/test/drawing/tc_area_chart.rb +0 -39
  184. data/test/drawing/tc_area_series.rb +0 -71
  185. data/test/drawing/tc_axes.rb +0 -8
  186. data/test/drawing/tc_axis.rb +0 -112
  187. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  188. data/test/drawing/tc_bar_chart.rb +0 -86
  189. data/test/drawing/tc_bar_series.rb +0 -46
  190. data/test/drawing/tc_bubble_chart.rb +0 -44
  191. data/test/drawing/tc_bubble_series.rb +0 -21
  192. data/test/drawing/tc_cat_axis.rb +0 -31
  193. data/test/drawing/tc_cat_axis_data.rb +0 -27
  194. data/test/drawing/tc_chart.rb +0 -123
  195. data/test/drawing/tc_d_lbls.rb +0 -57
  196. data/test/drawing/tc_data_source.rb +0 -23
  197. data/test/drawing/tc_drawing.rb +0 -80
  198. data/test/drawing/tc_graphic_frame.rb +0 -27
  199. data/test/drawing/tc_hyperlink.rb +0 -64
  200. data/test/drawing/tc_line_3d_chart.rb +0 -47
  201. data/test/drawing/tc_line_chart.rb +0 -39
  202. data/test/drawing/tc_line_series.rb +0 -71
  203. data/test/drawing/tc_marker.rb +0 -44
  204. data/test/drawing/tc_named_axis_data.rb +0 -27
  205. data/test/drawing/tc_num_data.rb +0 -31
  206. data/test/drawing/tc_num_val.rb +0 -29
  207. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  208. data/test/drawing/tc_pic.rb +0 -103
  209. data/test/drawing/tc_picture_locking.rb +0 -72
  210. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  211. data/test/drawing/tc_pie_series.rb +0 -33
  212. data/test/drawing/tc_scaling.rb +0 -36
  213. data/test/drawing/tc_scatter_chart.rb +0 -48
  214. data/test/drawing/tc_scatter_series.rb +0 -74
  215. data/test/drawing/tc_ser_axis.rb +0 -31
  216. data/test/drawing/tc_series.rb +0 -23
  217. data/test/drawing/tc_series_title.rb +0 -54
  218. data/test/drawing/tc_str_data.rb +0 -18
  219. data/test/drawing/tc_str_val.rb +0 -30
  220. data/test/drawing/tc_title.rb +0 -70
  221. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  222. data/test/drawing/tc_val_axis.rb +0 -24
  223. data/test/drawing/tc_view_3D.rb +0 -54
  224. data/test/drawing/tc_vml_drawing.rb +0 -25
  225. data/test/drawing/tc_vml_shape.rb +0 -106
  226. data/test/fixtures/image1.gif +0 -0
  227. data/test/fixtures/image1.jpeg +0 -0
  228. data/test/fixtures/image1.jpg +0 -0
  229. data/test/fixtures/image1.png +0 -0
  230. data/test/fixtures/image1_fake.jpg +0 -0
  231. data/test/profile.rb +0 -24
  232. data/test/rels/tc_relationship.rb +0 -52
  233. data/test/rels/tc_relationships.rb +0 -37
  234. data/test/stylesheet/tc_border.rb +0 -37
  235. data/test/stylesheet/tc_border_pr.rb +0 -32
  236. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  237. data/test/stylesheet/tc_cell_protection.rb +0 -29
  238. data/test/stylesheet/tc_cell_style.rb +0 -57
  239. data/test/stylesheet/tc_color.rb +0 -43
  240. data/test/stylesheet/tc_dxf.rb +0 -81
  241. data/test/stylesheet/tc_fill.rb +0 -18
  242. data/test/stylesheet/tc_font.rb +0 -133
  243. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  244. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  245. data/test/stylesheet/tc_num_fmt.rb +0 -30
  246. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  247. data/test/stylesheet/tc_styles.rb +0 -309
  248. data/test/stylesheet/tc_table_style.rb +0 -44
  249. data/test/stylesheet/tc_table_style_element.rb +0 -45
  250. data/test/stylesheet/tc_table_styles.rb +0 -29
  251. data/test/stylesheet/tc_xf.rb +0 -120
  252. data/test/tc_axlsx.rb +0 -109
  253. data/test/tc_helper.rb +0 -10
  254. data/test/tc_package.rb +0 -317
  255. data/test/util/tc_mime_type_utils.rb +0 -13
  256. data/test/util/tc_serialized_attributes.rb +0 -19
  257. data/test/util/tc_simple_typed_list.rb +0 -77
  258. data/test/util/tc_validators.rb +0 -210
  259. data/test/workbook/tc_defined_name.rb +0 -49
  260. data/test/workbook/tc_shared_strings_table.rb +0 -59
  261. data/test/workbook/tc_workbook.rb +0 -165
  262. data/test/workbook/tc_workbook_view.rb +0 -50
  263. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  264. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  265. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  266. data/test/workbook/worksheet/tc_break.rb +0 -49
  267. data/test/workbook/worksheet/tc_cell.rb +0 -465
  268. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  269. data/test/workbook/worksheet/tc_col.rb +0 -93
  270. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  271. data/test/workbook/worksheet/tc_comment.rb +0 -72
  272. data/test/workbook/worksheet/tc_comments.rb +0 -57
  273. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  274. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  275. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  276. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  277. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  278. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  279. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  280. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  281. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  282. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  283. data/test/workbook/worksheet/tc_pane.rb +0 -54
  284. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  285. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  286. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  287. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  288. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  289. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  290. data/test/workbook/worksheet/tc_row.rb +0 -160
  291. data/test/workbook/worksheet/tc_selection.rb +0 -55
  292. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  293. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  294. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  295. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  296. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  297. data/test/workbook/worksheet/tc_table.rb +0 -77
  298. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  299. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  300. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,220 +1,220 @@
1
- # -*- coding: utf-8 -*-
2
- module Axlsx
3
- # Conditional formatting rules specify formulas whose evaluations
4
- # format cells
5
- #
6
- # @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
7
- # @see Worksheet#add_conditional_formatting
8
- # @see ConditionalFormattingRule#initialize
9
- class ConditionalFormattingRule
10
-
11
- include Axlsx::OptionsParser
12
- include Axlsx::SerializedAttributes
13
-
14
- # Creates a new Conditional Formatting Rule object
15
- # @option options [Symbol] type The type of this formatting rule
16
- # @option options [Boolean] aboveAverage This is an aboveAverage rule
17
- # @option options [Boolean] bottom This is a bottom N rule.
18
- # @option options [Integer] dxfId The formatting id to apply to matches
19
- # @option options [Boolean] equalAverage Is the aboveAverage or belowAverage rule inclusive
20
- # @option options [Integer] priority The priority of the rule, 1 is highest
21
- # @option options [Symbol] operator Which operator to apply
22
- # @option options [String] text The value to apply a text operator against
23
- # @option options [Boolean] percent If a top/bottom N rule, evaluate as N% rather than N
24
- # @option options [Integer] rank If a top/bottom N rule, the value of N
25
- # @option options [Integer] stdDev The number of standard deviations above or below the average to match
26
- # @option options [Boolean] stopIfTrue Stop evaluating rules after this rule matches
27
- # @option options [Symbol] timePeriod The time period in a date occuring... rule
28
- # @option options [String] formula The formula to match against in i.e. an equal rule. Use a [minimum, maximum] array for cellIs between/notBetween conditionals.
29
- def initialize(options={})
30
- @color_scale = @data_bar = @icon_set = @formula = nil
31
- parse_options options
32
- end
33
-
34
- serializable_attributes :type, :aboveAverage, :bottom, :dxfId, :equalAverage,
35
- :priority, :operator, :text, :percent, :rank, :stdDev,
36
- :stopIfTrue, :timePeriod
37
-
38
- # Formula
39
- # The formula or value to match against (e.g. 5 with an operator of :greaterThan to specify cell_value > 5).
40
- # If the operator is :between or :notBetween, use an array to specify [minimum, maximum]
41
- # @return [String]
42
- attr_reader :formula
43
-
44
- # Type (ST_CfType)
45
- # options are expression, cellIs, colorScale, dataBar, iconSet,
46
- # top10, uniqueValues, duplicateValues, containsText,
47
- # notContainsText, beginsWith, endsWith, containsBlanks,
48
- # notContainsBlanks, containsErrors, notContainsErrors,
49
- # timePeriod, aboveAverage
50
- # @return [Symbol]
51
- attr_reader :type
52
-
53
- # Above average rule
54
- # Indicates whether the rule is an "above average" rule. True
55
- # indicates 'above average'. This attribute is ignored if type is
56
- # not equal to aboveAverage.
57
- # @return [Boolean]
58
- attr_reader :aboveAverage
59
-
60
- # Bottom N rule
61
- # @return [Boolean]
62
- attr_reader :bottom
63
-
64
- # Differential Formatting Id
65
- # @return [Integer]
66
- attr_reader :dxfId
67
-
68
- # Equal Average
69
- # Flag indicating whether the 'aboveAverage' and 'belowAverage'
70
- # criteria is inclusive of the average itself, or exclusive of
71
- # that value.
72
- # @return [Boolean]
73
- attr_reader :equalAverage
74
-
75
- # Operator
76
- # The operator in a "cell value is" conditional formatting
77
- # rule. This attribute is ignored if type is not equal to cellIs
78
- #
79
- # Operator must be one of lessThan, lessThanOrEqual, equal,
80
- # notEqual, greaterThanOrEqual, greaterThan, between, notBetween,
81
- # containsText, notContains, beginsWith, endsWith
82
- # @return [Symbol]
83
- attr_reader :operator
84
-
85
- # Priority
86
- # The priority of this conditional formatting rule. This value is
87
- # used to determine which format should be evaluated and
88
- # rendered. Lower numeric values are higher priority than higher
89
- # numeric values, where '1' is the highest priority.
90
- # @return [Integer]
91
- attr_reader :priority
92
-
93
- # Text
94
- # used in a "text contains" conditional formatting
95
- # rule.
96
- # @return [String]
97
- attr_reader :text
98
-
99
- # percent (Top 10 Percent)
100
- # indicates whether a "top/bottom n" rule is a "top/bottom n
101
- # percent" rule. This attribute is ignored if type is not equal to
102
- # top10.
103
- # @return [Boolean]
104
- attr_reader :percent
105
-
106
- # rank (Rank)
107
- # The value of "n" in a "top/bottom n" conditional formatting
108
- # rule. This attribute is ignored if type is not equal to top10.
109
- # @return [Integer]
110
- attr_reader :rank
111
-
112
- # stdDev (StdDev)
113
- # The number of standard deviations to include above or below the
114
- # average in the conditional formatting rule. This attribute is
115
- # ignored if type is not equal to aboveAverage. If a value is
116
- # present for stdDev and the rule type = aboveAverage, then this
117
- # rule is automatically an "above or below N standard deviations"
118
- # rule.
119
- # @return [Integer]
120
- attr_reader :stdDev
121
-
122
- # stopIfTrue (Stop If True)
123
- # If this flag is '1', no rules with lower priority shall be
124
- # applied over this rule, when this rule evaluates to true.
125
- # @return [Boolean]
126
- attr_reader :stopIfTrue
127
-
128
- # timePeriod (Time Period)
129
- # The applicable time period in a "date occurring…" conditional
130
- # formatting rule. This attribute is ignored if type is not equal
131
- # to timePeriod.
132
- # Valid types are today, yesterday, tomorrow, last7Days,
133
- # thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek
134
- attr_reader :timePeriod
135
-
136
-
137
- # colorScale (Color Scale)
138
- # The color scale to apply to this conditional formatting
139
- # @return [ColorScale]
140
- def color_scale
141
- @color_scale ||= ColorScale.new
142
- end
143
-
144
- # dataBar (Data Bar)
145
- # The data bar to apply to this conditional formatting
146
- # @return [DataBar]
147
- def data_bar
148
- @data_bar ||= DataBar.new
149
- end
150
-
151
- # iconSet (Icon Set)
152
- # The icon set to apply to this conditional formatting
153
- # @return [IconSet]
154
- def icon_set
155
- @icon_set ||= IconSet.new
156
- end
157
-
158
- # @see type
159
- def type=(v); Axlsx::validate_conditional_formatting_type(v); @type = v end
160
- # @see aboveAverage
161
- def aboveAverage=(v); Axlsx::validate_boolean(v); @aboveAverage = v end
162
- # @see bottom
163
- def bottom=(v); Axlsx::validate_boolean(v); @bottom = v end
164
- # @see dxfId
165
- def dxfId=(v); Axlsx::validate_unsigned_numeric(v); @dxfId = v end
166
- # @see equalAverage
167
- def equalAverage=(v); Axlsx::validate_boolean(v); @equalAverage = v end
168
- # @see priority
169
- def priority=(v); Axlsx::validate_unsigned_numeric(v); @priority = v end
170
- # @see operator
171
- def operator=(v); Axlsx::validate_conditional_formatting_operator(v); @operator = v end
172
- # @see text
173
- def text=(v); Axlsx::validate_string(v); @text = v end
174
- # @see percent
175
- def percent=(v); Axlsx::validate_boolean(v); @percent = v end
176
- # @see rank
177
- def rank=(v); Axlsx::validate_unsigned_numeric(v); @rank = v end
178
- # @see stdDev
179
- def stdDev=(v); Axlsx::validate_unsigned_numeric(v); @stdDev = v end
180
- # @see stopIfTrue
181
- def stopIfTrue=(v); Axlsx::validate_boolean(v); @stopIfTrue = v end
182
- # @see timePeriod
183
- def timePeriod=(v); Axlsx::validate_time_period_type(v); @timePeriod = v end
184
- # @see formula
185
- def formula=(v); [*v].each {|x| Axlsx::validate_string(x) }; @formula = [*v].map { |form| ::CGI.escapeHTML(form) } end
186
-
187
- # @see color_scale
188
- def color_scale=(v)
189
- Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.color_scale', ColorScale, v
190
- @color_scale = v
191
- end
192
-
193
- # @see data_bar
194
- def data_bar=(v)
195
- Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.data_bar', DataBar, v
196
- @data_bar = v
197
- end
198
-
199
- # @see icon_set
200
- def icon_set=(v)
201
- Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.icon_set', IconSet, v
202
- @icon_set = v
203
- end
204
-
205
-
206
- # Serializes the conditional formatting rule
207
- # @param [String] str
208
- # @return [String]
209
- def to_xml_string(str = '')
210
- str << '<cfRule '
211
- serialized_attributes str
212
- str << '>'
213
- str << ('<formula>' << [*self.formula].join('</formula><formula>') << '</formula>') if @formula
214
- @color_scale.to_xml_string(str) if @color_scale && @type == :colorScale
215
- @data_bar.to_xml_string(str) if @data_bar && @type == :dataBar
216
- @icon_set.to_xml_string(str) if @icon_set && @type == :iconSet
217
- str << '</cfRule>'
218
- end
219
- end
220
- end
1
+ # -*- coding: utf-8 -*-
2
+ module Axlsx
3
+ # Conditional formatting rules specify formulas whose evaluations
4
+ # format cells
5
+ #
6
+ # @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
7
+ # @see Worksheet#add_conditional_formatting
8
+ # @see ConditionalFormattingRule#initialize
9
+ class ConditionalFormattingRule
10
+
11
+ include Axlsx::OptionsParser
12
+ include Axlsx::SerializedAttributes
13
+
14
+ # Creates a new Conditional Formatting Rule object
15
+ # @option options [Symbol] type The type of this formatting rule
16
+ # @option options [Boolean] aboveAverage This is an aboveAverage rule
17
+ # @option options [Boolean] bottom This is a bottom N rule.
18
+ # @option options [Integer] dxfId The formatting id to apply to matches
19
+ # @option options [Boolean] equalAverage Is the aboveAverage or belowAverage rule inclusive
20
+ # @option options [Integer] priority The priority of the rule, 1 is highest
21
+ # @option options [Symbol] operator Which operator to apply
22
+ # @option options [String] text The value to apply a text operator against
23
+ # @option options [Boolean] percent If a top/bottom N rule, evaluate as N% rather than N
24
+ # @option options [Integer] rank If a top/bottom N rule, the value of N
25
+ # @option options [Integer] stdDev The number of standard deviations above or below the average to match
26
+ # @option options [Boolean] stopIfTrue Stop evaluating rules after this rule matches
27
+ # @option options [Symbol] timePeriod The time period in a date occuring... rule
28
+ # @option options [String] formula The formula to match against in i.e. an equal rule. Use a [minimum, maximum] array for cellIs between/notBetween conditionals.
29
+ def initialize(options={})
30
+ @color_scale = @data_bar = @icon_set = @formula = nil
31
+ parse_options options
32
+ end
33
+
34
+ serializable_attributes :type, :aboveAverage, :bottom, :dxfId, :equalAverage,
35
+ :priority, :operator, :text, :percent, :rank, :stdDev,
36
+ :stopIfTrue, :timePeriod
37
+
38
+ # Formula
39
+ # The formula or value to match against (e.g. 5 with an operator of :greaterThan to specify cell_value > 5).
40
+ # If the operator is :between or :notBetween, use an array to specify [minimum, maximum]
41
+ # @return [String]
42
+ attr_reader :formula
43
+
44
+ # Type (ST_CfType)
45
+ # options are expression, cellIs, colorScale, dataBar, iconSet,
46
+ # top10, uniqueValues, duplicateValues, containsText,
47
+ # notContainsText, beginsWith, endsWith, containsBlanks,
48
+ # notContainsBlanks, containsErrors, notContainsErrors,
49
+ # timePeriod, aboveAverage
50
+ # @return [Symbol]
51
+ attr_reader :type
52
+
53
+ # Above average rule
54
+ # Indicates whether the rule is an "above average" rule. True
55
+ # indicates 'above average'. This attribute is ignored if type is
56
+ # not equal to aboveAverage.
57
+ # @return [Boolean]
58
+ attr_reader :aboveAverage
59
+
60
+ # Bottom N rule
61
+ # @return [Boolean]
62
+ attr_reader :bottom
63
+
64
+ # Differential Formatting Id
65
+ # @return [Integer]
66
+ attr_reader :dxfId
67
+
68
+ # Equal Average
69
+ # Flag indicating whether the 'aboveAverage' and 'belowAverage'
70
+ # criteria is inclusive of the average itself, or exclusive of
71
+ # that value.
72
+ # @return [Boolean]
73
+ attr_reader :equalAverage
74
+
75
+ # Operator
76
+ # The operator in a "cell value is" conditional formatting
77
+ # rule. This attribute is ignored if type is not equal to cellIs
78
+ #
79
+ # Operator must be one of lessThan, lessThanOrEqual, equal,
80
+ # notEqual, greaterThanOrEqual, greaterThan, between, notBetween,
81
+ # containsText, notContains, beginsWith, endsWith
82
+ # @return [Symbol]
83
+ attr_reader :operator
84
+
85
+ # Priority
86
+ # The priority of this conditional formatting rule. This value is
87
+ # used to determine which format should be evaluated and
88
+ # rendered. Lower numeric values are higher priority than higher
89
+ # numeric values, where '1' is the highest priority.
90
+ # @return [Integer]
91
+ attr_reader :priority
92
+
93
+ # Text
94
+ # used in a "text contains" conditional formatting
95
+ # rule.
96
+ # @return [String]
97
+ attr_reader :text
98
+
99
+ # percent (Top 10 Percent)
100
+ # indicates whether a "top/bottom n" rule is a "top/bottom n
101
+ # percent" rule. This attribute is ignored if type is not equal to
102
+ # top10.
103
+ # @return [Boolean]
104
+ attr_reader :percent
105
+
106
+ # rank (Rank)
107
+ # The value of "n" in a "top/bottom n" conditional formatting
108
+ # rule. This attribute is ignored if type is not equal to top10.
109
+ # @return [Integer]
110
+ attr_reader :rank
111
+
112
+ # stdDev (StdDev)
113
+ # The number of standard deviations to include above or below the
114
+ # average in the conditional formatting rule. This attribute is
115
+ # ignored if type is not equal to aboveAverage. If a value is
116
+ # present for stdDev and the rule type = aboveAverage, then this
117
+ # rule is automatically an "above or below N standard deviations"
118
+ # rule.
119
+ # @return [Integer]
120
+ attr_reader :stdDev
121
+
122
+ # stopIfTrue (Stop If True)
123
+ # If this flag is '1', no rules with lower priority shall be
124
+ # applied over this rule, when this rule evaluates to true.
125
+ # @return [Boolean]
126
+ attr_reader :stopIfTrue
127
+
128
+ # timePeriod (Time Period)
129
+ # The applicable time period in a "date occurring…" conditional
130
+ # formatting rule. This attribute is ignored if type is not equal
131
+ # to timePeriod.
132
+ # Valid types are today, yesterday, tomorrow, last7Days,
133
+ # thisMonth, lastMonth, nextMonth, thisWeek, lastWeek, nextWeek
134
+ attr_reader :timePeriod
135
+
136
+
137
+ # colorScale (Color Scale)
138
+ # The color scale to apply to this conditional formatting
139
+ # @return [ColorScale]
140
+ def color_scale
141
+ @color_scale ||= ColorScale.new
142
+ end
143
+
144
+ # dataBar (Data Bar)
145
+ # The data bar to apply to this conditional formatting
146
+ # @return [DataBar]
147
+ def data_bar
148
+ @data_bar ||= DataBar.new
149
+ end
150
+
151
+ # iconSet (Icon Set)
152
+ # The icon set to apply to this conditional formatting
153
+ # @return [IconSet]
154
+ def icon_set
155
+ @icon_set ||= IconSet.new
156
+ end
157
+
158
+ # @see type
159
+ def type=(v); Axlsx::validate_conditional_formatting_type(v); @type = v end
160
+ # @see aboveAverage
161
+ def aboveAverage=(v); Axlsx::validate_boolean(v); @aboveAverage = v end
162
+ # @see bottom
163
+ def bottom=(v); Axlsx::validate_boolean(v); @bottom = v end
164
+ # @see dxfId
165
+ def dxfId=(v); Axlsx::validate_unsigned_numeric(v); @dxfId = v end
166
+ # @see equalAverage
167
+ def equalAverage=(v); Axlsx::validate_boolean(v); @equalAverage = v end
168
+ # @see priority
169
+ def priority=(v); Axlsx::validate_unsigned_numeric(v); @priority = v end
170
+ # @see operator
171
+ def operator=(v); Axlsx::validate_conditional_formatting_operator(v); @operator = v end
172
+ # @see text
173
+ def text=(v); Axlsx::validate_string(v); @text = v end
174
+ # @see percent
175
+ def percent=(v); Axlsx::validate_boolean(v); @percent = v end
176
+ # @see rank
177
+ def rank=(v); Axlsx::validate_unsigned_numeric(v); @rank = v end
178
+ # @see stdDev
179
+ def stdDev=(v); Axlsx::validate_unsigned_numeric(v); @stdDev = v end
180
+ # @see stopIfTrue
181
+ def stopIfTrue=(v); Axlsx::validate_boolean(v); @stopIfTrue = v end
182
+ # @see timePeriod
183
+ def timePeriod=(v); Axlsx::validate_time_period_type(v); @timePeriod = v end
184
+ # @see formula
185
+ def formula=(v); [*v].each {|x| Axlsx::validate_string(x) }; @formula = [*v].map { |form| ::CGI.escapeHTML(form) } end
186
+
187
+ # @see color_scale
188
+ def color_scale=(v)
189
+ Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.color_scale', ColorScale, v
190
+ @color_scale = v
191
+ end
192
+
193
+ # @see data_bar
194
+ def data_bar=(v)
195
+ Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.data_bar', DataBar, v
196
+ @data_bar = v
197
+ end
198
+
199
+ # @see icon_set
200
+ def icon_set=(v)
201
+ Axlsx::DataTypeValidator.validate 'conditional_formatting_rule.icon_set', IconSet, v
202
+ @icon_set = v
203
+ end
204
+
205
+
206
+ # Serializes the conditional formatting rule
207
+ # @param [String] str
208
+ # @return [String]
209
+ def to_xml_string(str = '')
210
+ str << '<cfRule '
211
+ serialized_attributes str
212
+ str << '>'
213
+ str << ('<formula>' << [*self.formula].join('</formula><formula>') << '</formula>') if @formula
214
+ @color_scale.to_xml_string(str) if @color_scale && @type == :colorScale
215
+ @data_bar.to_xml_string(str) if @data_bar && @type == :dataBar
216
+ @icon_set.to_xml_string(str) if @icon_set && @type == :iconSet
217
+ str << '</cfRule>'
218
+ end
219
+ end
220
+ end
@@ -1,25 +1,25 @@
1
- module Axlsx
2
-
3
- # A simple, self serializing class for storing conditional formattings
4
- class ConditionalFormattings < SimpleTypedList
5
-
6
- # creates a new Tables object
7
- def initialize(worksheet)
8
- raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
9
- super ConditionalFormatting
10
- @worksheet = worksheet
11
- end
12
-
13
- # The worksheet that owns this collection of tables
14
- # @return [Worksheet]
15
- attr_reader :worksheet
16
-
17
- # serialize the conditional formattings
18
- def to_xml_string(str = "")
19
- return if empty?
20
- each { |item| item.to_xml_string(str) }
21
- end
22
- end
23
-
24
- end
25
-
1
+ module Axlsx
2
+
3
+ # A simple, self serializing class for storing conditional formattings
4
+ class ConditionalFormattings < SimpleTypedList
5
+
6
+ # creates a new Tables object
7
+ def initialize(worksheet)
8
+ raise ArgumentError, "you must provide a worksheet" unless worksheet.is_a?(Worksheet)
9
+ super ConditionalFormatting
10
+ @worksheet = worksheet
11
+ end
12
+
13
+ # The worksheet that owns this collection of tables
14
+ # @return [Worksheet]
15
+ attr_reader :worksheet
16
+
17
+ # serialize the conditional formattings
18
+ def to_xml_string(str = "")
19
+ return if empty?
20
+ each { |item| item.to_xml_string(str) }
21
+ end
22
+ end
23
+
24
+ end
25
+