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,164 +1,164 @@
1
- module Axlsx
2
-
3
- # The Cell Serializer class contains the logic for serializing cells based on their type.
4
- class CellSerializer
5
- class << self
6
- # Calls the proper serialization method based on type.
7
- # @param [Integer] row_index The index of the cell's row
8
- # @param [Integer] column_index The index of the cell's column
9
- # @param [String] str The string to apend serialization to.
10
- # @return [String]
11
- def to_xml_string(row_index, column_index, cell, str='')
12
- str << ('<c r="' << Axlsx::cell_r(column_index, row_index) << '" s="' << cell.style.to_s << '" ')
13
- return str << '/>' if cell.value.nil?
14
- method = cell.type
15
- self.send(method, cell, str)
16
- str << '</c>'
17
- end
18
-
19
- # builds an xml text run based on this cells attributes.
20
- # @param [String] str The string instance this run will be concated to.
21
- # @return [String]
22
- def run_xml_string(cell, str = '')
23
- if cell.is_text_run?
24
- valid = RichTextRun::INLINE_STYLES - [:value, :type]
25
- data = Hash[cell.instance_values.map{ |k, v| [k.to_sym, v] }]
26
- data = data.select { |key, value| valid.include?(key) && !value.nil? }
27
- RichText.new(cell.value.to_s, data).to_xml_string(str)
28
- elsif cell.contains_rich_text?
29
- cell.value.to_xml_string(str)
30
- else
31
- str << ('<t>' << cell.clean_value << '</t>')
32
- end
33
- str
34
- end
35
-
36
- # serializes cells that are type iso_8601
37
- # @param [Cell] cell The cell that is being serialized
38
- # @param [String] str The string the serialized content will be appended to.
39
- # @return [String]
40
- def iso_8601(cell, str='')
41
- value_serialization 'd', cell.value, str
42
- end
43
-
44
- # serializes cells that are type date
45
- # @param [Cell] cell The cell that is being serialized
46
- # @param [String] str The string the serialized content will be appended to.
47
- # @return [String]
48
- def date(cell, str='')
49
- value_serialization false, DateTimeConverter::date_to_serial(cell.value).to_s, str
50
- end
51
-
52
- # Serializes cells that are type time
53
- # @param [Cell] cell The cell that is being serialized
54
- # @param [String] str The string the serialized content will be appended to.
55
- # @return [String]
56
- def time(cell, str='')
57
- value_serialization false, DateTimeConverter::time_to_serial(cell.value).to_s, str
58
- end
59
-
60
- # Serializes cells that are type boolean
61
- # @param [Cell] cell The cell that is being serialized
62
- # @param [String] str The string the serialized content will be appended to.
63
- # @return [String]
64
- def boolean(cell, str='')
65
- value_serialization 'b', cell.value.to_s, str
66
- end
67
-
68
- # Serializes cells that are type float
69
- # @param [Cell] cell The cell that is being serialized
70
- # @param [String] str The string the serialized content will be appended to.
71
- # @return [String]
72
- def float(cell, str='')
73
- numeric cell, str
74
- end
75
-
76
- # Serializes cells that are type integer
77
- # @param [Cell] cell The cell that is being serialized
78
- # @param [String] str The string the serialized content will be appended to.
79
- # @return [String]
80
- def integer(cell, str = '')
81
- numeric cell, str
82
- end
83
-
84
- # Serializes cells that are type formula
85
- # @param [Cell] cell The cell that is being serialized
86
- # @param [String] str The string the serialized content will be appended to.
87
- # @return [String]
88
- def formula_serialization(cell, str='')
89
- str << ('t="str"><f>' << cell.clean_value.to_s.sub('=', '') << '</f>')
90
- str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
91
- end
92
-
93
- # Serializes cells that are type array formula
94
- # @param [Cell] cell The cell that is being serialized
95
- # @param [String] str The string the serialized content will be appended to.
96
- # @return [String]
97
- def array_formula_serialization(cell, str='')
98
- str << ('t="str">' << '<f t="array" ref="' << cell.r << '">' << cell.clean_value.to_s.sub('{=', '').sub(/}$/, '') << '</f>')
99
- str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
100
- end
101
-
102
- # Serializes cells that are type inline_string
103
- # @param [Cell] cell The cell that is being serialized
104
- # @param [String] str The string the serialized content will be appended to.
105
- # @return [String]
106
- def inline_string_serialization(cell, str = '')
107
- str << 't="inlineStr"><is>'
108
- run_xml_string cell, str
109
- str << '</is>'
110
- end
111
-
112
- # Serializes cells that are type string
113
- # @param [Cell] cell The cell that is being serialized
114
- # @param [String] str The string the serialized content will be appended to.
115
- # @return [String]
116
- def string(cell, str='')
117
- if cell.is_array_formula?
118
- array_formula_serialization cell, str
119
- elsif cell.is_formula?
120
- formula_serialization cell, str
121
- elsif !cell.ssti.nil?
122
- value_serialization 's', cell.ssti, str
123
- else
124
- inline_string_serialization cell, str
125
- end
126
- end
127
-
128
- # Serializes cells that are of the type richtext
129
- # @param [Cell] cell The cell that is being serialized
130
- # @param [String] str The string the serialized content will be appended to.
131
- # @return [String]
132
- def richtext(cell, str)
133
- if cell.ssti.nil?
134
- inline_string_serialization cell, str
135
- else
136
- value_serialization 's', cell.ssti, str
137
- end
138
- end
139
-
140
- # Serializes cells that are of the type text
141
- # @param [Cell] cell The cell that is being serialized
142
- # @param [String] str The string the serialized content will be appended to.
143
- # @return [String]
144
- def text(cell, str)
145
- if cell.ssti.nil?
146
- inline_string_serialization cell, str
147
- else
148
- value_serialization 's', cell.ssti, str
149
- end
150
- end
151
-
152
- private
153
-
154
- def numeric(cell, str = '')
155
- value_serialization 'n', cell.value, str
156
- end
157
-
158
- def value_serialization(serialization_type, serialization_value, str = '')
159
- str << ('t="' << serialization_type.to_s << '"') if serialization_type
160
- str << ('><v>' << serialization_value.to_s << '</v>')
161
- end
162
- end
163
- end
164
- end
1
+ module Axlsx
2
+
3
+ # The Cell Serializer class contains the logic for serializing cells based on their type.
4
+ class CellSerializer
5
+ class << self
6
+ # Calls the proper serialization method based on type.
7
+ # @param [Integer] row_index The index of the cell's row
8
+ # @param [Integer] column_index The index of the cell's column
9
+ # @param [String] str The string to apend serialization to.
10
+ # @return [String]
11
+ def to_xml_string(row_index, column_index, cell, str='')
12
+ str << ('<c r="' << Axlsx::cell_r(column_index, row_index) << '" s="' << cell.style.to_s << '" ')
13
+ return str << '/>' if cell.value.nil?
14
+ method = cell.type
15
+ self.send(method, cell, str)
16
+ str << '</c>'
17
+ end
18
+
19
+ # builds an xml text run based on this cells attributes.
20
+ # @param [String] str The string instance this run will be concated to.
21
+ # @return [String]
22
+ def run_xml_string(cell, str = '')
23
+ if cell.is_text_run?
24
+ valid = RichTextRun::INLINE_STYLES - [:value, :type]
25
+ data = Hash[Axlsx.instance_values_for(cell).map{ |k, v| [k.to_sym, v] }]
26
+ data = data.select { |key, value| valid.include?(key) && !value.nil? }
27
+ RichText.new(cell.value.to_s, data).to_xml_string(str)
28
+ elsif cell.contains_rich_text?
29
+ cell.value.to_xml_string(str)
30
+ else
31
+ str << ('<t>' << cell.clean_value << '</t>')
32
+ end
33
+ str
34
+ end
35
+
36
+ # serializes cells that are type iso_8601
37
+ # @param [Cell] cell The cell that is being serialized
38
+ # @param [String] str The string the serialized content will be appended to.
39
+ # @return [String]
40
+ def iso_8601(cell, str='')
41
+ value_serialization 'd', cell.value, str
42
+ end
43
+
44
+ # serializes cells that are type date
45
+ # @param [Cell] cell The cell that is being serialized
46
+ # @param [String] str The string the serialized content will be appended to.
47
+ # @return [String]
48
+ def date(cell, str='')
49
+ value_serialization false, DateTimeConverter::date_to_serial(cell.value).to_s, str
50
+ end
51
+
52
+ # Serializes cells that are type time
53
+ # @param [Cell] cell The cell that is being serialized
54
+ # @param [String] str The string the serialized content will be appended to.
55
+ # @return [String]
56
+ def time(cell, str='')
57
+ value_serialization false, DateTimeConverter::time_to_serial(cell.value).to_s, str
58
+ end
59
+
60
+ # Serializes cells that are type boolean
61
+ # @param [Cell] cell The cell that is being serialized
62
+ # @param [String] str The string the serialized content will be appended to.
63
+ # @return [String]
64
+ def boolean(cell, str='')
65
+ value_serialization 'b', cell.value.to_s, str
66
+ end
67
+
68
+ # Serializes cells that are type float
69
+ # @param [Cell] cell The cell that is being serialized
70
+ # @param [String] str The string the serialized content will be appended to.
71
+ # @return [String]
72
+ def float(cell, str='')
73
+ numeric cell, str
74
+ end
75
+
76
+ # Serializes cells that are type integer
77
+ # @param [Cell] cell The cell that is being serialized
78
+ # @param [String] str The string the serialized content will be appended to.
79
+ # @return [String]
80
+ def integer(cell, str = '')
81
+ numeric cell, str
82
+ end
83
+
84
+ # Serializes cells that are type formula
85
+ # @param [Cell] cell The cell that is being serialized
86
+ # @param [String] str The string the serialized content will be appended to.
87
+ # @return [String]
88
+ def formula_serialization(cell, str='')
89
+ str << ('t="str"><f>' << cell.clean_value.to_s.sub('=', '') << '</f>')
90
+ str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
91
+ end
92
+
93
+ # Serializes cells that are type array formula
94
+ # @param [Cell] cell The cell that is being serialized
95
+ # @param [String] str The string the serialized content will be appended to.
96
+ # @return [String]
97
+ def array_formula_serialization(cell, str='')
98
+ str << ('t="str">' << '<f t="array" ref="' << cell.r << '">' << cell.clean_value.to_s.sub('{=', '').sub(/}$/, '') << '</f>')
99
+ str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
100
+ end
101
+
102
+ # Serializes cells that are type inline_string
103
+ # @param [Cell] cell The cell that is being serialized
104
+ # @param [String] str The string the serialized content will be appended to.
105
+ # @return [String]
106
+ def inline_string_serialization(cell, str = '')
107
+ str << 't="inlineStr"><is>'
108
+ run_xml_string cell, str
109
+ str << '</is>'
110
+ end
111
+
112
+ # Serializes cells that are type string
113
+ # @param [Cell] cell The cell that is being serialized
114
+ # @param [String] str The string the serialized content will be appended to.
115
+ # @return [String]
116
+ def string(cell, str='')
117
+ if cell.is_array_formula?
118
+ array_formula_serialization cell, str
119
+ elsif cell.is_formula?
120
+ formula_serialization cell, str
121
+ elsif !cell.ssti.nil?
122
+ value_serialization 's', cell.ssti, str
123
+ else
124
+ inline_string_serialization cell, str
125
+ end
126
+ end
127
+
128
+ # Serializes cells that are of the type richtext
129
+ # @param [Cell] cell The cell that is being serialized
130
+ # @param [String] str The string the serialized content will be appended to.
131
+ # @return [String]
132
+ def richtext(cell, str)
133
+ if cell.ssti.nil?
134
+ inline_string_serialization cell, str
135
+ else
136
+ value_serialization 's', cell.ssti, str
137
+ end
138
+ end
139
+
140
+ # Serializes cells that are of the type text
141
+ # @param [Cell] cell The cell that is being serialized
142
+ # @param [String] str The string the serialized content will be appended to.
143
+ # @return [String]
144
+ def text(cell, str)
145
+ if cell.ssti.nil?
146
+ inline_string_serialization cell, str
147
+ else
148
+ value_serialization 's', cell.ssti, str
149
+ end
150
+ end
151
+
152
+ private
153
+
154
+ def numeric(cell, str = '')
155
+ value_serialization 'n', cell.value, str
156
+ end
157
+
158
+ def value_serialization(serialization_type, serialization_value, str = '')
159
+ str << ('t="' << serialization_type.to_s << '"') if serialization_type
160
+ str << ('><v>' << serialization_value.to_s << '</v>')
161
+ end
162
+ end
163
+ end
164
+ end
@@ -1,60 +1,60 @@
1
- module Axlsx
2
- # Conditional Format Value Object
3
- # Describes the values of the interpolation points in a gradient scale. This object is used by ColorScale, DataBar and IconSet classes
4
- #
5
- # @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
6
- # @see Worksheet#add_conditional_formatting
7
- # @see ConditionalFormattingRule#initialize
8
- #
9
- class Cfvo
10
-
11
- include Axlsx::OptionsParser
12
- include Axlsx::SerializedAttributes
13
-
14
- # Creates a new Cfvo object
15
- # @option options [Symbol] type The type of conditional formatting value object
16
- # @option options [Boolean] gte threshold value usage indicator
17
- # @option options [String] val The value of the conditional formatting object
18
- def initialize(options={})
19
- @gte = true
20
- parse_options options
21
- end
22
-
23
- serializable_attributes :type, :gte, :val
24
-
25
- # Type (ST_CfvoType)
26
- # The type of this conditional formatting value object. options are num, percent, max, min, formula and percentile
27
- # @return [Symbol]
28
- attr_reader :type
29
-
30
- # Type (xsd:boolean)
31
- # For icon sets, determines whether this threshold value uses the greater than or equal to operator. 0 indicates 'greater than' is used instead of 'greater than or equal to'.
32
- # The default value is true
33
- # @return [Boolean]
34
- attr_reader :gte
35
-
36
- # Type (ST_Xstring)
37
- # The value of the conditional formatting object
38
- # This library will accept any value so long as it supports to_s
39
- attr_reader :val
40
-
41
- # @see type
42
- def type=(v); Axlsx::validate_conditional_formatting_value_object_type(v); @type = v end
43
-
44
- # @see gte
45
- def gte=(v); Axlsx::validate_boolean(v); @gte = v end
46
-
47
- # @see val
48
- def val=(v)
49
- raise ArgumentError, "#{v.inspect} must respond to to_s" unless v.respond_to?(:to_s)
50
- @val = v.to_s
51
- end
52
-
53
- # serialize the Csvo object
54
- # @param [String] str
55
- # @return [String]
56
- def to_xml_string(str = '')
57
- serialized_tag('cfvo', str)
58
- end
59
- end
60
- end
1
+ module Axlsx
2
+ # Conditional Format Value Object
3
+ # Describes the values of the interpolation points in a gradient scale. This object is used by ColorScale, DataBar and IconSet classes
4
+ #
5
+ # @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
6
+ # @see Worksheet#add_conditional_formatting
7
+ # @see ConditionalFormattingRule#initialize
8
+ #
9
+ class Cfvo
10
+
11
+ include Axlsx::OptionsParser
12
+ include Axlsx::SerializedAttributes
13
+
14
+ # Creates a new Cfvo object
15
+ # @option options [Symbol] type The type of conditional formatting value object
16
+ # @option options [Boolean] gte threshold value usage indicator
17
+ # @option options [String] val The value of the conditional formatting object
18
+ def initialize(options={})
19
+ @gte = true
20
+ parse_options options
21
+ end
22
+
23
+ serializable_attributes :type, :gte, :val
24
+
25
+ # Type (ST_CfvoType)
26
+ # The type of this conditional formatting value object. options are num, percent, max, min, formula and percentile
27
+ # @return [Symbol]
28
+ attr_reader :type
29
+
30
+ # Type (xsd:boolean)
31
+ # For icon sets, determines whether this threshold value uses the greater than or equal to operator. 0 indicates 'greater than' is used instead of 'greater than or equal to'.
32
+ # The default value is true
33
+ # @return [Boolean]
34
+ attr_reader :gte
35
+
36
+ # Type (ST_Xstring)
37
+ # The value of the conditional formatting object
38
+ # This library will accept any value so long as it supports to_s
39
+ attr_reader :val
40
+
41
+ # @see type
42
+ def type=(v); Axlsx::validate_conditional_formatting_value_object_type(v); @type = v end
43
+
44
+ # @see gte
45
+ def gte=(v); Axlsx::validate_boolean(v); @gte = v end
46
+
47
+ # @see val
48
+ def val=(v)
49
+ raise ArgumentError, "#{v.inspect} must respond to to_s" unless v.respond_to?(:to_s)
50
+ @val = v.to_s
51
+ end
52
+
53
+ # serialize the Csvo object
54
+ # @param [String] str
55
+ # @return [String]
56
+ def to_xml_string(str = '')
57
+ serialized_tag('cfvo', str)
58
+ end
59
+ end
60
+ end
@@ -1,18 +1,18 @@
1
- module Axlsx
2
-
3
- #A collection of Cfvo objects that initializes with the required
4
- #first two items
5
- class Cfvos < SimpleTypedList
6
-
7
- def initialize
8
- super(Cfvo)
9
- end
10
-
11
- # Serialize the Cfvo object
12
- # @param [String] str
13
- # @return [String]
14
- def to_xml_string(str='')
15
- each { |cfvo| cfvo.to_xml_string(str) }
16
- end
17
- end
18
- end
1
+ module Axlsx
2
+
3
+ #A collection of Cfvo objects that initializes with the required
4
+ #first two items
5
+ class Cfvos < SimpleTypedList
6
+
7
+ def initialize
8
+ super(Cfvo)
9
+ end
10
+
11
+ # Serialize the Cfvo object
12
+ # @param [String] str
13
+ # @return [String]
14
+ def to_xml_string(str='')
15
+ each { |cfvo| cfvo.to_xml_string(str) }
16
+ end
17
+ end
18
+ end