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,58 +1,58 @@
1
- module Axlsx
2
-
3
- # A wraper class for comments that defines its on worksheet
4
- # serailization
5
- class WorksheetComments
6
-
7
- # Creates a new WorksheetComments object
8
- # param [Worksheet] worksheet The worksheet comments in thes object belong to
9
- def initialize(worksheet)
10
- raise ArugumentError, 'You must provide a worksheet' unless worksheet.is_a?(Worksheet)
11
- @worksheet = worksheet
12
- end
13
-
14
- attr_reader :worksheet
15
-
16
- # The comments for this worksheet.
17
- # @return [Comments]
18
- def comments
19
- @comments ||= Comments.new(worksheet)
20
- end
21
-
22
- # Adds a comment
23
- # @param [Hash] options
24
- # @see Comments#add_comment
25
- def add_comment(options={})
26
- comments.add_comment(options)
27
- end
28
-
29
- # The relationships defined by this objects comments collection
30
- # @return [Relationships]
31
- def relationships
32
- return [] unless has_comments?
33
- comments.relationships
34
- end
35
-
36
-
37
- # Helper method to tell us if there are comments in the comments collection
38
- # @return [Boolean]
39
- def has_comments?
40
- !comments.empty?
41
- end
42
-
43
- # The relationship id of the VML drawing that will render the comments.
44
- # @see Relationship#Id
45
- # @return [String]
46
- def drawing_rId
47
- comments.relationships.find{ |r| r.Type == VML_DRAWING_R }.Id
48
- end
49
-
50
- # Seraalize the object
51
- # @param [String] str
52
- # @return [String]
53
- def to_xml_string(str = '')
54
- return unless has_comments?
55
- str << "<legacyDrawing r:id='#{drawing_rId}' />"
56
- end
57
- end
58
- end
1
+ module Axlsx
2
+ # A wraper class for comments that defines its on worksheet
3
+ # serailization
4
+ class WorksheetComments
5
+ # Creates a new WorksheetComments object
6
+ # param [Worksheet] worksheet The worksheet comments in thes object belong to
7
+ def initialize(worksheet)
8
+ raise ArugumentError, 'You must provide a worksheet' unless worksheet.is_a?(Worksheet)
9
+
10
+ @worksheet = worksheet
11
+ end
12
+
13
+ attr_reader :worksheet
14
+
15
+ # The comments for this worksheet.
16
+ # @return [Comments]
17
+ def comments
18
+ @comments ||= Comments.new(worksheet)
19
+ end
20
+
21
+ # Adds a comment
22
+ # @param [Hash] options
23
+ # @see Comments#add_comment
24
+ def add_comment(options = {})
25
+ comments.add_comment(options)
26
+ end
27
+
28
+ # The relationships defined by this objects comments collection
29
+ # @return [Relationships]
30
+ def relationships
31
+ return [] unless has_comments?
32
+
33
+ comments.relationships
34
+ end
35
+
36
+ # Helper method to tell us if there are comments in the comments collection
37
+ # @return [Boolean]
38
+ def has_comments?
39
+ !comments.empty?
40
+ end
41
+
42
+ # The relationship id of the VML drawing that will render the comments.
43
+ # @see Relationship#Id
44
+ # @return [String]
45
+ def drawing_rId
46
+ comments.relationships.find { |r| r.Type == VML_DRAWING_R }.Id
47
+ end
48
+
49
+ # Seraalize the object
50
+ # @param [String] str
51
+ # @return [String]
52
+ def to_xml_string(str = '')
53
+ return unless has_comments?
54
+
55
+ str << "<legacyDrawing r:id='#{drawing_rId}' />"
56
+ end
57
+ end
58
+ end
@@ -1,58 +1,59 @@
1
- module Axlsx
2
-
3
- # This is a utility class for serialing the drawing node in a
4
- # worksheet. Drawing objects have their own serialization that exports
5
- # a drawing document. This is only for the single node in the
6
- # worksheet
7
- class WorksheetDrawing
8
-
9
- # Creates a new WorksheetDrawing
10
- # @param [Worksheet] worksheet
11
- def initialize(worksheet)
12
- raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
13
- @worksheet = worksheet
14
- @drawing = nil
15
- end
16
-
17
- attr_reader :worksheet
18
-
19
- attr_reader :drawing
20
-
21
- # adds a chart to the drawing object
22
- # @param [Class] chart_type The type of chart to add
23
- # @param [Hash] options Options to pass on to the drawing and chart
24
- # @see Worksheet#add_chart
25
- def add_chart(chart_type, options)
26
- @drawing ||= Drawing.new worksheet
27
- drawing.add_chart(chart_type, options)
28
- end
29
-
30
- # adds an image to the drawing object
31
- # @param [Hash] options Options to pass on to the drawing and image
32
- # @see Worksheet#add_image
33
- def add_image(options)
34
- @drawing ||= Drawing.new(worksheet)
35
- drawing.add_image(options)
36
- end
37
-
38
- # helper method to tell us if the drawing has something in it or not
39
- # @return [Boolean]
40
- def has_drawing?
41
- @drawing.is_a? Drawing
42
- end
43
-
44
- # The relationship instance for this drawing.
45
- # @return [Relationship]
46
- def relationship
47
- return unless has_drawing?
48
- Relationship.new(self, DRAWING_R, "../#{drawing.pn}")
49
- end
50
-
51
- # Serialize the drawing for the worksheet
52
- # @param [String] str
53
- def to_xml_string(str = '')
54
- return unless has_drawing?
55
- str << "<drawing r:id='#{relationship.Id}'/>"
56
- end
57
- end
58
- end
1
+ module Axlsx
2
+ # This is a utility class for serialing the drawing node in a
3
+ # worksheet. Drawing objects have their own serialization that exports
4
+ # a drawing document. This is only for the single node in the
5
+ # worksheet
6
+ class WorksheetDrawing
7
+ # Creates a new WorksheetDrawing
8
+ # @param [Worksheet] worksheet
9
+ def initialize(worksheet)
10
+ raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
11
+
12
+ @worksheet = worksheet
13
+ @drawing = nil
14
+ end
15
+
16
+ attr_reader :worksheet
17
+
18
+ attr_reader :drawing
19
+
20
+ # adds a chart to the drawing object
21
+ # @param [Class] chart_type The type of chart to add
22
+ # @param [Hash] options Options to pass on to the drawing and chart
23
+ # @see Worksheet#add_chart
24
+ def add_chart(chart_type, options)
25
+ @drawing ||= Drawing.new worksheet
26
+ drawing.add_chart(chart_type, options)
27
+ end
28
+
29
+ # adds an image to the drawing object
30
+ # @param [Hash] options Options to pass on to the drawing and image
31
+ # @see Worksheet#add_image
32
+ def add_image(options)
33
+ @drawing ||= Drawing.new(worksheet)
34
+ drawing.add_image(options)
35
+ end
36
+
37
+ # helper method to tell us if the drawing has something in it or not
38
+ # @return [Boolean]
39
+ def has_drawing?
40
+ @drawing.is_a? Drawing
41
+ end
42
+
43
+ # The relationship instance for this drawing.
44
+ # @return [Relationship]
45
+ def relationship
46
+ return unless has_drawing?
47
+
48
+ Relationship.new(self, DRAWING_R, "../#{drawing.pn}")
49
+ end
50
+
51
+ # Serialize the drawing for the worksheet
52
+ # @param [String] str
53
+ def to_xml_string(str = '')
54
+ return unless has_drawing?
55
+
56
+ str << "<drawing r:id='#{relationship.Id}'/>"
57
+ end
58
+ end
59
+ end
@@ -1,74 +1,73 @@
1
- module Axlsx
2
-
3
- # A worksheet hyperlink object. Note that this is not the same as a drawing hyperlink object.
4
- class WorksheetHyperlink
5
-
6
- include Axlsx::OptionsParser
7
- include Axlsx::Accessors
8
- include Axlsx::SerializedAttributes
9
- # Creates a new hyperlink object.
10
- # @note the preferred way to add hyperlinks to your worksheet is the Worksheet#add_hyperlink method
11
- # @param [Worksheet] worksheet the Worksheet that owns this hyperlink
12
- # @param [Hash] options options to use when creating this hyperlink
13
- # @option [String] display Display string, if different from string in string table. This is a property on the hyperlink object, but does not need to appear in the spreadsheet application UI.
14
- # @option [String] location Location within target. If target is a workbook (or this workbook) this shall refer to a sheet and cell or a defined name. Can also be an HTML anchor if target is HTML file.
15
- # @option [String] tooltip The tip to display when the user positions the mouse cursor over this hyperlink
16
- # @option [Symbol] target This is :external by default. If you set it to anything else, the location is interpreted to be the current workbook.
17
- # @option [String|Cell] ref The location of this hyperlink in the worksheet
18
- def initialize(worksheet, options={})
19
- DataTypeValidator.validate "Hyperlink.worksheet", [Worksheet], worksheet
20
- @worksheet = worksheet
21
- @target = :external
22
- parse_options options
23
- yield self if block_given?
24
- end
25
-
26
- string_attr_accessor :display, :location, :tooltip
27
-
28
- serializable_attributes :display, :tooltip, :ref
29
-
30
- #Cell location of hyperlink on worksheet.
31
- # @return [String]
32
- attr_reader :ref
33
-
34
- # Sets the target for this hyperlink. Anything other than :external instructs the library to treat the location as an in-workbook reference.
35
- # @param [Symbol] target
36
- def target=(target)
37
- @target = target
38
- end
39
-
40
- # Sets the cell location of this hyperlink in the worksheet
41
- # @param [String|Cell] cell_reference The string reference or cell that defines where this hyperlink shows in the worksheet.
42
- def ref=(cell_reference)
43
- cell_reference = cell_reference.r if cell_reference.is_a?(Cell)
44
- Axlsx::validate_string cell_reference
45
- @ref = cell_reference
46
- end
47
-
48
- # The relationship instance for this hyperlink.
49
- # A relationship is only required if `@target` is `:external`. If not, this method will simply return `nil`.
50
- # @see #target=
51
- # @return [Relationship]
52
- def relationship
53
- return unless @target == :external
54
- Relationship.new(self, HYPERLINK_R, location, :target_mode => :External)
55
- end
56
-
57
- # Seralize the object
58
- # @param [String] str
59
- # @return [String]
60
- def to_xml_string(str='')
61
- str << '<hyperlink '
62
- serialized_attributes str, location_or_id
63
- str << '/>'
64
- end
65
-
66
- # The values to be used in serialization based on the target.
67
- # location should only be specified for non-external targets.
68
- # r:id should only be specified for external targets.
69
- # @return [Hash]
70
- def location_or_id
71
- @target == :external ? { :"r:id" => relationship.Id } : { :location => Axlsx::coder.encode(location) }
72
- end
73
- end
74
- end
1
+ module Axlsx
2
+ # A worksheet hyperlink object. Note that this is not the same as a drawing hyperlink object.
3
+ class WorksheetHyperlink
4
+ include Axlsx::OptionsParser
5
+ include Axlsx::Accessors
6
+ include Axlsx::SerializedAttributes
7
+ # Creates a new hyperlink object.
8
+ # @note the preferred way to add hyperlinks to your worksheet is the Worksheet#add_hyperlink method
9
+ # @param [Worksheet] worksheet the Worksheet that owns this hyperlink
10
+ # @param [Hash] options options to use when creating this hyperlink
11
+ # @option [String] display Display string, if different from string in string table. This is a property on the hyperlink object, but does not need to appear in the spreadsheet application UI.
12
+ # @option [String] location Location within target. If target is a workbook (or this workbook) this shall refer to a sheet and cell or a defined name. Can also be an HTML anchor if target is HTML file.
13
+ # @option [String] tooltip The tip to display when the user positions the mouse cursor over this hyperlink
14
+ # @option [Symbol] target This is :external by default. If you set it to anything else, the location is interpreted to be the current workbook.
15
+ # @option [String|Cell] ref The location of this hyperlink in the worksheet
16
+ def initialize(worksheet, options = {})
17
+ DataTypeValidator.validate "Hyperlink.worksheet", [Worksheet], worksheet
18
+ @worksheet = worksheet
19
+ @target = :external
20
+ parse_options options
21
+ yield self if block_given?
22
+ end
23
+
24
+ string_attr_accessor :display, :location, :tooltip
25
+
26
+ serializable_attributes :display, :tooltip, :ref
27
+
28
+ # Cell location of hyperlink on worksheet.
29
+ # @return [String]
30
+ attr_reader :ref
31
+
32
+ # Sets the target for this hyperlink. Anything other than :external instructs the library to treat the location as an in-workbook reference.
33
+ # @param [Symbol] target
34
+ def target=(target)
35
+ @target = target
36
+ end
37
+
38
+ # Sets the cell location of this hyperlink in the worksheet
39
+ # @param [String|Cell] cell_reference The string reference or cell that defines where this hyperlink shows in the worksheet.
40
+ def ref=(cell_reference)
41
+ cell_reference = cell_reference.r if cell_reference.is_a?(Cell)
42
+ Axlsx::validate_string cell_reference
43
+ @ref = cell_reference
44
+ end
45
+
46
+ # The relationship instance for this hyperlink.
47
+ # A relationship is only required if `@target` is `:external`. If not, this method will simply return `nil`.
48
+ # @see #target=
49
+ # @return [Relationship]
50
+ def relationship
51
+ return unless @target == :external
52
+
53
+ Relationship.new(self, HYPERLINK_R, location, :target_mode => :External)
54
+ end
55
+
56
+ # Seralize the object
57
+ # @param [String] str
58
+ # @return [String]
59
+ def to_xml_string(str = '')
60
+ str << '<hyperlink '
61
+ serialized_attributes str, location_or_id
62
+ str << '/>'
63
+ end
64
+
65
+ # The values to be used in serialization based on the target.
66
+ # location should only be specified for non-external targets.
67
+ # r:id should only be specified for external targets.
68
+ # @return [Hash]
69
+ def location_or_id
70
+ @target == :external ? { :"r:id" => relationship.Id } : { :location => Axlsx::coder.encode(location) }
71
+ end
72
+ end
73
+ end
@@ -1,38 +1,38 @@
1
- module Axlsx
2
-
3
- #A collection of hyperlink objects for a worksheet
4
- class WorksheetHyperlinks < SimpleTypedList
5
-
6
- # Creates a new Hyperlinks collection
7
- # @param [Worksheet] worksheet the worksheet that owns these hyperlinks
8
- def initialize(worksheet)
9
- DataTypeValidator.validate "Hyperlinks.worksheet", [Worksheet], worksheet
10
- @worksheet = worksheet
11
- super WorksheetHyperlink
12
- end
13
-
14
- # Creates and adds a new hyperlink based on the options provided
15
- # @see WorksheetHyperlink#initialize
16
- # @return [WorksheetHyperlink]
17
- def add(options)
18
- self << WorksheetHyperlink.new(@worksheet, options)
19
- last
20
- end
21
-
22
- # The relationships required by this collection's hyperlinks
23
- # @return Array
24
- def relationships
25
- return [] if empty?
26
- map { |hyperlink| hyperlink.relationship }
27
- end
28
-
29
- # seralize the collection of hyperlinks
30
- # @return [String]
31
- def to_xml_string(str='')
32
- return if empty?
33
- str << '<hyperlinks>'
34
- each { |hyperlink| hyperlink.to_xml_string(str) }
35
- str << '</hyperlinks>'
36
- end
37
- end
38
- end
1
+ module Axlsx
2
+ # A collection of hyperlink objects for a worksheet
3
+ class WorksheetHyperlinks < SimpleTypedList
4
+ # Creates a new Hyperlinks collection
5
+ # @param [Worksheet] worksheet the worksheet that owns these hyperlinks
6
+ def initialize(worksheet)
7
+ DataTypeValidator.validate "Hyperlinks.worksheet", [Worksheet], worksheet
8
+ @worksheet = worksheet
9
+ super WorksheetHyperlink
10
+ end
11
+
12
+ # Creates and adds a new hyperlink based on the options provided
13
+ # @see WorksheetHyperlink#initialize
14
+ # @return [WorksheetHyperlink]
15
+ def add(options)
16
+ self << WorksheetHyperlink.new(@worksheet, options)
17
+ last
18
+ end
19
+
20
+ # The relationships required by this collection's hyperlinks
21
+ # @return Array
22
+ def relationships
23
+ return [] if empty?
24
+
25
+ map { |hyperlink| hyperlink.relationship }
26
+ end
27
+
28
+ # seralize the collection of hyperlinks
29
+ # @return [String]
30
+ def to_xml_string(str = '')
31
+ return if empty?
32
+
33
+ str << '<hyperlinks>'
34
+ each { |hyperlink| hyperlink.to_xml_string(str) }
35
+ str << '</hyperlinks>'
36
+ end
37
+ end
38
+ end