write_xlsx 1.09.4 → 1.09.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2053) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +108 -0
  3. data/.rubocop_todo.yml +445 -0
  4. data/Changes +3 -0
  5. data/Gemfile +2 -0
  6. data/Rakefile +14 -8
  7. data/examples/array_formula.rb +2 -2
  8. data/examples/autofilter.rb +13 -18
  9. data/examples/chart_area.rb +10 -10
  10. data/examples/chart_bar.rb +10 -10
  11. data/examples/chart_column.rb +10 -10
  12. data/examples/chart_combined.rb +2 -3
  13. data/examples/chart_data_labels.rb +23 -35
  14. data/examples/chart_data_table.rb +16 -16
  15. data/examples/chart_data_tools.rb +36 -42
  16. data/examples/chart_doughnut.rb +21 -25
  17. data/examples/chart_gauge.rb +17 -17
  18. data/examples/chart_line.rb +25 -26
  19. data/examples/chart_pareto.rb +3 -3
  20. data/examples/chart_pie.rb +15 -15
  21. data/examples/chart_radar.rb +30 -30
  22. data/examples/chart_scatter.rb +10 -10
  23. data/examples/chart_secondary_axis.rb +9 -9
  24. data/examples/chart_stock.rb +10 -11
  25. data/examples/chart_styles.rb +6 -7
  26. data/examples/colors.rb +26 -29
  27. data/examples/comments1.rb +1 -0
  28. data/examples/comments2.rb +85 -114
  29. data/examples/conditional_format.rb +159 -150
  30. data/examples/data_validate.rb +135 -122
  31. data/examples/date_time.rb +29 -29
  32. data/examples/defined_name.rb +5 -5
  33. data/examples/demo.rb +10 -12
  34. data/examples/diag_border.rb +4 -5
  35. data/examples/formats.rb +93 -105
  36. data/examples/headers.rb +2 -7
  37. data/examples/hyperlink1.rb +5 -6
  38. data/examples/ignore_errors.rb +1 -1
  39. data/examples/macros.rb +6 -6
  40. data/examples/merge1.rb +0 -3
  41. data/examples/merge2.rb +9 -12
  42. data/examples/merge3.rb +6 -7
  43. data/examples/merge4.rb +2 -4
  44. data/examples/merge5.rb +6 -6
  45. data/examples/merge6.rb +1 -1
  46. data/examples/outline.rb +8 -16
  47. data/examples/outline_collapsed.rb +6 -6
  48. data/examples/panes.rb +15 -15
  49. data/examples/properties.rb +9 -9
  50. data/examples/rich_strings.rb +19 -11
  51. data/examples/shape1.rb +9 -9
  52. data/examples/shape2.rb +19 -19
  53. data/examples/shape3.rb +6 -6
  54. data/examples/shape4.rb +9 -9
  55. data/examples/shape5.rb +8 -8
  56. data/examples/shape6.rb +8 -8
  57. data/examples/shape7.rb +14 -14
  58. data/examples/shape8.rb +14 -14
  59. data/examples/shape_all.rb +6 -6
  60. data/examples/sparklines1.rb +23 -24
  61. data/examples/sparklines2.rb +151 -151
  62. data/examples/tables.rb +86 -94
  63. data/examples/update_range_format_with_params.rb +4 -4
  64. data/lib/write_xlsx/chart/area.rb +8 -9
  65. data/lib/write_xlsx/chart/axis.rb +12 -24
  66. data/lib/write_xlsx/chart/bar.rb +4 -8
  67. data/lib/write_xlsx/chart/column.rb +3 -4
  68. data/lib/write_xlsx/chart/doughnut.rb +3 -2
  69. data/lib/write_xlsx/chart/line.rb +16 -17
  70. data/lib/write_xlsx/chart/pie.rb +13 -13
  71. data/lib/write_xlsx/chart/radar.rb +8 -9
  72. data/lib/write_xlsx/chart/scatter.rb +20 -23
  73. data/lib/write_xlsx/chart/series.rb +32 -45
  74. data/lib/write_xlsx/chart/stock.rb +29 -24
  75. data/lib/write_xlsx/chart.rb +183 -217
  76. data/lib/write_xlsx/chartsheet.rb +22 -31
  77. data/lib/write_xlsx/col_name.rb +2 -1
  78. data/lib/write_xlsx/colors.rb +1 -1
  79. data/lib/write_xlsx/compatibility.rb +14 -15
  80. data/lib/write_xlsx/drawing.rb +54 -55
  81. data/lib/write_xlsx/format.rb +52 -59
  82. data/lib/write_xlsx/formats.rb +1 -0
  83. data/lib/write_xlsx/gradient.rb +5 -9
  84. data/lib/write_xlsx/package/app.rb +12 -16
  85. data/lib/write_xlsx/package/button.rb +3 -3
  86. data/lib/write_xlsx/package/comments.rb +31 -36
  87. data/lib/write_xlsx/package/conditional_format.rb +90 -110
  88. data/lib/write_xlsx/package/content_types.rb +20 -21
  89. data/lib/write_xlsx/package/core.rb +5 -4
  90. data/lib/write_xlsx/package/custom.rb +7 -7
  91. data/lib/write_xlsx/package/metadata.rb +6 -5
  92. data/lib/write_xlsx/package/packager.rb +36 -22
  93. data/lib/write_xlsx/package/relationships.rb +1 -1
  94. data/lib/write_xlsx/package/shared_strings.rb +11 -11
  95. data/lib/write_xlsx/package/styles.rb +54 -68
  96. data/lib/write_xlsx/package/table.rb +77 -95
  97. data/lib/write_xlsx/package/theme.rb +3 -3
  98. data/lib/write_xlsx/package/vml.rb +24 -31
  99. data/lib/write_xlsx/package/xml_writer_simple.rb +19 -20
  100. data/lib/write_xlsx/shape.rb +20 -31
  101. data/lib/write_xlsx/sheets.rb +37 -46
  102. data/lib/write_xlsx/sparkline.rb +11 -20
  103. data/lib/write_xlsx/utility.rb +129 -142
  104. data/lib/write_xlsx/version.rb +1 -1
  105. data/lib/write_xlsx/workbook.rb +248 -299
  106. data/lib/write_xlsx/worksheet/cell_data.rb +41 -17
  107. data/lib/write_xlsx/worksheet/data_validation.rb +65 -73
  108. data/lib/write_xlsx/worksheet/hyperlink.rb +10 -16
  109. data/lib/write_xlsx/worksheet/page_setup.rb +9 -11
  110. data/lib/write_xlsx/worksheet.rb +434 -539
  111. data/lib/write_xlsx/zip_file_utils.rb +30 -32
  112. data/lib/write_xlsx.rb +1 -3
  113. data/write_xlsx.gemspec +23 -18
  114. metadata +50 -3881
  115. data/.gitattributes +0 -1
  116. data/.gitignore +0 -45
  117. data/.travis.yml +0 -75
  118. data/bin/extract_vba.rb +0 -34
  119. data/test/chart/test_add_series.rb +0 -190
  120. data/test/chart/test_process_names.rb +0 -27
  121. data/test/chart/test_write_a_latin.rb +0 -22
  122. data/test/chart/test_write_auto.rb +0 -15
  123. data/test/chart/test_write_ax_id.rb +0 -15
  124. data/test/chart/test_write_ax_pos.rb +0 -15
  125. data/test/chart/test_write_cross_ax.rb +0 -15
  126. data/test/chart/test_write_crosses.rb +0 -15
  127. data/test/chart/test_write_d_lbls.rb +0 -292
  128. data/test/chart/test_write_format_code.rb +0 -16
  129. data/test/chart/test_write_idx.rb +0 -15
  130. data/test/chart/test_write_label_align.rb +0 -15
  131. data/test/chart/test_write_label_offset.rb +0 -15
  132. data/test/chart/test_write_lang.rb +0 -15
  133. data/test/chart/test_write_layout.rb +0 -15
  134. data/test/chart/test_write_legend.rb +0 -16
  135. data/test/chart/test_write_legend_pos.rb +0 -23
  136. data/test/chart/test_write_major_gridlines.rb +0 -15
  137. data/test/chart/test_write_marker.rb +0 -17
  138. data/test/chart/test_write_marker_size.rb +0 -15
  139. data/test/chart/test_write_marker_value.rb +0 -16
  140. data/test/chart/test_write_num_cache.rb +0 -16
  141. data/test/chart/test_write_number_format.rb +0 -48
  142. data/test/chart/test_write_order.rb +0 -15
  143. data/test/chart/test_write_orientation.rb +0 -15
  144. data/test/chart/test_write_page_margins.rb +0 -15
  145. data/test/chart/test_write_page_setup.rb +0 -15
  146. data/test/chart/test_write_plot_vis_only.rb +0 -15
  147. data/test/chart/test_write_pt.rb +0 -16
  148. data/test/chart/test_write_pt_count.rb +0 -16
  149. data/test/chart/test_write_series_formula.rb +0 -16
  150. data/test/chart/test_write_style.rb +0 -41
  151. data/test/chart/test_write_symbol.rb +0 -16
  152. data/test/chart/test_write_tick_lbl_pos.rb +0 -16
  153. data/test/chart/test_write_v.rb +0 -16
  154. data/test/chartsheet/test_chartsheet01.rb +0 -31
  155. data/test/chartsheet/test_write_sheet_protection.rb +0 -91
  156. data/test/drawing/test_drawing_chart_01.rb +0 -54
  157. data/test/drawing/test_drawing_image_01.rb +0 -68
  158. data/test/drawing/test_drawing_shape_01.rb +0 -71
  159. data/test/drawing/test_drawing_shape_02.rb +0 -80
  160. data/test/drawing/test_drawing_shape_03.rb +0 -41
  161. data/test/drawing/test_drawing_shape_04.rb +0 -105
  162. data/test/drawing/test_drawing_shape_05.rb +0 -48
  163. data/test/drawing/test_drawing_shape_06.rb +0 -47
  164. data/test/drawing/test_drawing_shape_07.rb +0 -52
  165. data/test/drawing/test_write_a_graphic_frame_locks.rb +0 -18
  166. data/test/drawing/test_write_c_chart.rb +0 -18
  167. data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +0 -28
  168. data/test/drawing/test_write_c_nv_pr.rb +0 -18
  169. data/test/drawing/test_write_col.rb +0 -18
  170. data/test/drawing/test_write_col_off.rb +0 -18
  171. data/test/drawing/test_write_pos.rb +0 -18
  172. data/test/drawing/test_write_row.rb +0 -18
  173. data/test/drawing/test_write_row_off.rb +0 -18
  174. data/test/drawing/test_write_xdr_ext.rb +0 -18
  175. data/test/drawing/test_write_xfrm_extension.rb +0 -18
  176. data/test/drawing/test_write_xfrm_offset.rb +0 -18
  177. data/test/helper.rb +0 -206
  178. data/test/package/app/test_app01.rb +0 -44
  179. data/test/package/app/test_app02.rb +0 -46
  180. data/test/package/app/test_app03.rb +0 -53
  181. data/test/package/comments/test_comments_01.rb +0 -54
  182. data/test/package/comments/test_comments_02.rb +0 -54
  183. data/test/package/content_types/test_content_types.rb +0 -35
  184. data/test/package/content_types/test_write_default.rb +0 -13
  185. data/test/package/content_types/test_write_override.rb +0 -13
  186. data/test/package/core/test_core01.rb +0 -28
  187. data/test/package/core/test_core02.rb +0 -42
  188. data/test/package/relationships/test_relationships.rb +0 -28
  189. data/test/package/relationships/test_sheet_rels.rb +0 -22
  190. data/test/package/shared_strings/test_shared_strings01.rb +0 -30
  191. data/test/package/shared_strings/test_shared_strings02.rb +0 -30
  192. data/test/package/shared_strings/test_write_si.rb +0 -16
  193. data/test/package/styles/test_styles_01.rb +0 -60
  194. data/test/package/styles/test_styles_02.rb +0 -95
  195. data/test/package/styles/test_styles_03.rb +0 -81
  196. data/test/package/styles/test_styles_04.rb +0 -207
  197. data/test/package/styles/test_styles_05.rb +0 -141
  198. data/test/package/styles/test_styles_06.rb +0 -95
  199. data/test/package/styles/test_styles_07.rb +0 -95
  200. data/test/package/styles/test_styles_08.rb +0 -100
  201. data/test/package/styles/test_styles_09.rb +0 -86
  202. data/test/package/table/test_table01.rb +0 -42
  203. data/test/package/table/test_table02.rb +0 -44
  204. data/test/package/table/test_table03.rb +0 -48
  205. data/test/package/table/test_table04.rb +0 -46
  206. data/test/package/table/test_table05.rb +0 -46
  207. data/test/package/table/test_table06.rb +0 -52
  208. data/test/package/table/test_table07.rb +0 -47
  209. data/test/package/table/test_table08.rb +0 -53
  210. data/test/package/table/test_table09.rb +0 -65
  211. data/test/package/table/test_table10.rb +0 -45
  212. data/test/package/table/test_table11.rb +0 -60
  213. data/test/package/table/test_table12.rb +0 -60
  214. data/test/package/table/test_table13.rb +0 -69
  215. data/test/package/table/test_write_auto_filter.rb +0 -23
  216. data/test/package/table/test_write_table_column.rb +0 -22
  217. data/test/package/table/test_write_table_style_info.rb +0 -26
  218. data/test/package/vml/test_write_auto_fill.rb +0 -14
  219. data/test/package/vml/test_write_div.rb +0 -14
  220. data/test/package/vml/test_write_idmap.rb +0 -14
  221. data/test/package/vml/test_write_path.rb +0 -30
  222. data/test/package/vml/test_write_shapelayout.rb +0 -14
  223. data/test/package/vml/test_write_shapetype.rb +0 -22
  224. data/test/package/vml/test_write_stroke.rb +0 -14
  225. data/test/perl_output/a_simple.xlsx +0 -0
  226. data/test/perl_output/add_vba_project.xlsm +0 -0
  227. data/test/perl_output/array_formula.xlsx +0 -0
  228. data/test/perl_output/autofilter.xlsx +0 -0
  229. data/test/perl_output/background.xlsx +0 -0
  230. data/test/perl_output/chart_area.xlsx +0 -0
  231. data/test/perl_output/chart_bar.xlsx +0 -0
  232. data/test/perl_output/chart_column.xlsx +0 -0
  233. data/test/perl_output/chart_combined.xlsx +0 -0
  234. data/test/perl_output/chart_data_labels.xlsx +0 -0
  235. data/test/perl_output/chart_data_table.xlsx +0 -0
  236. data/test/perl_output/chart_data_tools.xlsx +0 -0
  237. data/test/perl_output/chart_doughnut.xlsx +0 -0
  238. data/test/perl_output/chart_gauge.xlsx +0 -0
  239. data/test/perl_output/chart_line.xlsx +0 -0
  240. data/test/perl_output/chart_pareto.xlsx +0 -0
  241. data/test/perl_output/chart_pie.xlsx +0 -0
  242. data/test/perl_output/chart_radar.xlsx +0 -0
  243. data/test/perl_output/chart_scatter.xlsx +0 -0
  244. data/test/perl_output/chart_scatter06.xlsx +0 -0
  245. data/test/perl_output/chart_secondary_axis.xlsx +0 -0
  246. data/test/perl_output/chart_stock.xlsx +0 -0
  247. data/test/perl_output/comments1.xlsx +0 -0
  248. data/test/perl_output/comments2.xlsx +0 -0
  249. data/test/perl_output/conditional_format.xlsx +0 -0
  250. data/test/perl_output/data_validate.xlsx +0 -0
  251. data/test/perl_output/date_time.xlsx +0 -0
  252. data/test/perl_output/defined_name.xlsx +0 -0
  253. data/test/perl_output/demo.xlsx +0 -0
  254. data/test/perl_output/diag_border.xlsx +0 -0
  255. data/test/perl_output/fit_to_pages.xlsx +0 -0
  256. data/test/perl_output/formats.xlsx +0 -0
  257. data/test/perl_output/headers.xlsx +0 -0
  258. data/test/perl_output/hide_first_sheet.xlsx +0 -0
  259. data/test/perl_output/hide_row_col.xlsx +0 -0
  260. data/test/perl_output/hide_sheet.xlsx +0 -0
  261. data/test/perl_output/hyperlink.xlsx +0 -0
  262. data/test/perl_output/ignore_errors.xlsx +0 -0
  263. data/test/perl_output/indent.xlsx +0 -0
  264. data/test/perl_output/keep_leading_zeros.xlsx +0 -0
  265. data/test/perl_output/merge1.xlsx +0 -0
  266. data/test/perl_output/merge2.xlsx +0 -0
  267. data/test/perl_output/merge3.xlsx +0 -0
  268. data/test/perl_output/merge4.xlsx +0 -0
  269. data/test/perl_output/merge5.xlsx +0 -0
  270. data/test/perl_output/merge6.xlsx +0 -0
  271. data/test/perl_output/multi_line.xlsx +0 -0
  272. data/test/perl_output/outline.xlsx +0 -0
  273. data/test/perl_output/outline_collapsed.xlsx +0 -0
  274. data/test/perl_output/panes.xlsx +0 -0
  275. data/test/perl_output/print_scale.xlsx +0 -0
  276. data/test/perl_output/properties.xlsx +0 -0
  277. data/test/perl_output/protection.xlsx +0 -0
  278. data/test/perl_output/regions.xlsx +0 -0
  279. data/test/perl_output/rich_strings.xlsx +0 -0
  280. data/test/perl_output/right_to_left.xlsx +0 -0
  281. data/test/perl_output/shape1.xlsx +0 -0
  282. data/test/perl_output/shape2.xlsx +0 -0
  283. data/test/perl_output/shape3.xlsx +0 -0
  284. data/test/perl_output/shape4.xlsx +0 -0
  285. data/test/perl_output/shape5.xlsx +0 -0
  286. data/test/perl_output/shape6.xlsx +0 -0
  287. data/test/perl_output/shape7.xlsx +0 -0
  288. data/test/perl_output/shape8.xlsx +0 -0
  289. data/test/perl_output/shape_all.xlsx +0 -0
  290. data/test/perl_output/sparklines1.xlsx +0 -0
  291. data/test/perl_output/sparklines2.xlsx +0 -0
  292. data/test/perl_output/stats.xlsx +0 -0
  293. data/test/perl_output/stats_ext.xlsx +0 -0
  294. data/test/perl_output/stocks.xlsx +0 -0
  295. data/test/perl_output/tab_colors.xlsx +0 -0
  296. data/test/perl_output/tables.xlsx +0 -0
  297. data/test/regression/_test_hyperlink31.rb +0 -26
  298. data/test/regression/disabled_test_vml04.rb +0 -41
  299. data/test/regression/images/black_150.jpg +0 -0
  300. data/test/regression/images/black_150.png +0 -0
  301. data/test/regression/images/black_150e.png +0 -0
  302. data/test/regression/images/black_300.jpg +0 -0
  303. data/test/regression/images/black_300.png +0 -0
  304. data/test/regression/images/black_300e.png +0 -0
  305. data/test/regression/images/black_72.jpg +0 -0
  306. data/test/regression/images/black_72.png +0 -0
  307. data/test/regression/images/black_72e.png +0 -0
  308. data/test/regression/images/black_96.jpg +0 -0
  309. data/test/regression/images/black_96.png +0 -0
  310. data/test/regression/images/blue.jpg +0 -0
  311. data/test/regression/images/blue.png +0 -0
  312. data/test/regression/images/grey.jpg +0 -0
  313. data/test/regression/images/grey.png +0 -0
  314. data/test/regression/images/happy.jpg +0 -0
  315. data/test/regression/images/issue32.png +0 -0
  316. data/test/regression/images/logo.gif +0 -0
  317. data/test/regression/images/logo.jpg +0 -0
  318. data/test/regression/images/logo.png +0 -0
  319. data/test/regression/images/mylogo.png +0 -0
  320. data/test/regression/images/red.bmp +0 -0
  321. data/test/regression/images/red.gif +0 -0
  322. data/test/regression/images/red.jpg +0 -0
  323. data/test/regression/images/red.png +0 -0
  324. data/test/regression/images/red2.png +0 -0
  325. data/test/regression/images/red_208.png +0 -0
  326. data/test/regression/images/red_64x20.png +0 -0
  327. data/test/regression/images/train.jpg +0 -0
  328. data/test/regression/images/yellow.jpg +0 -0
  329. data/test/regression/images/yellow.png +0 -0
  330. data/test/regression/images/zero_dpi.jpg +0 -0
  331. data/test/regression/klt.csv +0 -4
  332. data/test/regression/test_array_formula01.rb +0 -31
  333. data/test/regression/test_array_formula02.rb +0 -32
  334. data/test/regression/test_array_formula03.rb +0 -36
  335. data/test/regression/test_array_formula04.rb +0 -31
  336. data/test/regression/test_autofilter00.rb +0 -84
  337. data/test/regression/test_autofilter01.rb +0 -86
  338. data/test/regression/test_autofilter02.rb +0 -104
  339. data/test/regression/test_autofilter03.rb +0 -104
  340. data/test/regression/test_autofilter04.rb +0 -107
  341. data/test/regression/test_autofilter05.rb +0 -108
  342. data/test/regression/test_autofilter06.rb +0 -108
  343. data/test/regression/test_autofilter07.rb +0 -107
  344. data/test/regression/test_autofilter08.rb +0 -110
  345. data/test/regression/test_autofilter09.rb +0 -110
  346. data/test/regression/test_autofilter10.rb +0 -110
  347. data/test/regression/test_background01.rb +0 -23
  348. data/test/regression/test_background02.rb +0 -23
  349. data/test/regression/test_background03.rb +0 -24
  350. data/test/regression/test_background04.rb +0 -25
  351. data/test/regression/test_background05.rb +0 -25
  352. data/test/regression/test_background06.rb +0 -31
  353. data/test/regression/test_background07.rb +0 -37
  354. data/test/regression/test_button01.rb +0 -23
  355. data/test/regression/test_button02.rb +0 -29
  356. data/test/regression/test_button03.rb +0 -24
  357. data/test/regression/test_button04.rb +0 -25
  358. data/test/regression/test_button05.rb +0 -28
  359. data/test/regression/test_button06.rb +0 -28
  360. data/test/regression/test_button07.rb +0 -35
  361. data/test/regression/test_button08.rb +0 -28
  362. data/test/regression/test_button13.rb +0 -30
  363. data/test/regression/test_button14.rb +0 -31
  364. data/test/regression/test_chart_area01.rb +0 -45
  365. data/test/regression/test_chart_area02.rb +0 -45
  366. data/test/regression/test_chart_area03.rb +0 -45
  367. data/test/regression/test_chart_area04.rb +0 -44
  368. data/test/regression/test_chart_axis01.rb +0 -45
  369. data/test/regression/test_chart_axis02.rb +0 -45
  370. data/test/regression/test_chart_axis03.rb +0 -67
  371. data/test/regression/test_chart_axis04.rb +0 -52
  372. data/test/regression/test_chart_axis05.rb +0 -47
  373. data/test/regression/test_chart_axis06.rb +0 -49
  374. data/test/regression/test_chart_axis07.rb +0 -53
  375. data/test/regression/test_chart_axis08.rb +0 -52
  376. data/test/regression/test_chart_axis09.rb +0 -46
  377. data/test/regression/test_chart_axis10.rb +0 -52
  378. data/test/regression/test_chart_axis11.rb +0 -46
  379. data/test/regression/test_chart_axis12.rb +0 -46
  380. data/test/regression/test_chart_axis13.rb +0 -52
  381. data/test/regression/test_chart_axis14.rb +0 -66
  382. data/test/regression/test_chart_axis15.rb +0 -47
  383. data/test/regression/test_chart_axis16.rb +0 -69
  384. data/test/regression/test_chart_axis17.rb +0 -45
  385. data/test/regression/test_chart_axis18.rb +0 -43
  386. data/test/regression/test_chart_axis19.rb +0 -45
  387. data/test/regression/test_chart_axis20.rb +0 -45
  388. data/test/regression/test_chart_axis21.rb +0 -49
  389. data/test/regression/test_chart_axis22.rb +0 -44
  390. data/test/regression/test_chart_axis23.rb +0 -45
  391. data/test/regression/test_chart_axis24.rb +0 -45
  392. data/test/regression/test_chart_axis25.rb +0 -44
  393. data/test/regression/test_chart_axis26.rb +0 -46
  394. data/test/regression/test_chart_axis27.rb +0 -44
  395. data/test/regression/test_chart_axis28.rb +0 -44
  396. data/test/regression/test_chart_axis29.rb +0 -43
  397. data/test/regression/test_chart_axis30.rb +0 -40
  398. data/test/regression/test_chart_axis31.rb +0 -40
  399. data/test/regression/test_chart_axis32.rb +0 -40
  400. data/test/regression/test_chart_axis33.rb +0 -44
  401. data/test/regression/test_chart_axis34.rb +0 -43
  402. data/test/regression/test_chart_axis35.rb +0 -43
  403. data/test/regression/test_chart_axis36.rb +0 -43
  404. data/test/regression/test_chart_axis37.rb +0 -45
  405. data/test/regression/test_chart_axis38.rb +0 -43
  406. data/test/regression/test_chart_axis39.rb +0 -50
  407. data/test/regression/test_chart_axis40.rb +0 -44
  408. data/test/regression/test_chart_axis41.rb +0 -48
  409. data/test/regression/test_chart_axis42.rb +0 -44
  410. data/test/regression/test_chart_axis43.rb +0 -44
  411. data/test/regression/test_chart_axis44.rb +0 -54
  412. data/test/regression/test_chart_axis45.rb +0 -54
  413. data/test/regression/test_chart_axis46.rb +0 -54
  414. data/test/regression/test_chart_axis47.rb +0 -52
  415. data/test/regression/test_chart_axis48.rb +0 -53
  416. data/test/regression/test_chart_bar01.rb +0 -44
  417. data/test/regression/test_chart_bar02.rb +0 -54
  418. data/test/regression/test_chart_bar03.rb +0 -66
  419. data/test/regression/test_chart_bar04.rb +0 -69
  420. data/test/regression/test_chart_bar05.rb +0 -39
  421. data/test/regression/test_chart_bar06.rb +0 -49
  422. data/test/regression/test_chart_bar07.rb +0 -53
  423. data/test/regression/test_chart_bar08.rb +0 -43
  424. data/test/regression/test_chart_bar09.rb +0 -42
  425. data/test/regression/test_chart_bar10.rb +0 -46
  426. data/test/regression/test_chart_bar11.rb +0 -72
  427. data/test/regression/test_chart_bar12.rb +0 -38
  428. data/test/regression/test_chart_bar13.rb +0 -48
  429. data/test/regression/test_chart_bar14.rb +0 -64
  430. data/test/regression/test_chart_bar15.rb +0 -51
  431. data/test/regression/test_chart_bar16.rb +0 -49
  432. data/test/regression/test_chart_bar17.rb +0 -45
  433. data/test/regression/test_chart_bar18.rb +0 -56
  434. data/test/regression/test_chart_bar19.rb +0 -48
  435. data/test/regression/test_chart_bar20.rb +0 -45
  436. data/test/regression/test_chart_bar21.rb +0 -49
  437. data/test/regression/test_chart_bar22.rb +0 -66
  438. data/test/regression/test_chart_bar23.rb +0 -60
  439. data/test/regression/test_chart_bar24.rb +0 -44
  440. data/test/regression/test_chart_blank01.rb +0 -41
  441. data/test/regression/test_chart_blank02.rb +0 -41
  442. data/test/regression/test_chart_blank03.rb +0 -41
  443. data/test/regression/test_chart_blank04.rb +0 -41
  444. data/test/regression/test_chart_blank05.rb +0 -44
  445. data/test/regression/test_chart_blank06.rb +0 -41
  446. data/test/regression/test_chart_chartarea01.rb +0 -52
  447. data/test/regression/test_chart_chartarea02.rb +0 -52
  448. data/test/regression/test_chart_chartarea03.rb +0 -55
  449. data/test/regression/test_chart_chartarea04.rb +0 -71
  450. data/test/regression/test_chart_chartarea05.rb +0 -49
  451. data/test/regression/test_chart_chartarea06.rb +0 -49
  452. data/test/regression/test_chart_clustered01.rb +0 -65
  453. data/test/regression/test_chart_column01.rb +0 -39
  454. data/test/regression/test_chart_column02.rb +0 -44
  455. data/test/regression/test_chart_column03.rb +0 -44
  456. data/test/regression/test_chart_column04.rb +0 -44
  457. data/test/regression/test_chart_column05.rb +0 -39
  458. data/test/regression/test_chart_column06.rb +0 -45
  459. data/test/regression/test_chart_column07.rb +0 -40
  460. data/test/regression/test_chart_column08.rb +0 -42
  461. data/test/regression/test_chart_column09.rb +0 -39
  462. data/test/regression/test_chart_column10.rb +0 -39
  463. data/test/regression/test_chart_column11.rb +0 -41
  464. data/test/regression/test_chart_column12.rb +0 -37
  465. data/test/regression/test_chart_combined01.rb +0 -37
  466. data/test/regression/test_chart_combined02.rb +0 -43
  467. data/test/regression/test_chart_combined03.rb +0 -45
  468. data/test/regression/test_chart_combined04.rb +0 -47
  469. data/test/regression/test_chart_combined05.rb +0 -49
  470. data/test/regression/test_chart_combined06.rb +0 -49
  471. data/test/regression/test_chart_combined07.rb +0 -53
  472. data/test/regression/test_chart_combined08.rb +0 -65
  473. data/test/regression/test_chart_combined09.rb +0 -50
  474. data/test/regression/test_chart_combined10.rb +0 -43
  475. data/test/regression/test_chart_combined11.rb +0 -63
  476. data/test/regression/test_chart_crossing01.rb +0 -49
  477. data/test/regression/test_chart_crossing02.rb +0 -47
  478. data/test/regression/test_chart_crossing03.rb +0 -52
  479. data/test/regression/test_chart_crossing04.rb +0 -52
  480. data/test/regression/test_chart_crossing05.rb +0 -46
  481. data/test/regression/test_chart_crossing06.rb +0 -46
  482. data/test/regression/test_chart_data_labels01.rb +0 -47
  483. data/test/regression/test_chart_data_labels02.rb +0 -47
  484. data/test/regression/test_chart_data_labels03.rb +0 -47
  485. data/test/regression/test_chart_data_labels04.rb +0 -47
  486. data/test/regression/test_chart_data_labels05.rb +0 -50
  487. data/test/regression/test_chart_data_labels06.rb +0 -50
  488. data/test/regression/test_chart_data_labels07.rb +0 -40
  489. data/test/regression/test_chart_data_labels08.rb +0 -46
  490. data/test/regression/test_chart_data_labels09.rb +0 -47
  491. data/test/regression/test_chart_data_labels10.rb +0 -47
  492. data/test/regression/test_chart_data_labels11.rb +0 -37
  493. data/test/regression/test_chart_data_labels12.rb +0 -37
  494. data/test/regression/test_chart_data_labels13.rb +0 -37
  495. data/test/regression/test_chart_data_labels14.rb +0 -37
  496. data/test/regression/test_chart_data_labels15.rb +0 -37
  497. data/test/regression/test_chart_data_labels16.rb +0 -40
  498. data/test/regression/test_chart_data_labels17.rb +0 -63
  499. data/test/regression/test_chart_data_labels18.rb +0 -53
  500. data/test/regression/test_chart_data_labels19.rb +0 -53
  501. data/test/regression/test_chart_data_labels20.rb +0 -44
  502. data/test/regression/test_chart_data_labels21.rb +0 -48
  503. data/test/regression/test_chart_data_labels22.rb +0 -47
  504. data/test/regression/test_chart_data_labels23.rb +0 -50
  505. data/test/regression/test_chart_data_labels24.rb +0 -50
  506. data/test/regression/test_chart_data_labels25.rb +0 -61
  507. data/test/regression/test_chart_data_labels26.rb +0 -44
  508. data/test/regression/test_chart_data_labels27.rb +0 -44
  509. data/test/regression/test_chart_data_labels28.rb +0 -52
  510. data/test/regression/test_chart_data_labels29.rb +0 -43
  511. data/test/regression/test_chart_data_labels30.rb +0 -46
  512. data/test/regression/test_chart_data_labels31.rb +0 -49
  513. data/test/regression/test_chart_data_labels32.rb +0 -54
  514. data/test/regression/test_chart_data_labels33.rb +0 -52
  515. data/test/regression/test_chart_data_labels34.rb +0 -54
  516. data/test/regression/test_chart_data_labels35.rb +0 -46
  517. data/test/regression/test_chart_data_labels36.rb +0 -54
  518. data/test/regression/test_chart_data_labels37.rb +0 -51
  519. data/test/regression/test_chart_data_labels38.rb +0 -54
  520. data/test/regression/test_chart_data_labels39.rb +0 -53
  521. data/test/regression/test_chart_data_labels40.rb +0 -53
  522. data/test/regression/test_chart_data_labels41.rb +0 -54
  523. data/test/regression/test_chart_data_labels42.rb +0 -58
  524. data/test/regression/test_chart_data_labels43.rb +0 -58
  525. data/test/regression/test_chart_data_labels44.rb +0 -56
  526. data/test/regression/test_chart_data_labels45.rb +0 -57
  527. data/test/regression/test_chart_data_labels46.rb +0 -61
  528. data/test/regression/test_chart_data_labels47.rb +0 -61
  529. data/test/regression/test_chart_data_labels48.rb +0 -55
  530. data/test/regression/test_chart_data_labels49.rb +0 -55
  531. data/test/regression/test_chart_data_labels50.rb +0 -57
  532. data/test/regression/test_chart_date01.rb +0 -53
  533. data/test/regression/test_chart_date02.rb +0 -59
  534. data/test/regression/test_chart_date03.rb +0 -59
  535. data/test/regression/test_chart_date04.rb +0 -61
  536. data/test/regression/test_chart_date05.rb +0 -57
  537. data/test/regression/test_chart_display_units01.rb +0 -35
  538. data/test/regression/test_chart_display_units02.rb +0 -36
  539. data/test/regression/test_chart_display_units03.rb +0 -36
  540. data/test/regression/test_chart_display_units04.rb +0 -36
  541. data/test/regression/test_chart_display_units05.rb +0 -36
  542. data/test/regression/test_chart_display_units06.rb +0 -36
  543. data/test/regression/test_chart_display_units07.rb +0 -36
  544. data/test/regression/test_chart_display_units08.rb +0 -36
  545. data/test/regression/test_chart_display_units09.rb +0 -36
  546. data/test/regression/test_chart_display_units10.rb +0 -36
  547. data/test/regression/test_chart_display_units11.rb +0 -36
  548. data/test/regression/test_chart_display_units12.rb +0 -41
  549. data/test/regression/test_chart_doughnut01.rb +0 -39
  550. data/test/regression/test_chart_doughnut02.rb +0 -38
  551. data/test/regression/test_chart_doughnut03.rb +0 -38
  552. data/test/regression/test_chart_doughnut04.rb +0 -38
  553. data/test/regression/test_chart_doughnut05.rb +0 -38
  554. data/test/regression/test_chart_doughnut06.rb +0 -34
  555. data/test/regression/test_chart_doughnut07.rb +0 -37
  556. data/test/regression/test_chart_drop_lines01.rb +0 -46
  557. data/test/regression/test_chart_drop_lines02.rb +0 -51
  558. data/test/regression/test_chart_drop_lines03.rb +0 -46
  559. data/test/regression/test_chart_drop_lines04.rb +0 -64
  560. data/test/regression/test_chart_errorbars01.rb +0 -46
  561. data/test/regression/test_chart_errorbars02.rb +0 -56
  562. data/test/regression/test_chart_errorbars03.rb +0 -52
  563. data/test/regression/test_chart_errorbars04.rb +0 -47
  564. data/test/regression/test_chart_errorbars05.rb +0 -46
  565. data/test/regression/test_chart_errorbars06.rb +0 -46
  566. data/test/regression/test_chart_errorbars07.rb +0 -65
  567. data/test/regression/test_chart_errorbars08.rb +0 -50
  568. data/test/regression/test_chart_errorbars09.rb +0 -50
  569. data/test/regression/test_chart_errorbars10.rb +0 -52
  570. data/test/regression/test_chart_font01.rb +0 -54
  571. data/test/regression/test_chart_font02.rb +0 -56
  572. data/test/regression/test_chart_font03.rb +0 -59
  573. data/test/regression/test_chart_font04.rb +0 -57
  574. data/test/regression/test_chart_font05.rb +0 -54
  575. data/test/regression/test_chart_font06.rb +0 -84
  576. data/test/regression/test_chart_font07.rb +0 -44
  577. data/test/regression/test_chart_font08.rb +0 -44
  578. data/test/regression/test_chart_font09.rb +0 -40
  579. data/test/regression/test_chart_format01.rb +0 -44
  580. data/test/regression/test_chart_format02.rb +0 -45
  581. data/test/regression/test_chart_format03.rb +0 -46
  582. data/test/regression/test_chart_format04.rb +0 -45
  583. data/test/regression/test_chart_format05.rb +0 -45
  584. data/test/regression/test_chart_format06.rb +0 -50
  585. data/test/regression/test_chart_format07.rb +0 -55
  586. data/test/regression/test_chart_format08.rb +0 -50
  587. data/test/regression/test_chart_format09.rb +0 -54
  588. data/test/regression/test_chart_format10.rb +0 -57
  589. data/test/regression/test_chart_format11.rb +0 -61
  590. data/test/regression/test_chart_format12.rb +0 -58
  591. data/test/regression/test_chart_format13.rb +0 -50
  592. data/test/regression/test_chart_format14.rb +0 -54
  593. data/test/regression/test_chart_format15.rb +0 -52
  594. data/test/regression/test_chart_format16.rb +0 -55
  595. data/test/regression/test_chart_format17.rb +0 -39
  596. data/test/regression/test_chart_format18.rb +0 -43
  597. data/test/regression/test_chart_format19.rb +0 -46
  598. data/test/regression/test_chart_format20.rb +0 -54
  599. data/test/regression/test_chart_format21.rb +0 -47
  600. data/test/regression/test_chart_format22.rb +0 -47
  601. data/test/regression/test_chart_format23.rb +0 -47
  602. data/test/regression/test_chart_format24.rb +0 -52
  603. data/test/regression/test_chart_format25.rb +0 -46
  604. data/test/regression/test_chart_format26.rb +0 -48
  605. data/test/regression/test_chart_format27.rb +0 -58
  606. data/test/regression/test_chart_format28.rb +0 -52
  607. data/test/regression/test_chart_format29.rb +0 -59
  608. data/test/regression/test_chart_format30.rb +0 -53
  609. data/test/regression/test_chart_format31.rb +0 -60
  610. data/test/regression/test_chart_gap01.rb +0 -47
  611. data/test/regression/test_chart_gap02.rb +0 -47
  612. data/test/regression/test_chart_gap03.rb +0 -47
  613. data/test/regression/test_chart_gap04.rb +0 -54
  614. data/test/regression/test_chart_gap05.rb +0 -56
  615. data/test/regression/test_chart_gradient01.rb +0 -43
  616. data/test/regression/test_chart_gradient02.rb +0 -43
  617. data/test/regression/test_chart_gradient03.rb +0 -46
  618. data/test/regression/test_chart_gradient04.rb +0 -46
  619. data/test/regression/test_chart_gradient05.rb +0 -46
  620. data/test/regression/test_chart_gradient06.rb +0 -46
  621. data/test/regression/test_chart_gradient07.rb +0 -44
  622. data/test/regression/test_chart_gradient08.rb +0 -43
  623. data/test/regression/test_chart_gradient09.rb +0 -43
  624. data/test/regression/test_chart_gradient10.rb +0 -43
  625. data/test/regression/test_chart_gradient11.rb +0 -43
  626. data/test/regression/test_chart_gradient12.rb +0 -46
  627. data/test/regression/test_chart_gradient13.rb +0 -46
  628. data/test/regression/test_chart_gridlines01.rb +0 -42
  629. data/test/regression/test_chart_gridlines02.rb +0 -47
  630. data/test/regression/test_chart_gridlines03.rb +0 -63
  631. data/test/regression/test_chart_gridlines04.rb +0 -44
  632. data/test/regression/test_chart_gridlines05.rb +0 -48
  633. data/test/regression/test_chart_gridlines06.rb +0 -53
  634. data/test/regression/test_chart_gridlines07.rb +0 -69
  635. data/test/regression/test_chart_gridlines08.rb +0 -45
  636. data/test/regression/test_chart_gridlines09.rb +0 -67
  637. data/test/regression/test_chart_layout01.rb +0 -48
  638. data/test/regression/test_chart_layout02.rb +0 -48
  639. data/test/regression/test_chart_layout03.rb +0 -49
  640. data/test/regression/test_chart_layout04.rb +0 -47
  641. data/test/regression/test_chart_layout05.rb +0 -64
  642. data/test/regression/test_chart_layout06.rb +0 -48
  643. data/test/regression/test_chart_layout07.rb +0 -48
  644. data/test/regression/test_chart_layout08.rb +0 -49
  645. data/test/regression/test_chart_legend01.rb +0 -41
  646. data/test/regression/test_chart_legend02.rb +0 -41
  647. data/test/regression/test_chart_legend03.rb +0 -41
  648. data/test/regression/test_chart_legend04.rb +0 -41
  649. data/test/regression/test_chart_legend05.rb +0 -41
  650. data/test/regression/test_chart_legend06.rb +0 -41
  651. data/test/regression/test_chart_legend07.rb +0 -38
  652. data/test/regression/test_chart_line01.rb +0 -39
  653. data/test/regression/test_chart_line02.rb +0 -44
  654. data/test/regression/test_chart_line03.rb +0 -39
  655. data/test/regression/test_chart_line04.rb +0 -39
  656. data/test/regression/test_chart_line05.rb +0 -43
  657. data/test/regression/test_chart_line06.rb +0 -43
  658. data/test/regression/test_chart_name01.rb +0 -43
  659. data/test/regression/test_chart_name02.rb +0 -55
  660. data/test/regression/test_chart_name03.rb +0 -55
  661. data/test/regression/test_chart_order01.rb +0 -54
  662. data/test/regression/test_chart_order02.rb +0 -54
  663. data/test/regression/test_chart_order03.rb +0 -60
  664. data/test/regression/test_chart_pattern01.rb +0 -49
  665. data/test/regression/test_chart_pattern02.rb +0 -106
  666. data/test/regression/test_chart_pattern03.rb +0 -105
  667. data/test/regression/test_chart_pattern04.rb +0 -105
  668. data/test/regression/test_chart_pattern05.rb +0 -105
  669. data/test/regression/test_chart_pattern06.rb +0 -105
  670. data/test/regression/test_chart_pattern07.rb +0 -105
  671. data/test/regression/test_chart_pattern08.rb +0 -105
  672. data/test/regression/test_chart_pattern09.rb +0 -57
  673. data/test/regression/test_chart_pattern10.rb +0 -57
  674. data/test/regression/test_chart_pie01.rb +0 -36
  675. data/test/regression/test_chart_pie02.rb +0 -38
  676. data/test/regression/test_chart_pie03.rb +0 -38
  677. data/test/regression/test_chart_pie04.rb +0 -38
  678. data/test/regression/test_chart_pie05.rb +0 -38
  679. data/test/regression/test_chart_points01.rb +0 -37
  680. data/test/regression/test_chart_points02.rb +0 -40
  681. data/test/regression/test_chart_points03.rb +0 -42
  682. data/test/regression/test_chart_points04.rb +0 -52
  683. data/test/regression/test_chart_points05.rb +0 -49
  684. data/test/regression/test_chart_points06.rb +0 -49
  685. data/test/regression/test_chart_radar01.rb +0 -39
  686. data/test/regression/test_chart_radar02.rb +0 -43
  687. data/test/regression/test_chart_radar03.rb +0 -43
  688. data/test/regression/test_chart_scatter01.rb +0 -45
  689. data/test/regression/test_chart_scatter02.rb +0 -49
  690. data/test/regression/test_chart_scatter03.rb +0 -49
  691. data/test/regression/test_chart_scatter04.rb +0 -49
  692. data/test/regression/test_chart_scatter05.rb +0 -49
  693. data/test/regression/test_chart_scatter06.rb +0 -51
  694. data/test/regression/test_chart_scatter07.rb +0 -59
  695. data/test/regression/test_chart_scatter08.rb +0 -57
  696. data/test/regression/test_chart_scatter09.rb +0 -59
  697. data/test/regression/test_chart_scatter10.rb +0 -59
  698. data/test/regression/test_chart_scatter11.rb +0 -59
  699. data/test/regression/test_chart_scatter12.rb +0 -51
  700. data/test/regression/test_chart_scatter13.rb +0 -51
  701. data/test/regression/test_chart_scatter14.rb +0 -52
  702. data/test/regression/test_chart_scatter15.rb +0 -44
  703. data/test/regression/test_chart_size01.rb +0 -41
  704. data/test/regression/test_chart_size02.rb +0 -41
  705. data/test/regression/test_chart_size03.rb +0 -42
  706. data/test/regression/test_chart_size04.rb +0 -41
  707. data/test/regression/test_chart_size05.rb +0 -39
  708. data/test/regression/test_chart_sparse01.rb +0 -51
  709. data/test/regression/test_chart_stock01.rb +0 -65
  710. data/test/regression/test_chart_stock02.rb +0 -71
  711. data/test/regression/test_chart_str01.rb +0 -43
  712. data/test/regression/test_chart_str02.rb +0 -47
  713. data/test/regression/test_chart_table01.rb +0 -42
  714. data/test/regression/test_chart_table02.rb +0 -47
  715. data/test/regression/test_chart_table03.rb +0 -56
  716. data/test/regression/test_chart_title01.rb +0 -39
  717. data/test/regression/test_chart_title02.rb +0 -39
  718. data/test/regression/test_chartsheet01.rb +0 -41
  719. data/test/regression/test_chartsheet02.rb +0 -48
  720. data/test/regression/test_chartsheet03.rb +0 -46
  721. data/test/regression/test_chartsheet04.rb +0 -46
  722. data/test/regression/test_chartsheet05.rb +0 -46
  723. data/test/regression/test_chartsheet06.rb +0 -42
  724. data/test/regression/test_chartsheet07.rb +0 -55
  725. data/test/regression/test_chartsheet08.rb +0 -59
  726. data/test/regression/test_chartsheet09.rb +0 -50
  727. data/test/regression/test_comment01.rb +0 -27
  728. data/test/regression/test_comment02.rb +0 -28
  729. data/test/regression/test_comment03.rb +0 -31
  730. data/test/regression/test_comment04.rb +0 -36
  731. data/test/regression/test_comment06.rb +0 -33
  732. data/test/regression/test_comment07.rb +0 -35
  733. data/test/regression/test_comment08.rb +0 -35
  734. data/test/regression/test_comment09.rb +0 -31
  735. data/test/regression/test_comment10.rb +0 -30
  736. data/test/regression/test_comment11.rb +0 -31
  737. data/test/regression/test_comment12.rb +0 -30
  738. data/test/regression/test_comment13.rb +0 -36
  739. data/test/regression/test_comment14.rb +0 -29
  740. data/test/regression/test_comment15.rb +0 -28
  741. data/test/regression/test_comment16.rb +0 -34
  742. data/test/regression/test_cond_format01.rb +0 -45
  743. data/test/regression/test_cond_format02.rb +0 -40
  744. data/test/regression/test_cond_format03.rb +0 -51
  745. data/test/regression/test_cond_format04.rb +0 -50
  746. data/test/regression/test_cond_format05.rb +0 -40
  747. data/test/regression/test_cond_format06.rb +0 -44
  748. data/test/regression/test_cond_format07.rb +0 -61
  749. data/test/regression/test_cond_format08.rb +0 -45
  750. data/test/regression/test_cond_format10.rb +0 -42
  751. data/test/regression/test_cond_format11.rb +0 -46
  752. data/test/regression/test_cond_format12.rb +0 -46
  753. data/test/regression/test_cond_format13.rb +0 -52
  754. data/test/regression/test_cond_format14.rb +0 -42
  755. data/test/regression/test_cond_format15.rb +0 -53
  756. data/test/regression/test_cond_format16.rb +0 -53
  757. data/test/regression/test_cond_format17.rb +0 -37
  758. data/test/regression/test_cond_format18.rb +0 -136
  759. data/test/regression/test_cond_format19.rb +0 -64
  760. data/test/regression/test_cond_format20.rb +0 -43
  761. data/test/regression/test_custom_colors01.rb +0 -33
  762. data/test/regression/test_data_validation01.rb +0 -22
  763. data/test/regression/test_data_validation02.rb +0 -27
  764. data/test/regression/test_data_validation03.rb +0 -44
  765. data/test/regression/test_data_validation04.rb +0 -37
  766. data/test/regression/test_data_validation05.rb +0 -36
  767. data/test/regression/test_data_validation08.rb +0 -24
  768. data/test/regression/test_date_1904_01.rb +0 -31
  769. data/test/regression/test_date_1904_02.rb +0 -34
  770. data/test/regression/test_date_examples01.rb +0 -48
  771. data/test/regression/test_default_format01.rb +0 -22
  772. data/test/regression/test_default_row01.rb +0 -26
  773. data/test/regression/test_default_row02.rb +0 -28
  774. data/test/regression/test_default_row03.rb +0 -28
  775. data/test/regression/test_default_row04.rb +0 -31
  776. data/test/regression/test_default_row05.rb +0 -32
  777. data/test/regression/test_defined_name01.rb +0 -45
  778. data/test/regression/test_defined_name02.rb +0 -30
  779. data/test/regression/test_defined_name03.rb +0 -30
  780. data/test/regression/test_defined_name04.rb +0 -50
  781. data/test/regression/test_dynamic_array01.rb +0 -25
  782. data/test/regression/test_escapes01.rb +0 -35
  783. data/test/regression/test_escapes02.rb +0 -32
  784. data/test/regression/test_escapes03.rb +0 -33
  785. data/test/regression/test_escapes04.rb +0 -31
  786. data/test/regression/test_escapes05.rb +0 -32
  787. data/test/regression/test_escapes06.rb +0 -26
  788. data/test/regression/test_escapes07.rb +0 -29
  789. data/test/regression/test_escapes08.rb +0 -30
  790. data/test/regression/test_excel2003_style01.rb +0 -21
  791. data/test/regression/test_excel2003_style02.rb +0 -37
  792. data/test/regression/test_excel2003_style03.rb +0 -40
  793. data/test/regression/test_excel2003_style04.rb +0 -24
  794. data/test/regression/test_excel2003_style05.rb +0 -31
  795. data/test/regression/test_excel2003_style06.rb +0 -31
  796. data/test/regression/test_excel2003_style07.rb +0 -31
  797. data/test/regression/test_excel2003_style08.rb +0 -26
  798. data/test/regression/test_firstsheet01.rb +0 -43
  799. data/test/regression/test_fit_to_pages01.rb +0 -35
  800. data/test/regression/test_fit_to_pages02.rb +0 -35
  801. data/test/regression/test_fit_to_pages03.rb +0 -35
  802. data/test/regression/test_fit_to_pages04.rb +0 -35
  803. data/test/regression/test_fit_to_pages05.rb +0 -35
  804. data/test/regression/test_format01.rb +0 -35
  805. data/test/regression/test_format02.rb +0 -47
  806. data/test/regression/test_format03.rb +0 -31
  807. data/test/regression/test_format04.rb +0 -41
  808. data/test/regression/test_format05.rb +0 -26
  809. data/test/regression/test_format11.rb +0 -28
  810. data/test/regression/test_format12.rb +0 -41
  811. data/test/regression/test_format13.rb +0 -31
  812. data/test/regression/test_format14.rb +0 -26
  813. data/test/regression/test_format15.rb +0 -26
  814. data/test/regression/test_format16.rb +0 -24
  815. data/test/regression/test_format17.rb +0 -24
  816. data/test/regression/test_formula_results01.rb +0 -37
  817. data/test/regression/test_gridlines01.rb +0 -34
  818. data/test/regression/test_header01.rb +0 -28
  819. data/test/regression/test_header02.rb +0 -28
  820. data/test/regression/test_header03.rb +0 -31
  821. data/test/regression/test_header04.rb +0 -30
  822. data/test/regression/test_header_image01.rb +0 -26
  823. data/test/regression/test_header_image02.rb +0 -33
  824. data/test/regression/test_header_image03.rb +0 -34
  825. data/test/regression/test_header_image04.rb +0 -34
  826. data/test/regression/test_header_image05.rb +0 -28
  827. data/test/regression/test_header_image06.rb +0 -32
  828. data/test/regression/test_header_image07.rb +0 -29
  829. data/test/regression/test_header_image08.rb +0 -33
  830. data/test/regression/test_header_image09.rb +0 -32
  831. data/test/regression/test_header_image10.rb +0 -36
  832. data/test/regression/test_header_image11.rb +0 -28
  833. data/test/regression/test_header_image12.rb +0 -28
  834. data/test/regression/test_header_image13.rb +0 -36
  835. data/test/regression/test_header_image14.rb +0 -36
  836. data/test/regression/test_header_image15.rb +0 -36
  837. data/test/regression/test_header_image16.rb +0 -42
  838. data/test/regression/test_header_image17.rb +0 -46
  839. data/test/regression/test_header_image18.rb +0 -48
  840. data/test/regression/test_header_image19.rb +0 -36
  841. data/test/regression/test_hide01.rb +0 -25
  842. data/test/regression/test_hyperlink01.rb +0 -26
  843. data/test/regression/test_hyperlink02.rb +0 -30
  844. data/test/regression/test_hyperlink03.rb +0 -36
  845. data/test/regression/test_hyperlink04.rb +0 -34
  846. data/test/regression/test_hyperlink05.rb +0 -29
  847. data/test/regression/test_hyperlink06.rb +0 -28
  848. data/test/regression/test_hyperlink07.rb +0 -23
  849. data/test/regression/test_hyperlink08.rb +0 -27
  850. data/test/regression/test_hyperlink09.rb +0 -28
  851. data/test/regression/test_hyperlink10.rb +0 -27
  852. data/test/regression/test_hyperlink11.rb +0 -27
  853. data/test/regression/test_hyperlink12.rb +0 -28
  854. data/test/regression/test_hyperlink13.rb +0 -27
  855. data/test/regression/test_hyperlink14.rb +0 -27
  856. data/test/regression/test_hyperlink15.rb +0 -29
  857. data/test/regression/test_hyperlink16.rb +0 -29
  858. data/test/regression/test_hyperlink17.rb +0 -30
  859. data/test/regression/test_hyperlink18.rb +0 -30
  860. data/test/regression/test_hyperlink20.rb +0 -32
  861. data/test/regression/test_hyperlink21.rb +0 -27
  862. data/test/regression/test_hyperlink22.rb +0 -27
  863. data/test/regression/test_hyperlink23.rb +0 -27
  864. data/test/regression/test_hyperlink24.rb +0 -27
  865. data/test/regression/test_hyperlink25.rb +0 -30
  866. data/test/regression/test_hyperlink26.rb +0 -30
  867. data/test/regression/test_hyperlink27.rb +0 -27
  868. data/test/regression/test_hyperlink28.rb +0 -50
  869. data/test/regression/test_hyperlink29.rb +0 -27
  870. data/test/regression/test_hyperlink30.rb +0 -36
  871. data/test/regression/test_hyperlink32.rb +0 -27
  872. data/test/regression/test_hyperlink33.rb +0 -28
  873. data/test/regression/test_hyperlink34.rb +0 -33
  874. data/test/regression/test_hyperlink35.rb +0 -39
  875. data/test/regression/test_hyperlink36.rb +0 -34
  876. data/test/regression/test_hyperlink37.rb +0 -33
  877. data/test/regression/test_hyperlink38.rb +0 -27
  878. data/test/regression/test_hyperlink39.rb +0 -27
  879. data/test/regression/test_hyperlink40.rb +0 -27
  880. data/test/regression/test_hyperlink41.rb +0 -27
  881. data/test/regression/test_hyperlink42.rb +0 -27
  882. data/test/regression/test_hyperlink43.rb +0 -27
  883. data/test/regression/test_hyperlink44.rb +0 -27
  884. data/test/regression/test_hyperlink45.rb +0 -27
  885. data/test/regression/test_hyperlink47.rb +0 -27
  886. data/test/regression/test_hyperlink48.rb +0 -31
  887. data/test/regression/test_hyperlink49.rb +0 -29
  888. data/test/regression/test_hyperlink50.rb +0 -27
  889. data/test/regression/test_hyperlink51.rb +0 -27
  890. data/test/regression/test_ignore_error01.rb +0 -23
  891. data/test/regression/test_ignore_error02.rb +0 -24
  892. data/test/regression/test_ignore_error03.rb +0 -26
  893. data/test/regression/test_ignore_error04.rb +0 -26
  894. data/test/regression/test_ignore_error05.rb +0 -32
  895. data/test/regression/test_ignore_error06.rb +0 -32
  896. data/test/regression/test_image01.rb +0 -23
  897. data/test/regression/test_image02.rb +0 -23
  898. data/test/regression/test_image03.rb +0 -23
  899. data/test/regression/test_image04.rb +0 -23
  900. data/test/regression/test_image05.rb +0 -26
  901. data/test/regression/test_image06.rb +0 -36
  902. data/test/regression/test_image07.rb +0 -25
  903. data/test/regression/test_image08.rb +0 -27
  904. data/test/regression/test_image09.rb +0 -24
  905. data/test/regression/test_image10.rb +0 -24
  906. data/test/regression/test_image11.rb +0 -24
  907. data/test/regression/test_image12.rb +0 -27
  908. data/test/regression/test_image13.rb +0 -27
  909. data/test/regression/test_image14.rb +0 -29
  910. data/test/regression/test_image15.rb +0 -31
  911. data/test/regression/test_image16.rb +0 -24
  912. data/test/regression/test_image17.rb +0 -23
  913. data/test/regression/test_image18.rb +0 -27
  914. data/test/regression/test_image19.rb +0 -24
  915. data/test/regression/test_image22.rb +0 -24
  916. data/test/regression/test_image23.rb +0 -30
  917. data/test/regression/test_image24.rb +0 -24
  918. data/test/regression/test_image25.rb +0 -24
  919. data/test/regression/test_image26.rb +0 -30
  920. data/test/regression/test_image27.rb +0 -24
  921. data/test/regression/test_image28.rb +0 -27
  922. data/test/regression/test_image29.rb +0 -27
  923. data/test/regression/test_image30.rb +0 -27
  924. data/test/regression/test_image31.rb +0 -30
  925. data/test/regression/test_image32.rb +0 -28
  926. data/test/regression/test_image33.rb +0 -32
  927. data/test/regression/test_image35.rb +0 -26
  928. data/test/regression/test_image36.rb +0 -26
  929. data/test/regression/test_image44.rb +0 -28
  930. data/test/regression/test_image45.rb +0 -29
  931. data/test/regression/test_image46.rb +0 -29
  932. data/test/regression/test_image47.rb +0 -28
  933. data/test/regression/test_image48.rb +0 -32
  934. data/test/regression/test_image49.rb +0 -38
  935. data/test/regression/test_image50.rb +0 -24
  936. data/test/regression/test_image51.rb +0 -30
  937. data/test/regression/test_image52.rb +0 -26
  938. data/test/regression/test_image53.rb +0 -26
  939. data/test/regression/test_image54.rb +0 -26
  940. data/test/regression/test_image55.rb +0 -27
  941. data/test/regression/test_image56.rb +0 -23
  942. data/test/regression/test_image57.rb +0 -23
  943. data/test/regression/test_landscape01.rb +0 -27
  944. data/test/regression/test_macro01.rb +0 -29
  945. data/test/regression/test_merge_cells01.rb +0 -25
  946. data/test/regression/test_merge_range01.rb +0 -24
  947. data/test/regression/test_merge_range02.rb +0 -24
  948. data/test/regression/test_merge_range03.rb +0 -26
  949. data/test/regression/test_merge_range04.rb +0 -24
  950. data/test/regression/test_merge_range05.rb +0 -24
  951. data/test/regression/test_object_position01.rb +0 -26
  952. data/test/regression/test_object_position02.rb +0 -26
  953. data/test/regression/test_object_position03.rb +0 -26
  954. data/test/regression/test_object_position04.rb +0 -44
  955. data/test/regression/test_object_position06.rb +0 -28
  956. data/test/regression/test_object_position07.rb +0 -28
  957. data/test/regression/test_object_position08.rb +0 -47
  958. data/test/regression/test_object_position09.rb +0 -50
  959. data/test/regression/test_object_position10.rb +0 -28
  960. data/test/regression/test_object_position12.rb +0 -25
  961. data/test/regression/test_object_position13.rb +0 -25
  962. data/test/regression/test_object_position14.rb +0 -25
  963. data/test/regression/test_object_position15.rb +0 -29
  964. data/test/regression/test_object_position16.rb +0 -29
  965. data/test/regression/test_object_position17.rb +0 -29
  966. data/test/regression/test_object_position18.rb +0 -29
  967. data/test/regression/test_object_position19.rb +0 -29
  968. data/test/regression/test_object_position20.rb +0 -29
  969. data/test/regression/test_outline01.rb +0 -84
  970. data/test/regression/test_outline02.rb +0 -87
  971. data/test/regression/test_outline03.rb +0 -57
  972. data/test/regression/test_outline04.rb +0 -53
  973. data/test/regression/test_outline05.rb +0 -88
  974. data/test/regression/test_outline06.rb +0 -87
  975. data/test/regression/test_page_breaks01.rb +0 -34
  976. data/test/regression/test_page_breaks02.rb +0 -34
  977. data/test/regression/test_page_breaks03.rb +0 -34
  978. data/test/regression/test_page_breaks04.rb +0 -34
  979. data/test/regression/test_page_breaks05.rb +0 -34
  980. data/test/regression/test_page_breaks06.rb +0 -35
  981. data/test/regression/test_page_view01.rb +0 -34
  982. data/test/regression/test_panes01.rb +0 -61
  983. data/test/regression/test_print_across01.rb +0 -35
  984. data/test/regression/test_print_area01.rb +0 -34
  985. data/test/regression/test_print_area02.rb +0 -34
  986. data/test/regression/test_print_area03.rb +0 -34
  987. data/test/regression/test_print_area04.rb +0 -34
  988. data/test/regression/test_print_area05.rb +0 -34
  989. data/test/regression/test_print_area06.rb +0 -34
  990. data/test/regression/test_print_area07.rb +0 -35
  991. data/test/regression/test_print_options01.rb +0 -34
  992. data/test/regression/test_print_options02.rb +0 -34
  993. data/test/regression/test_print_options03.rb +0 -34
  994. data/test/regression/test_print_options04.rb +0 -34
  995. data/test/regression/test_print_options05.rb +0 -37
  996. data/test/regression/test_print_options06.rb +0 -35
  997. data/test/regression/test_print_options07.rb +0 -31
  998. data/test/regression/test_print_scale01.rb +0 -35
  999. data/test/regression/test_print_scale02.rb +0 -35
  1000. data/test/regression/test_properties01.rb +0 -36
  1001. data/test/regression/test_properties02.rb +0 -25
  1002. data/test/regression/test_properties03.rb +0 -26
  1003. data/test/regression/test_properties04.rb +0 -61
  1004. data/test/regression/test_properties05.rb +0 -30
  1005. data/test/regression/test_protect01.rb +0 -28
  1006. data/test/regression/test_protect02.rb +0 -30
  1007. data/test/regression/test_protect03.rb +0 -30
  1008. data/test/regression/test_protect04.rb +0 -32
  1009. data/test/regression/test_protect05.rb +0 -35
  1010. data/test/regression/test_protect06.rb +0 -35
  1011. data/test/regression/test_protect07.rb +0 -23
  1012. data/test/regression/test_quote_name01.rb +0 -48
  1013. data/test/regression/test_quote_name03.rb +0 -41
  1014. data/test/regression/test_quote_name04.rb +0 -40
  1015. data/test/regression/test_repeat01.rb +0 -34
  1016. data/test/regression/test_repeat02.rb +0 -34
  1017. data/test/regression/test_repeat03.rb +0 -35
  1018. data/test/regression/test_repeat04.rb +0 -34
  1019. data/test/regression/test_repeat05.rb +0 -41
  1020. data/test/regression/test_rich_string01.rb +0 -28
  1021. data/test/regression/test_rich_string02.rb +0 -28
  1022. data/test/regression/test_rich_string03.rb +0 -28
  1023. data/test/regression/test_rich_string04.rb +0 -28
  1024. data/test/regression/test_rich_string05.rb +0 -30
  1025. data/test/regression/test_rich_string06.rb +0 -27
  1026. data/test/regression/test_rich_string07.rb +0 -33
  1027. data/test/regression/test_rich_string08.rb +0 -29
  1028. data/test/regression/test_rich_string09.rb +0 -31
  1029. data/test/regression/test_rich_string10.rb +0 -30
  1030. data/test/regression/test_rich_string11.rb +0 -29
  1031. data/test/regression/test_rich_string12.rb +0 -32
  1032. data/test/regression/test_row_col_format01.rb +0 -24
  1033. data/test/regression/test_row_col_format02.rb +0 -25
  1034. data/test/regression/test_row_col_format03.rb +0 -24
  1035. data/test/regression/test_row_col_format04.rb +0 -25
  1036. data/test/regression/test_row_col_format05.rb +0 -26
  1037. data/test/regression/test_row_col_format06.rb +0 -29
  1038. data/test/regression/test_row_col_format07.rb +0 -24
  1039. data/test/regression/test_row_col_format08.rb +0 -34
  1040. data/test/regression/test_row_col_format09.rb +0 -33
  1041. data/test/regression/test_row_col_format10.rb +0 -24
  1042. data/test/regression/test_row_col_format11.rb +0 -23
  1043. data/test/regression/test_row_col_format12.rb +0 -23
  1044. data/test/regression/test_row_col_format13.rb +0 -28
  1045. data/test/regression/test_row_col_format14.rb +0 -28
  1046. data/test/regression/test_selection01.rb +0 -23
  1047. data/test/regression/test_selection02.rb +0 -33
  1048. data/test/regression/test_set_column01.rb +0 -63
  1049. data/test/regression/test_set_column02.rb +0 -64
  1050. data/test/regression/test_set_column03.rb +0 -34
  1051. data/test/regression/test_set_column04.rb +0 -42
  1052. data/test/regression/test_set_column05.rb +0 -52
  1053. data/test/regression/test_set_column06.rb +0 -49
  1054. data/test/regression/test_set_column07.rb +0 -45
  1055. data/test/regression/test_set_column08.rb +0 -42
  1056. data/test/regression/test_set_column09.rb +0 -31
  1057. data/test/regression/test_set_column10.rb +0 -55
  1058. data/test/regression/test_set_column11.rb +0 -48
  1059. data/test/regression/test_set_print_scale01.rb +0 -36
  1060. data/test/regression/test_set_row01.rb +0 -35
  1061. data/test/regression/test_set_row02.rb +0 -35
  1062. data/test/regression/test_set_row03.rb +0 -35
  1063. data/test/regression/test_set_row04.rb +0 -35
  1064. data/test/regression/test_set_start_page01.rb +0 -33
  1065. data/test/regression/test_set_start_page02.rb +0 -33
  1066. data/test/regression/test_set_start_page03.rb +0 -33
  1067. data/test/regression/test_shape01.rb +0 -25
  1068. data/test/regression/test_shape02.rb +0 -42
  1069. data/test/regression/test_shape03.rb +0 -45
  1070. data/test/regression/test_shape04.rb +0 -43
  1071. data/test/regression/test_shape_connect01.rb +0 -48
  1072. data/test/regression/test_shape_connect02.rb +0 -42
  1073. data/test/regression/test_shape_connect03.rb +0 -78
  1074. data/test/regression/test_shape_connect04.rb +0 -75
  1075. data/test/regression/test_shape_scale01.rb +0 -45
  1076. data/test/regression/test_shape_stencil01.rb +0 -39
  1077. data/test/regression/test_shared_strings01.rb +0 -32
  1078. data/test/regression/test_shared_strings02.rb +0 -45
  1079. data/test/regression/test_shared_strings_encoding.rb +0 -0
  1080. data/test/regression/test_simple01.rb +0 -24
  1081. data/test/regression/test_simple02.rb +0 -32
  1082. data/test/regression/test_simple03.rb +0 -39
  1083. data/test/regression/test_simple04.rb +0 -29
  1084. data/test/regression/test_simple05.rb +0 -40
  1085. data/test/regression/test_tab_color01.rb +0 -20
  1086. data/test/regression/test_table01.rb +0 -27
  1087. data/test/regression/test_table02.rb +0 -37
  1088. data/test/regression/test_table03.rb +0 -33
  1089. data/test/regression/test_table04.rb +0 -37
  1090. data/test/regression/test_table05.rb +0 -41
  1091. data/test/regression/test_table06.rb +0 -44
  1092. data/test/regression/test_table07.rb +0 -29
  1093. data/test/regression/test_table08.rb +0 -48
  1094. data/test/regression/test_table09.rb +0 -65
  1095. data/test/regression/test_table10.rb +0 -68
  1096. data/test/regression/test_table11.rb +0 -37
  1097. data/test/regression/test_table12.rb +0 -36
  1098. data/test/regression/test_table13.rb +0 -51
  1099. data/test/regression/test_table14.rb +0 -51
  1100. data/test/regression/test_table15.rb +0 -37
  1101. data/test/regression/test_table16.rb +0 -37
  1102. data/test/regression/test_table17.rb +0 -70
  1103. data/test/regression/test_table20.rb +0 -34
  1104. data/test/regression/test_table21.rb +0 -36
  1105. data/test/regression/test_table22.rb +0 -32
  1106. data/test/regression/test_table23.rb +0 -56
  1107. data/test/regression/test_table24.rb +0 -27
  1108. data/test/regression/test_table25.rb +0 -27
  1109. data/test/regression/test_table26.rb +0 -38
  1110. data/test/regression/test_tutorial01.rb +0 -38
  1111. data/test/regression/test_tutorial02.rb +0 -44
  1112. data/test/regression/test_tutorial03.rb +0 -49
  1113. data/test/regression/test_types02.rb +0 -25
  1114. data/test/regression/test_types08.rb +0 -31
  1115. data/test/regression/test_update_range_format_with_params.rb +0 -42
  1116. data/test/regression/test_urls_as_strings.rb +0 -25
  1117. data/test/regression/test_utf8_01.rb +0 -23
  1118. data/test/regression/test_utf8_03.rb +0 -23
  1119. data/test/regression/test_utf8_04.rb +0 -23
  1120. data/test/regression/test_utf8_05.rb +0 -26
  1121. data/test/regression/test_utf8_06.rb +0 -28
  1122. data/test/regression/test_utf8_07.rb +0 -27
  1123. data/test/regression/test_utf8_08.rb +0 -38
  1124. data/test/regression/test_utf8_09.rb +0 -20
  1125. data/test/regression/test_utf8_10.rb +0 -42
  1126. data/test/regression/test_utf8_11.rb +0 -23
  1127. data/test/regression/test_vml01.rb +0 -29
  1128. data/test/regression/test_vml02.rb +0 -31
  1129. data/test/regression/test_vml03.rb +0 -40
  1130. data/test/regression/xlsx_files/array_formula01.xlsx +0 -0
  1131. data/test/regression/xlsx_files/array_formula02.xlsx +0 -0
  1132. data/test/regression/xlsx_files/array_formula03.xlsx +0 -0
  1133. data/test/regression/xlsx_files/array_formula04.xlsx +0 -0
  1134. data/test/regression/xlsx_files/autofilter00.xlsx +0 -0
  1135. data/test/regression/xlsx_files/autofilter01.xlsx +0 -0
  1136. data/test/regression/xlsx_files/autofilter02.xlsx +0 -0
  1137. data/test/regression/xlsx_files/autofilter03.xlsx +0 -0
  1138. data/test/regression/xlsx_files/autofilter04.xlsx +0 -0
  1139. data/test/regression/xlsx_files/autofilter05.xlsx +0 -0
  1140. data/test/regression/xlsx_files/autofilter06.xlsx +0 -0
  1141. data/test/regression/xlsx_files/autofilter07.xlsx +0 -0
  1142. data/test/regression/xlsx_files/autofilter08.xlsx +0 -0
  1143. data/test/regression/xlsx_files/autofilter09.xlsx +0 -0
  1144. data/test/regression/xlsx_files/autofilter10.xlsx +0 -0
  1145. data/test/regression/xlsx_files/background01.xlsx +0 -0
  1146. data/test/regression/xlsx_files/background02.xlsx +0 -0
  1147. data/test/regression/xlsx_files/background03.xlsx +0 -0
  1148. data/test/regression/xlsx_files/background04.xlsx +0 -0
  1149. data/test/regression/xlsx_files/background05.xlsx +0 -0
  1150. data/test/regression/xlsx_files/background06.xlsx +0 -0
  1151. data/test/regression/xlsx_files/background07.xlsx +0 -0
  1152. data/test/regression/xlsx_files/button01.xlsx +0 -0
  1153. data/test/regression/xlsx_files/button02.xlsx +0 -0
  1154. data/test/regression/xlsx_files/button03.xlsx +0 -0
  1155. data/test/regression/xlsx_files/button04.xlsx +0 -0
  1156. data/test/regression/xlsx_files/button05.xlsx +0 -0
  1157. data/test/regression/xlsx_files/button07.xlsm +0 -0
  1158. data/test/regression/xlsx_files/button08.xlsx +0 -0
  1159. data/test/regression/xlsx_files/button09.xlsx +0 -0
  1160. data/test/regression/xlsx_files/button10.xlsx +0 -0
  1161. data/test/regression/xlsx_files/button11.xlsx +0 -0
  1162. data/test/regression/xlsx_files/button12.xlsx +0 -0
  1163. data/test/regression/xlsx_files/chart_area01.xlsx +0 -0
  1164. data/test/regression/xlsx_files/chart_area02.xlsx +0 -0
  1165. data/test/regression/xlsx_files/chart_area03.xlsx +0 -0
  1166. data/test/regression/xlsx_files/chart_area04.xlsx +0 -0
  1167. data/test/regression/xlsx_files/chart_axis01.xlsx +0 -0
  1168. data/test/regression/xlsx_files/chart_axis02.xlsx +0 -0
  1169. data/test/regression/xlsx_files/chart_axis03.xlsx +0 -0
  1170. data/test/regression/xlsx_files/chart_axis04.xlsx +0 -0
  1171. data/test/regression/xlsx_files/chart_axis05.xlsx +0 -0
  1172. data/test/regression/xlsx_files/chart_axis06.xlsx +0 -0
  1173. data/test/regression/xlsx_files/chart_axis07.xlsx +0 -0
  1174. data/test/regression/xlsx_files/chart_axis08.xlsx +0 -0
  1175. data/test/regression/xlsx_files/chart_axis09.xlsx +0 -0
  1176. data/test/regression/xlsx_files/chart_axis10.xlsx +0 -0
  1177. data/test/regression/xlsx_files/chart_axis11.xlsx +0 -0
  1178. data/test/regression/xlsx_files/chart_axis12.xlsx +0 -0
  1179. data/test/regression/xlsx_files/chart_axis13.xlsx +0 -0
  1180. data/test/regression/xlsx_files/chart_axis14.xlsx +0 -0
  1181. data/test/regression/xlsx_files/chart_axis15.xlsx +0 -0
  1182. data/test/regression/xlsx_files/chart_axis16.xlsx +0 -0
  1183. data/test/regression/xlsx_files/chart_axis17.xlsx +0 -0
  1184. data/test/regression/xlsx_files/chart_axis18.xlsx +0 -0
  1185. data/test/regression/xlsx_files/chart_axis19.xlsx +0 -0
  1186. data/test/regression/xlsx_files/chart_axis20.xlsx +0 -0
  1187. data/test/regression/xlsx_files/chart_axis21.xlsx +0 -0
  1188. data/test/regression/xlsx_files/chart_axis22.xlsx +0 -0
  1189. data/test/regression/xlsx_files/chart_axis23.xlsx +0 -0
  1190. data/test/regression/xlsx_files/chart_axis24.xlsx +0 -0
  1191. data/test/regression/xlsx_files/chart_axis25.xlsx +0 -0
  1192. data/test/regression/xlsx_files/chart_axis26.xlsx +0 -0
  1193. data/test/regression/xlsx_files/chart_axis27.xlsx +0 -0
  1194. data/test/regression/xlsx_files/chart_axis28.xlsx +0 -0
  1195. data/test/regression/xlsx_files/chart_axis29.xlsx +0 -0
  1196. data/test/regression/xlsx_files/chart_axis30.xlsx +0 -0
  1197. data/test/regression/xlsx_files/chart_axis31.xlsx +0 -0
  1198. data/test/regression/xlsx_files/chart_axis32.xlsx +0 -0
  1199. data/test/regression/xlsx_files/chart_axis33.xlsx +0 -0
  1200. data/test/regression/xlsx_files/chart_axis34.xlsx +0 -0
  1201. data/test/regression/xlsx_files/chart_axis35.xlsx +0 -0
  1202. data/test/regression/xlsx_files/chart_axis36.xlsx +0 -0
  1203. data/test/regression/xlsx_files/chart_axis37.xlsx +0 -0
  1204. data/test/regression/xlsx_files/chart_axis38.xlsx +0 -0
  1205. data/test/regression/xlsx_files/chart_axis39.xlsx +0 -0
  1206. data/test/regression/xlsx_files/chart_axis40.xlsx +0 -0
  1207. data/test/regression/xlsx_files/chart_axis41.xlsx +0 -0
  1208. data/test/regression/xlsx_files/chart_axis42.xlsx +0 -0
  1209. data/test/regression/xlsx_files/chart_axis43.xlsx +0 -0
  1210. data/test/regression/xlsx_files/chart_axis44.xlsx +0 -0
  1211. data/test/regression/xlsx_files/chart_axis45.xlsx +0 -0
  1212. data/test/regression/xlsx_files/chart_axis46.xlsx +0 -0
  1213. data/test/regression/xlsx_files/chart_axis47.xlsx +0 -0
  1214. data/test/regression/xlsx_files/chart_axis48.xlsx +0 -0
  1215. data/test/regression/xlsx_files/chart_bar01.xlsx +0 -0
  1216. data/test/regression/xlsx_files/chart_bar02.xlsx +0 -0
  1217. data/test/regression/xlsx_files/chart_bar03.xlsx +0 -0
  1218. data/test/regression/xlsx_files/chart_bar04.xlsx +0 -0
  1219. data/test/regression/xlsx_files/chart_bar05.xlsx +0 -0
  1220. data/test/regression/xlsx_files/chart_bar06.xlsx +0 -0
  1221. data/test/regression/xlsx_files/chart_bar07.xlsx +0 -0
  1222. data/test/regression/xlsx_files/chart_bar08.xlsx +0 -0
  1223. data/test/regression/xlsx_files/chart_bar09.xlsx +0 -0
  1224. data/test/regression/xlsx_files/chart_bar10.xlsx +0 -0
  1225. data/test/regression/xlsx_files/chart_bar11.xlsx +0 -0
  1226. data/test/regression/xlsx_files/chart_bar12.xlsx +0 -0
  1227. data/test/regression/xlsx_files/chart_bar13.xlsx +0 -0
  1228. data/test/regression/xlsx_files/chart_bar14.xlsx +0 -0
  1229. data/test/regression/xlsx_files/chart_bar15.xlsx +0 -0
  1230. data/test/regression/xlsx_files/chart_bar16.xlsx +0 -0
  1231. data/test/regression/xlsx_files/chart_bar17.xlsx +0 -0
  1232. data/test/regression/xlsx_files/chart_bar18.xlsx +0 -0
  1233. data/test/regression/xlsx_files/chart_bar19.xlsx +0 -0
  1234. data/test/regression/xlsx_files/chart_bar20.xlsx +0 -0
  1235. data/test/regression/xlsx_files/chart_bar21.xlsx +0 -0
  1236. data/test/regression/xlsx_files/chart_bar22.xlsx +0 -0
  1237. data/test/regression/xlsx_files/chart_bar23.xlsx +0 -0
  1238. data/test/regression/xlsx_files/chart_bar24.xlsx +0 -0
  1239. data/test/regression/xlsx_files/chart_blank01.xlsx +0 -0
  1240. data/test/regression/xlsx_files/chart_blank02.xlsx +0 -0
  1241. data/test/regression/xlsx_files/chart_blank03.xlsx +0 -0
  1242. data/test/regression/xlsx_files/chart_blank04.xlsx +0 -0
  1243. data/test/regression/xlsx_files/chart_blank05.xlsx +0 -0
  1244. data/test/regression/xlsx_files/chart_blank06.xlsx +0 -0
  1245. data/test/regression/xlsx_files/chart_chartarea01.xlsx +0 -0
  1246. data/test/regression/xlsx_files/chart_chartarea03.xlsx +0 -0
  1247. data/test/regression/xlsx_files/chart_chartarea04.xlsx +0 -0
  1248. data/test/regression/xlsx_files/chart_chartarea05.xlsx +0 -0
  1249. data/test/regression/xlsx_files/chart_chartarea06.xlsx +0 -0
  1250. data/test/regression/xlsx_files/chart_clustered01.xlsx +0 -0
  1251. data/test/regression/xlsx_files/chart_column01.xlsx +0 -0
  1252. data/test/regression/xlsx_files/chart_column02.xlsx +0 -0
  1253. data/test/regression/xlsx_files/chart_column03.xlsx +0 -0
  1254. data/test/regression/xlsx_files/chart_column04.xlsx +0 -0
  1255. data/test/regression/xlsx_files/chart_column05.xlsx +0 -0
  1256. data/test/regression/xlsx_files/chart_column06.xlsx +0 -0
  1257. data/test/regression/xlsx_files/chart_column07.xlsx +0 -0
  1258. data/test/regression/xlsx_files/chart_column08.xlsx +0 -0
  1259. data/test/regression/xlsx_files/chart_column09.xlsx +0 -0
  1260. data/test/regression/xlsx_files/chart_column10.xlsx +0 -0
  1261. data/test/regression/xlsx_files/chart_column11.xlsx +0 -0
  1262. data/test/regression/xlsx_files/chart_column12.xlsx +0 -0
  1263. data/test/regression/xlsx_files/chart_combined01.xlsx +0 -0
  1264. data/test/regression/xlsx_files/chart_combined02.xlsx +0 -0
  1265. data/test/regression/xlsx_files/chart_combined03.xlsx +0 -0
  1266. data/test/regression/xlsx_files/chart_combined04.xlsx +0 -0
  1267. data/test/regression/xlsx_files/chart_combined05.xlsx +0 -0
  1268. data/test/regression/xlsx_files/chart_combined06.xlsx +0 -0
  1269. data/test/regression/xlsx_files/chart_combined07.xlsx +0 -0
  1270. data/test/regression/xlsx_files/chart_combined08.xlsx +0 -0
  1271. data/test/regression/xlsx_files/chart_combined09.xlsx +0 -0
  1272. data/test/regression/xlsx_files/chart_combined10.xlsx +0 -0
  1273. data/test/regression/xlsx_files/chart_combined11.xlsx +0 -0
  1274. data/test/regression/xlsx_files/chart_crossing01.xlsx +0 -0
  1275. data/test/regression/xlsx_files/chart_crossing02.xlsx +0 -0
  1276. data/test/regression/xlsx_files/chart_crossing03.xlsx +0 -0
  1277. data/test/regression/xlsx_files/chart_crossing04.xlsx +0 -0
  1278. data/test/regression/xlsx_files/chart_crossing05.xlsx +0 -0
  1279. data/test/regression/xlsx_files/chart_crossing06.xlsx +0 -0
  1280. data/test/regression/xlsx_files/chart_data_labels01.xlsx +0 -0
  1281. data/test/regression/xlsx_files/chart_data_labels02.xlsx +0 -0
  1282. data/test/regression/xlsx_files/chart_data_labels03.xlsx +0 -0
  1283. data/test/regression/xlsx_files/chart_data_labels04.xlsx +0 -0
  1284. data/test/regression/xlsx_files/chart_data_labels05.xlsx +0 -0
  1285. data/test/regression/xlsx_files/chart_data_labels06.xlsx +0 -0
  1286. data/test/regression/xlsx_files/chart_data_labels07.xlsx +0 -0
  1287. data/test/regression/xlsx_files/chart_data_labels08.xlsx +0 -0
  1288. data/test/regression/xlsx_files/chart_data_labels09.xlsx +0 -0
  1289. data/test/regression/xlsx_files/chart_data_labels10.xlsx +0 -0
  1290. data/test/regression/xlsx_files/chart_data_labels11.xlsx +0 -0
  1291. data/test/regression/xlsx_files/chart_data_labels12.xlsx +0 -0
  1292. data/test/regression/xlsx_files/chart_data_labels13.xlsx +0 -0
  1293. data/test/regression/xlsx_files/chart_data_labels14.xlsx +0 -0
  1294. data/test/regression/xlsx_files/chart_data_labels15.xlsx +0 -0
  1295. data/test/regression/xlsx_files/chart_data_labels16.xlsx +0 -0
  1296. data/test/regression/xlsx_files/chart_data_labels17.xlsx +0 -0
  1297. data/test/regression/xlsx_files/chart_data_labels18.xlsx +0 -0
  1298. data/test/regression/xlsx_files/chart_data_labels19.xlsx +0 -0
  1299. data/test/regression/xlsx_files/chart_data_labels20.xlsx +0 -0
  1300. data/test/regression/xlsx_files/chart_data_labels21.xlsx +0 -0
  1301. data/test/regression/xlsx_files/chart_data_labels22.xlsx +0 -0
  1302. data/test/regression/xlsx_files/chart_data_labels23.xlsx +0 -0
  1303. data/test/regression/xlsx_files/chart_data_labels24.xlsx +0 -0
  1304. data/test/regression/xlsx_files/chart_data_labels25.xlsx +0 -0
  1305. data/test/regression/xlsx_files/chart_data_labels26.xlsx +0 -0
  1306. data/test/regression/xlsx_files/chart_data_labels27.xlsx +0 -0
  1307. data/test/regression/xlsx_files/chart_data_labels28.xlsx +0 -0
  1308. data/test/regression/xlsx_files/chart_data_labels29.xlsx +0 -0
  1309. data/test/regression/xlsx_files/chart_data_labels30.xlsx +0 -0
  1310. data/test/regression/xlsx_files/chart_data_labels31.xlsx +0 -0
  1311. data/test/regression/xlsx_files/chart_data_labels32.xlsx +0 -0
  1312. data/test/regression/xlsx_files/chart_data_labels33.xlsx +0 -0
  1313. data/test/regression/xlsx_files/chart_data_labels34.xlsx +0 -0
  1314. data/test/regression/xlsx_files/chart_data_labels35.xlsx +0 -0
  1315. data/test/regression/xlsx_files/chart_data_labels36.xlsx +0 -0
  1316. data/test/regression/xlsx_files/chart_data_labels37.xlsx +0 -0
  1317. data/test/regression/xlsx_files/chart_data_labels38.xlsx +0 -0
  1318. data/test/regression/xlsx_files/chart_data_labels39.xlsx +0 -0
  1319. data/test/regression/xlsx_files/chart_data_labels40.xlsx +0 -0
  1320. data/test/regression/xlsx_files/chart_data_labels41.xlsx +0 -0
  1321. data/test/regression/xlsx_files/chart_data_labels42.xlsx +0 -0
  1322. data/test/regression/xlsx_files/chart_data_labels43.xlsx +0 -0
  1323. data/test/regression/xlsx_files/chart_data_labels44.xlsx +0 -0
  1324. data/test/regression/xlsx_files/chart_data_labels45.xlsx +0 -0
  1325. data/test/regression/xlsx_files/chart_data_labels46.xlsx +0 -0
  1326. data/test/regression/xlsx_files/chart_data_labels47.xlsx +0 -0
  1327. data/test/regression/xlsx_files/chart_data_labels48.xlsx +0 -0
  1328. data/test/regression/xlsx_files/chart_data_labels49.xlsx +0 -0
  1329. data/test/regression/xlsx_files/chart_data_labels50.xlsx +0 -0
  1330. data/test/regression/xlsx_files/chart_date01.xlsx +0 -0
  1331. data/test/regression/xlsx_files/chart_date02.xlsx +0 -0
  1332. data/test/regression/xlsx_files/chart_date03.xlsx +0 -0
  1333. data/test/regression/xlsx_files/chart_date04.xlsx +0 -0
  1334. data/test/regression/xlsx_files/chart_date05.xlsx +0 -0
  1335. data/test/regression/xlsx_files/chart_display_units01.xlsx +0 -0
  1336. data/test/regression/xlsx_files/chart_display_units02.xlsx +0 -0
  1337. data/test/regression/xlsx_files/chart_display_units03.xlsx +0 -0
  1338. data/test/regression/xlsx_files/chart_display_units04.xlsx +0 -0
  1339. data/test/regression/xlsx_files/chart_display_units05.xlsx +0 -0
  1340. data/test/regression/xlsx_files/chart_display_units06.xlsx +0 -0
  1341. data/test/regression/xlsx_files/chart_display_units07.xlsx +0 -0
  1342. data/test/regression/xlsx_files/chart_display_units08.xlsx +0 -0
  1343. data/test/regression/xlsx_files/chart_display_units09.xlsx +0 -0
  1344. data/test/regression/xlsx_files/chart_display_units10.xlsx +0 -0
  1345. data/test/regression/xlsx_files/chart_display_units11.xlsx +0 -0
  1346. data/test/regression/xlsx_files/chart_display_units12.xlsx +0 -0
  1347. data/test/regression/xlsx_files/chart_doughnut01.xlsx +0 -0
  1348. data/test/regression/xlsx_files/chart_doughnut02.xlsx +0 -0
  1349. data/test/regression/xlsx_files/chart_doughnut03.xlsx +0 -0
  1350. data/test/regression/xlsx_files/chart_doughnut04.xlsx +0 -0
  1351. data/test/regression/xlsx_files/chart_doughnut05.xlsx +0 -0
  1352. data/test/regression/xlsx_files/chart_doughnut06.xlsx +0 -0
  1353. data/test/regression/xlsx_files/chart_doughnut07.xlsx +0 -0
  1354. data/test/regression/xlsx_files/chart_drop_lines01.xlsx +0 -0
  1355. data/test/regression/xlsx_files/chart_drop_lines02.xlsx +0 -0
  1356. data/test/regression/xlsx_files/chart_drop_lines03.xlsx +0 -0
  1357. data/test/regression/xlsx_files/chart_drop_lines04.xlsx +0 -0
  1358. data/test/regression/xlsx_files/chart_errorbars01.xlsx +0 -0
  1359. data/test/regression/xlsx_files/chart_errorbars02.xlsx +0 -0
  1360. data/test/regression/xlsx_files/chart_errorbars03.xlsx +0 -0
  1361. data/test/regression/xlsx_files/chart_errorbars04.xlsx +0 -0
  1362. data/test/regression/xlsx_files/chart_errorbars05.xlsx +0 -0
  1363. data/test/regression/xlsx_files/chart_errorbars06.xlsx +0 -0
  1364. data/test/regression/xlsx_files/chart_errorbars07.xlsx +0 -0
  1365. data/test/regression/xlsx_files/chart_errorbars08.xlsx +0 -0
  1366. data/test/regression/xlsx_files/chart_errorbars09.xlsx +0 -0
  1367. data/test/regression/xlsx_files/chart_errorbars10.xlsx +0 -0
  1368. data/test/regression/xlsx_files/chart_font01.xlsx +0 -0
  1369. data/test/regression/xlsx_files/chart_font02.xlsx +0 -0
  1370. data/test/regression/xlsx_files/chart_font03.xlsx +0 -0
  1371. data/test/regression/xlsx_files/chart_font04.xlsx +0 -0
  1372. data/test/regression/xlsx_files/chart_font05.xlsx +0 -0
  1373. data/test/regression/xlsx_files/chart_font06.xlsx +0 -0
  1374. data/test/regression/xlsx_files/chart_font07.xlsx +0 -0
  1375. data/test/regression/xlsx_files/chart_font08.xlsx +0 -0
  1376. data/test/regression/xlsx_files/chart_font09.xlsx +0 -0
  1377. data/test/regression/xlsx_files/chart_format01.xlsx +0 -0
  1378. data/test/regression/xlsx_files/chart_format02.xlsx +0 -0
  1379. data/test/regression/xlsx_files/chart_format03.xlsx +0 -0
  1380. data/test/regression/xlsx_files/chart_format04.xlsx +0 -0
  1381. data/test/regression/xlsx_files/chart_format05.xlsx +0 -0
  1382. data/test/regression/xlsx_files/chart_format06.xlsx +0 -0
  1383. data/test/regression/xlsx_files/chart_format07.xlsx +0 -0
  1384. data/test/regression/xlsx_files/chart_format08.xlsx +0 -0
  1385. data/test/regression/xlsx_files/chart_format09.xlsx +0 -0
  1386. data/test/regression/xlsx_files/chart_format10.xlsx +0 -0
  1387. data/test/regression/xlsx_files/chart_format11.xlsx +0 -0
  1388. data/test/regression/xlsx_files/chart_format12.xlsx +0 -0
  1389. data/test/regression/xlsx_files/chart_format13.xlsx +0 -0
  1390. data/test/regression/xlsx_files/chart_format14.xlsx +0 -0
  1391. data/test/regression/xlsx_files/chart_format15.xlsx +0 -0
  1392. data/test/regression/xlsx_files/chart_format16.xlsx +0 -0
  1393. data/test/regression/xlsx_files/chart_format17.xlsx +0 -0
  1394. data/test/regression/xlsx_files/chart_format18.xlsx +0 -0
  1395. data/test/regression/xlsx_files/chart_format19.xlsx +0 -0
  1396. data/test/regression/xlsx_files/chart_format20.xlsx +0 -0
  1397. data/test/regression/xlsx_files/chart_format21.xlsx +0 -0
  1398. data/test/regression/xlsx_files/chart_format22.xlsx +0 -0
  1399. data/test/regression/xlsx_files/chart_format23.xlsx +0 -0
  1400. data/test/regression/xlsx_files/chart_format24.xlsx +0 -0
  1401. data/test/regression/xlsx_files/chart_format25.xlsx +0 -0
  1402. data/test/regression/xlsx_files/chart_format26.xlsx +0 -0
  1403. data/test/regression/xlsx_files/chart_format27.xlsx +0 -0
  1404. data/test/regression/xlsx_files/chart_format28.xlsx +0 -0
  1405. data/test/regression/xlsx_files/chart_format29.xlsx +0 -0
  1406. data/test/regression/xlsx_files/chart_format30.xlsx +0 -0
  1407. data/test/regression/xlsx_files/chart_format31.xlsx +0 -0
  1408. data/test/regression/xlsx_files/chart_gap01.xlsx +0 -0
  1409. data/test/regression/xlsx_files/chart_gap02.xlsx +0 -0
  1410. data/test/regression/xlsx_files/chart_gap03.xlsx +0 -0
  1411. data/test/regression/xlsx_files/chart_gap04.xlsx +0 -0
  1412. data/test/regression/xlsx_files/chart_gap05.xlsx +0 -0
  1413. data/test/regression/xlsx_files/chart_gradient01.xlsx +0 -0
  1414. data/test/regression/xlsx_files/chart_gradient02.xlsx +0 -0
  1415. data/test/regression/xlsx_files/chart_gradient03.xlsx +0 -0
  1416. data/test/regression/xlsx_files/chart_gradient04.xlsx +0 -0
  1417. data/test/regression/xlsx_files/chart_gradient05.xlsx +0 -0
  1418. data/test/regression/xlsx_files/chart_gradient06.xlsx +0 -0
  1419. data/test/regression/xlsx_files/chart_gradient07.xlsx +0 -0
  1420. data/test/regression/xlsx_files/chart_gradient08.xlsx +0 -0
  1421. data/test/regression/xlsx_files/chart_gradient09.xlsx +0 -0
  1422. data/test/regression/xlsx_files/chart_gradient10.xlsx +0 -0
  1423. data/test/regression/xlsx_files/chart_gradient11.xlsx +0 -0
  1424. data/test/regression/xlsx_files/chart_gradient12.xlsx +0 -0
  1425. data/test/regression/xlsx_files/chart_gradient13.xlsx +0 -0
  1426. data/test/regression/xlsx_files/chart_gridlines01.xlsx +0 -0
  1427. data/test/regression/xlsx_files/chart_gridlines02.xlsx +0 -0
  1428. data/test/regression/xlsx_files/chart_gridlines03.xlsx +0 -0
  1429. data/test/regression/xlsx_files/chart_gridlines04.xlsx +0 -0
  1430. data/test/regression/xlsx_files/chart_gridlines05.xlsx +0 -0
  1431. data/test/regression/xlsx_files/chart_gridlines06.xlsx +0 -0
  1432. data/test/regression/xlsx_files/chart_gridlines07.xlsx +0 -0
  1433. data/test/regression/xlsx_files/chart_gridlines08.xlsx +0 -0
  1434. data/test/regression/xlsx_files/chart_gridlines09.xlsx +0 -0
  1435. data/test/regression/xlsx_files/chart_layout01.xlsx +0 -0
  1436. data/test/regression/xlsx_files/chart_layout02.xlsx +0 -0
  1437. data/test/regression/xlsx_files/chart_layout03.xlsx +0 -0
  1438. data/test/regression/xlsx_files/chart_layout04.xlsx +0 -0
  1439. data/test/regression/xlsx_files/chart_layout05.xlsx +0 -0
  1440. data/test/regression/xlsx_files/chart_layout06.xlsx +0 -0
  1441. data/test/regression/xlsx_files/chart_layout07.xlsx +0 -0
  1442. data/test/regression/xlsx_files/chart_layout08.xlsx +0 -0
  1443. data/test/regression/xlsx_files/chart_legend01.xlsx +0 -0
  1444. data/test/regression/xlsx_files/chart_legend03.xlsx +0 -0
  1445. data/test/regression/xlsx_files/chart_legend04.xlsx +0 -0
  1446. data/test/regression/xlsx_files/chart_legend05.xlsx +0 -0
  1447. data/test/regression/xlsx_files/chart_legend06.xlsx +0 -0
  1448. data/test/regression/xlsx_files/chart_legend07.xlsx +0 -0
  1449. data/test/regression/xlsx_files/chart_line01.xlsx +0 -0
  1450. data/test/regression/xlsx_files/chart_line02.xlsx +0 -0
  1451. data/test/regression/xlsx_files/chart_line03.xlsx +0 -0
  1452. data/test/regression/xlsx_files/chart_line04.xlsx +0 -0
  1453. data/test/regression/xlsx_files/chart_line05.xlsx +0 -0
  1454. data/test/regression/xlsx_files/chart_line06.xlsx +0 -0
  1455. data/test/regression/xlsx_files/chart_name01.xlsx +0 -0
  1456. data/test/regression/xlsx_files/chart_name02.xlsx +0 -0
  1457. data/test/regression/xlsx_files/chart_name03.xlsx +0 -0
  1458. data/test/regression/xlsx_files/chart_order01.xlsx +0 -0
  1459. data/test/regression/xlsx_files/chart_order03.xlsx +0 -0
  1460. data/test/regression/xlsx_files/chart_pattern01.xlsx +0 -0
  1461. data/test/regression/xlsx_files/chart_pattern02.xlsx +0 -0
  1462. data/test/regression/xlsx_files/chart_pattern03.xlsx +0 -0
  1463. data/test/regression/xlsx_files/chart_pattern04.xlsx +0 -0
  1464. data/test/regression/xlsx_files/chart_pattern05.xlsx +0 -0
  1465. data/test/regression/xlsx_files/chart_pattern06.xlsx +0 -0
  1466. data/test/regression/xlsx_files/chart_pattern07.xlsx +0 -0
  1467. data/test/regression/xlsx_files/chart_pattern08.xlsx +0 -0
  1468. data/test/regression/xlsx_files/chart_pattern09.xlsx +0 -0
  1469. data/test/regression/xlsx_files/chart_pattern10.xlsx +0 -0
  1470. data/test/regression/xlsx_files/chart_pie01.xlsx +0 -0
  1471. data/test/regression/xlsx_files/chart_pie02.xlsx +0 -0
  1472. data/test/regression/xlsx_files/chart_pie03.xlsx +0 -0
  1473. data/test/regression/xlsx_files/chart_pie04.xlsx +0 -0
  1474. data/test/regression/xlsx_files/chart_pie05.xlsx +0 -0
  1475. data/test/regression/xlsx_files/chart_points01.xlsx +0 -0
  1476. data/test/regression/xlsx_files/chart_points02.xlsx +0 -0
  1477. data/test/regression/xlsx_files/chart_points03.xlsx +0 -0
  1478. data/test/regression/xlsx_files/chart_points04.xlsx +0 -0
  1479. data/test/regression/xlsx_files/chart_points05.xlsx +0 -0
  1480. data/test/regression/xlsx_files/chart_points06.xlsx +0 -0
  1481. data/test/regression/xlsx_files/chart_radar01.xlsx +0 -0
  1482. data/test/regression/xlsx_files/chart_radar02.xlsx +0 -0
  1483. data/test/regression/xlsx_files/chart_radar03.xlsx +0 -0
  1484. data/test/regression/xlsx_files/chart_scatter01.xlsx +0 -0
  1485. data/test/regression/xlsx_files/chart_scatter02.xlsx +0 -0
  1486. data/test/regression/xlsx_files/chart_scatter03.xlsx +0 -0
  1487. data/test/regression/xlsx_files/chart_scatter04.xlsx +0 -0
  1488. data/test/regression/xlsx_files/chart_scatter05.xlsx +0 -0
  1489. data/test/regression/xlsx_files/chart_scatter06.xlsx +0 -0
  1490. data/test/regression/xlsx_files/chart_scatter07.xlsx +0 -0
  1491. data/test/regression/xlsx_files/chart_scatter08.xlsx +0 -0
  1492. data/test/regression/xlsx_files/chart_scatter09.xlsx +0 -0
  1493. data/test/regression/xlsx_files/chart_scatter10.xlsx +0 -0
  1494. data/test/regression/xlsx_files/chart_scatter11.xlsx +0 -0
  1495. data/test/regression/xlsx_files/chart_scatter12.xlsx +0 -0
  1496. data/test/regression/xlsx_files/chart_scatter14.xlsx +0 -0
  1497. data/test/regression/xlsx_files/chart_scatter15.xlsx +0 -0
  1498. data/test/regression/xlsx_files/chart_size01.xlsx +0 -0
  1499. data/test/regression/xlsx_files/chart_size04.xlsx +0 -0
  1500. data/test/regression/xlsx_files/chart_sparse01.xlsx +0 -0
  1501. data/test/regression/xlsx_files/chart_stock01.xlsx +0 -0
  1502. data/test/regression/xlsx_files/chart_stock02.xlsx +0 -0
  1503. data/test/regression/xlsx_files/chart_str01.xlsx +0 -0
  1504. data/test/regression/xlsx_files/chart_str02.xlsx +0 -0
  1505. data/test/regression/xlsx_files/chart_table01.xlsx +0 -0
  1506. data/test/regression/xlsx_files/chart_table02.xlsx +0 -0
  1507. data/test/regression/xlsx_files/chart_table03.xlsx +0 -0
  1508. data/test/regression/xlsx_files/chart_title01.xlsx +0 -0
  1509. data/test/regression/xlsx_files/chart_title02.xlsx +0 -0
  1510. data/test/regression/xlsx_files/chartsheet01.xlsx +0 -0
  1511. data/test/regression/xlsx_files/chartsheet02.xlsx +0 -0
  1512. data/test/regression/xlsx_files/chartsheet03.xlsx +0 -0
  1513. data/test/regression/xlsx_files/chartsheet04.xlsx +0 -0
  1514. data/test/regression/xlsx_files/chartsheet05.xlsx +0 -0
  1515. data/test/regression/xlsx_files/chartsheet06.xlsx +0 -0
  1516. data/test/regression/xlsx_files/chartsheet07.xlsx +0 -0
  1517. data/test/regression/xlsx_files/chartsheet08.xlsx +0 -0
  1518. data/test/regression/xlsx_files/chartsheet09.xlsx +0 -0
  1519. data/test/regression/xlsx_files/comment01.xlsx +0 -0
  1520. data/test/regression/xlsx_files/comment02.xlsx +0 -0
  1521. data/test/regression/xlsx_files/comment03.xlsx +0 -0
  1522. data/test/regression/xlsx_files/comment04.xlsx +0 -0
  1523. data/test/regression/xlsx_files/comment05.xlsx +0 -0
  1524. data/test/regression/xlsx_files/comment06.xlsx +0 -0
  1525. data/test/regression/xlsx_files/comment07.xlsx +0 -0
  1526. data/test/regression/xlsx_files/comment08.xlsx +0 -0
  1527. data/test/regression/xlsx_files/comment09.xlsx +0 -0
  1528. data/test/regression/xlsx_files/comment10.xlsx +0 -0
  1529. data/test/regression/xlsx_files/comment11.xlsx +0 -0
  1530. data/test/regression/xlsx_files/comment12.xlsx +0 -0
  1531. data/test/regression/xlsx_files/comment13.xlsx +0 -0
  1532. data/test/regression/xlsx_files/comment14.xlsx +0 -0
  1533. data/test/regression/xlsx_files/comment15.xlsx +0 -0
  1534. data/test/regression/xlsx_files/comment16.xlsx +0 -0
  1535. data/test/regression/xlsx_files/cond_format01.xlsx +0 -0
  1536. data/test/regression/xlsx_files/cond_format02.xlsx +0 -0
  1537. data/test/regression/xlsx_files/cond_format03.xlsx +0 -0
  1538. data/test/regression/xlsx_files/cond_format04.xlsx +0 -0
  1539. data/test/regression/xlsx_files/cond_format05.xlsx +0 -0
  1540. data/test/regression/xlsx_files/cond_format06.xlsx +0 -0
  1541. data/test/regression/xlsx_files/cond_format07.xlsx +0 -0
  1542. data/test/regression/xlsx_files/cond_format08.xlsx +0 -0
  1543. data/test/regression/xlsx_files/cond_format10.xlsx +0 -0
  1544. data/test/regression/xlsx_files/cond_format11.xlsx +0 -0
  1545. data/test/regression/xlsx_files/cond_format12.xlsx +0 -0
  1546. data/test/regression/xlsx_files/cond_format14.xlsx +0 -0
  1547. data/test/regression/xlsx_files/cond_format15.xlsx +0 -0
  1548. data/test/regression/xlsx_files/cond_format16.xlsx +0 -0
  1549. data/test/regression/xlsx_files/cond_format17.xlsx +0 -0
  1550. data/test/regression/xlsx_files/cond_format18.xlsx +0 -0
  1551. data/test/regression/xlsx_files/cond_format19.xlsx +0 -0
  1552. data/test/regression/xlsx_files/cond_format20.xlsx +0 -0
  1553. data/test/regression/xlsx_files/custom_colors01.xlsx +0 -0
  1554. data/test/regression/xlsx_files/data_validation01.xlsx +0 -0
  1555. data/test/regression/xlsx_files/data_validation02.xlsx +0 -0
  1556. data/test/regression/xlsx_files/data_validation03.xlsx +0 -0
  1557. data/test/regression/xlsx_files/data_validation08.xlsx +0 -0
  1558. data/test/regression/xlsx_files/date_1904_01.xlsx +0 -0
  1559. data/test/regression/xlsx_files/date_1904_02.xlsx +0 -0
  1560. data/test/regression/xlsx_files/date_examples01.xlsx +0 -0
  1561. data/test/regression/xlsx_files/default_format01.xlsx +0 -0
  1562. data/test/regression/xlsx_files/default_row01.xlsx +0 -0
  1563. data/test/regression/xlsx_files/default_row02.xlsx +0 -0
  1564. data/test/regression/xlsx_files/default_row03.xlsx +0 -0
  1565. data/test/regression/xlsx_files/default_row04.xlsx +0 -0
  1566. data/test/regression/xlsx_files/default_row05.xlsx +0 -0
  1567. data/test/regression/xlsx_files/defined_name01.xlsx +0 -0
  1568. data/test/regression/xlsx_files/defined_name02.xlsx +0 -0
  1569. data/test/regression/xlsx_files/defined_name03.xlsx +0 -0
  1570. data/test/regression/xlsx_files/defined_name04.xlsx +0 -0
  1571. data/test/regression/xlsx_files/dynamic_array01.xlsx +0 -0
  1572. data/test/regression/xlsx_files/escapes01.xlsx +0 -0
  1573. data/test/regression/xlsx_files/escapes02.xlsx +0 -0
  1574. data/test/regression/xlsx_files/escapes03.xlsx +0 -0
  1575. data/test/regression/xlsx_files/escapes04.xlsx +0 -0
  1576. data/test/regression/xlsx_files/escapes05.xlsx +0 -0
  1577. data/test/regression/xlsx_files/escapes06.xlsx +0 -0
  1578. data/test/regression/xlsx_files/escapes07.xlsx +0 -0
  1579. data/test/regression/xlsx_files/escapes08.xlsx +0 -0
  1580. data/test/regression/xlsx_files/excel2003_style01.xlsx +0 -0
  1581. data/test/regression/xlsx_files/excel2003_style02.xlsx +0 -0
  1582. data/test/regression/xlsx_files/excel2003_style03.xlsx +0 -0
  1583. data/test/regression/xlsx_files/excel2003_style04.xlsx +0 -0
  1584. data/test/regression/xlsx_files/excel2003_style05.xlsx +0 -0
  1585. data/test/regression/xlsx_files/excel2003_style06.xlsx +0 -0
  1586. data/test/regression/xlsx_files/excel2003_style07.xlsx +0 -0
  1587. data/test/regression/xlsx_files/excel2003_style08.xlsx +0 -0
  1588. data/test/regression/xlsx_files/filehandle01.xlsx +0 -0
  1589. data/test/regression/xlsx_files/firstsheet01.xlsx +0 -0
  1590. data/test/regression/xlsx_files/fit_to_pages01.xlsx +0 -0
  1591. data/test/regression/xlsx_files/fit_to_pages02.xlsx +0 -0
  1592. data/test/regression/xlsx_files/fit_to_pages03.xlsx +0 -0
  1593. data/test/regression/xlsx_files/fit_to_pages04.xlsx +0 -0
  1594. data/test/regression/xlsx_files/fit_to_pages05.xlsx +0 -0
  1595. data/test/regression/xlsx_files/format01.xlsx +0 -0
  1596. data/test/regression/xlsx_files/format02.xlsx +0 -0
  1597. data/test/regression/xlsx_files/format03.xlsx +0 -0
  1598. data/test/regression/xlsx_files/format04.xlsx +0 -0
  1599. data/test/regression/xlsx_files/format05.xlsx +0 -0
  1600. data/test/regression/xlsx_files/format11.xlsx +0 -0
  1601. data/test/regression/xlsx_files/format12.xlsx +0 -0
  1602. data/test/regression/xlsx_files/format13.xlsx +0 -0
  1603. data/test/regression/xlsx_files/format14.xlsx +0 -0
  1604. data/test/regression/xlsx_files/format15.xlsx +0 -0
  1605. data/test/regression/xlsx_files/format16.xlsx +0 -0
  1606. data/test/regression/xlsx_files/format17.xlsx +0 -0
  1607. data/test/regression/xlsx_files/formula_results01.xlsx +0 -0
  1608. data/test/regression/xlsx_files/gridlines01.xlsx +0 -0
  1609. data/test/regression/xlsx_files/header01.xlsx +0 -0
  1610. data/test/regression/xlsx_files/header02.xlsx +0 -0
  1611. data/test/regression/xlsx_files/header03.xlsx +0 -0
  1612. data/test/regression/xlsx_files/header04.xlsx +0 -0
  1613. data/test/regression/xlsx_files/header_image01.xlsx +0 -0
  1614. data/test/regression/xlsx_files/header_image02.xlsx +0 -0
  1615. data/test/regression/xlsx_files/header_image03.xlsx +0 -0
  1616. data/test/regression/xlsx_files/header_image04.xlsx +0 -0
  1617. data/test/regression/xlsx_files/header_image05.xlsx +0 -0
  1618. data/test/regression/xlsx_files/header_image06.xlsx +0 -0
  1619. data/test/regression/xlsx_files/header_image07.xlsx +0 -0
  1620. data/test/regression/xlsx_files/header_image08.xlsx +0 -0
  1621. data/test/regression/xlsx_files/header_image09.xlsx +0 -0
  1622. data/test/regression/xlsx_files/header_image10.xlsx +0 -0
  1623. data/test/regression/xlsx_files/header_image11.xlsx +0 -0
  1624. data/test/regression/xlsx_files/header_image12.xlsx +0 -0
  1625. data/test/regression/xlsx_files/header_image13.xlsx +0 -0
  1626. data/test/regression/xlsx_files/header_image14.xlsx +0 -0
  1627. data/test/regression/xlsx_files/header_image15.xlsx +0 -0
  1628. data/test/regression/xlsx_files/header_image16.xlsx +0 -0
  1629. data/test/regression/xlsx_files/header_image17.xlsx +0 -0
  1630. data/test/regression/xlsx_files/header_image18.xlsx +0 -0
  1631. data/test/regression/xlsx_files/header_image19.xlsx +0 -0
  1632. data/test/regression/xlsx_files/hide01.xlsx +0 -0
  1633. data/test/regression/xlsx_files/hyperlink01.xlsx +0 -0
  1634. data/test/regression/xlsx_files/hyperlink02.xlsx +0 -0
  1635. data/test/regression/xlsx_files/hyperlink03.xlsx +0 -0
  1636. data/test/regression/xlsx_files/hyperlink04.xlsx +0 -0
  1637. data/test/regression/xlsx_files/hyperlink05.xlsx +0 -0
  1638. data/test/regression/xlsx_files/hyperlink06.xlsx +0 -0
  1639. data/test/regression/xlsx_files/hyperlink07.xlsx +0 -0
  1640. data/test/regression/xlsx_files/hyperlink08.xlsx +0 -0
  1641. data/test/regression/xlsx_files/hyperlink09.xlsx +0 -0
  1642. data/test/regression/xlsx_files/hyperlink10.xlsx +0 -0
  1643. data/test/regression/xlsx_files/hyperlink11.xlsx +0 -0
  1644. data/test/regression/xlsx_files/hyperlink12.xlsx +0 -0
  1645. data/test/regression/xlsx_files/hyperlink13.xlsx +0 -0
  1646. data/test/regression/xlsx_files/hyperlink14.xlsx +0 -0
  1647. data/test/regression/xlsx_files/hyperlink15.xlsx +0 -0
  1648. data/test/regression/xlsx_files/hyperlink16.xlsx +0 -0
  1649. data/test/regression/xlsx_files/hyperlink17.xlsx +0 -0
  1650. data/test/regression/xlsx_files/hyperlink18.xlsx +0 -0
  1651. data/test/regression/xlsx_files/hyperlink20.xlsx +0 -0
  1652. data/test/regression/xlsx_files/hyperlink21.xlsx +0 -0
  1653. data/test/regression/xlsx_files/hyperlink22.xlsx +0 -0
  1654. data/test/regression/xlsx_files/hyperlink23.xlsx +0 -0
  1655. data/test/regression/xlsx_files/hyperlink24.xlsx +0 -0
  1656. data/test/regression/xlsx_files/hyperlink25.xlsx +0 -0
  1657. data/test/regression/xlsx_files/hyperlink26.xlsx +0 -0
  1658. data/test/regression/xlsx_files/hyperlink27.xlsx +0 -0
  1659. data/test/regression/xlsx_files/hyperlink28.xlsx +0 -0
  1660. data/test/regression/xlsx_files/hyperlink29.xlsx +0 -0
  1661. data/test/regression/xlsx_files/hyperlink30.xlsx +0 -0
  1662. data/test/regression/xlsx_files/hyperlink31.xlsx +0 -0
  1663. data/test/regression/xlsx_files/hyperlink32.xlsx +0 -0
  1664. data/test/regression/xlsx_files/hyperlink33.xlsx +0 -0
  1665. data/test/regression/xlsx_files/hyperlink34.xlsx +0 -0
  1666. data/test/regression/xlsx_files/hyperlink35.xlsx +0 -0
  1667. data/test/regression/xlsx_files/hyperlink36.xlsx +0 -0
  1668. data/test/regression/xlsx_files/hyperlink37.xlsx +0 -0
  1669. data/test/regression/xlsx_files/hyperlink38.xlsx +0 -0
  1670. data/test/regression/xlsx_files/hyperlink39.xlsx +0 -0
  1671. data/test/regression/xlsx_files/hyperlink40.xlsx +0 -0
  1672. data/test/regression/xlsx_files/hyperlink41.xlsx +0 -0
  1673. data/test/regression/xlsx_files/hyperlink42.xlsx +0 -0
  1674. data/test/regression/xlsx_files/hyperlink43.xlsx +0 -0
  1675. data/test/regression/xlsx_files/hyperlink44.xlsx +0 -0
  1676. data/test/regression/xlsx_files/hyperlink45.xlsx +0 -0
  1677. data/test/regression/xlsx_files/hyperlink46.xlsx +0 -0
  1678. data/test/regression/xlsx_files/hyperlink47.xlsx +0 -0
  1679. data/test/regression/xlsx_files/hyperlink48.xlsx +0 -0
  1680. data/test/regression/xlsx_files/hyperlink49.xlsx +0 -0
  1681. data/test/regression/xlsx_files/hyperlink50.xlsx +0 -0
  1682. data/test/regression/xlsx_files/hyperlink51.xlsx +0 -0
  1683. data/test/regression/xlsx_files/ignore_error01.xlsx +0 -0
  1684. data/test/regression/xlsx_files/ignore_error02.xlsx +0 -0
  1685. data/test/regression/xlsx_files/ignore_error03.xlsx +0 -0
  1686. data/test/regression/xlsx_files/ignore_error04.xlsx +0 -0
  1687. data/test/regression/xlsx_files/ignore_error05.xlsx +0 -0
  1688. data/test/regression/xlsx_files/ignore_error06.xlsx +0 -0
  1689. data/test/regression/xlsx_files/image01.xlsx +0 -0
  1690. data/test/regression/xlsx_files/image02.xlsx +0 -0
  1691. data/test/regression/xlsx_files/image03.xlsx +0 -0
  1692. data/test/regression/xlsx_files/image04.xlsx +0 -0
  1693. data/test/regression/xlsx_files/image05.xlsx +0 -0
  1694. data/test/regression/xlsx_files/image06.xlsx +0 -0
  1695. data/test/regression/xlsx_files/image07.xlsx +0 -0
  1696. data/test/regression/xlsx_files/image08.xlsx +0 -0
  1697. data/test/regression/xlsx_files/image09.xlsx +0 -0
  1698. data/test/regression/xlsx_files/image10.xlsx +0 -0
  1699. data/test/regression/xlsx_files/image11.xlsx +0 -0
  1700. data/test/regression/xlsx_files/image12.xlsx +0 -0
  1701. data/test/regression/xlsx_files/image13.xlsx +0 -0
  1702. data/test/regression/xlsx_files/image14.xlsx +0 -0
  1703. data/test/regression/xlsx_files/image15.xlsx +0 -0
  1704. data/test/regression/xlsx_files/image16.xlsx +0 -0
  1705. data/test/regression/xlsx_files/image17.xlsx +0 -0
  1706. data/test/regression/xlsx_files/image18.xlsx +0 -0
  1707. data/test/regression/xlsx_files/image19.xlsx +0 -0
  1708. data/test/regression/xlsx_files/image22.xlsx +0 -0
  1709. data/test/regression/xlsx_files/image23.xlsx +0 -0
  1710. data/test/regression/xlsx_files/image24.xlsx +0 -0
  1711. data/test/regression/xlsx_files/image25.xlsx +0 -0
  1712. data/test/regression/xlsx_files/image26.xlsx +0 -0
  1713. data/test/regression/xlsx_files/image27.xlsx +0 -0
  1714. data/test/regression/xlsx_files/image28.xlsx +0 -0
  1715. data/test/regression/xlsx_files/image29.xlsx +0 -0
  1716. data/test/regression/xlsx_files/image30.xlsx +0 -0
  1717. data/test/regression/xlsx_files/image31.xlsx +0 -0
  1718. data/test/regression/xlsx_files/image32.xlsx +0 -0
  1719. data/test/regression/xlsx_files/image33.xlsx +0 -0
  1720. data/test/regression/xlsx_files/image35.xlsx +0 -0
  1721. data/test/regression/xlsx_files/image36.xlsx +0 -0
  1722. data/test/regression/xlsx_files/image44.xlsx +0 -0
  1723. data/test/regression/xlsx_files/image45.xlsx +0 -0
  1724. data/test/regression/xlsx_files/image46.xlsx +0 -0
  1725. data/test/regression/xlsx_files/image47.xlsx +0 -0
  1726. data/test/regression/xlsx_files/image48.xlsx +0 -0
  1727. data/test/regression/xlsx_files/image49.xlsx +0 -0
  1728. data/test/regression/xlsx_files/image50.xlsx +0 -0
  1729. data/test/regression/xlsx_files/image51.xlsx +0 -0
  1730. data/test/regression/xlsx_files/image52.xlsx +0 -0
  1731. data/test/regression/xlsx_files/image53.xlsx +0 -0
  1732. data/test/regression/xlsx_files/image54.xlsx +0 -0
  1733. data/test/regression/xlsx_files/image55.xlsx +0 -0
  1734. data/test/regression/xlsx_files/image56.xlsx +0 -0
  1735. data/test/regression/xlsx_files/image57.xlsx +0 -0
  1736. data/test/regression/xlsx_files/landscape01.xlsx +0 -0
  1737. data/test/regression/xlsx_files/macro01.xlsm +0 -0
  1738. data/test/regression/xlsx_files/merge_cells01.xlsx +0 -0
  1739. data/test/regression/xlsx_files/merge_range01.xlsx +0 -0
  1740. data/test/regression/xlsx_files/merge_range02.xlsx +0 -0
  1741. data/test/regression/xlsx_files/merge_range03.xlsx +0 -0
  1742. data/test/regression/xlsx_files/merge_range04.xlsx +0 -0
  1743. data/test/regression/xlsx_files/merge_range05.xlsx +0 -0
  1744. data/test/regression/xlsx_files/object_position01.xlsx +0 -0
  1745. data/test/regression/xlsx_files/object_position02.xlsx +0 -0
  1746. data/test/regression/xlsx_files/object_position03.xlsx +0 -0
  1747. data/test/regression/xlsx_files/object_position04.xlsx +0 -0
  1748. data/test/regression/xlsx_files/object_position06.xlsx +0 -0
  1749. data/test/regression/xlsx_files/object_position07.xlsx +0 -0
  1750. data/test/regression/xlsx_files/object_position08.xlsx +0 -0
  1751. data/test/regression/xlsx_files/object_position09.xlsx +0 -0
  1752. data/test/regression/xlsx_files/object_position10.xlsx +0 -0
  1753. data/test/regression/xlsx_files/object_position12.xlsx +0 -0
  1754. data/test/regression/xlsx_files/object_position13.xlsx +0 -0
  1755. data/test/regression/xlsx_files/object_position14.xlsx +0 -0
  1756. data/test/regression/xlsx_files/object_position15.xlsx +0 -0
  1757. data/test/regression/xlsx_files/object_position16.xlsx +0 -0
  1758. data/test/regression/xlsx_files/object_position17.xlsx +0 -0
  1759. data/test/regression/xlsx_files/object_position18.xlsx +0 -0
  1760. data/test/regression/xlsx_files/object_position19.xlsx +0 -0
  1761. data/test/regression/xlsx_files/object_position20.xlsx +0 -0
  1762. data/test/regression/xlsx_files/outline01.xlsx +0 -0
  1763. data/test/regression/xlsx_files/outline02.xlsx +0 -0
  1764. data/test/regression/xlsx_files/outline03.xlsx +0 -0
  1765. data/test/regression/xlsx_files/outline04.xlsx +0 -0
  1766. data/test/regression/xlsx_files/outline05.xlsx +0 -0
  1767. data/test/regression/xlsx_files/outline06.xlsx +0 -0
  1768. data/test/regression/xlsx_files/page_breaks01.xlsx +0 -0
  1769. data/test/regression/xlsx_files/page_breaks02.xlsx +0 -0
  1770. data/test/regression/xlsx_files/page_breaks03.xlsx +0 -0
  1771. data/test/regression/xlsx_files/page_breaks04.xlsx +0 -0
  1772. data/test/regression/xlsx_files/page_breaks05.xlsx +0 -0
  1773. data/test/regression/xlsx_files/page_breaks06.xlsx +0 -0
  1774. data/test/regression/xlsx_files/page_view01.xlsx +0 -0
  1775. data/test/regression/xlsx_files/panes01.xlsx +0 -0
  1776. data/test/regression/xlsx_files/print_across01.xlsx +0 -0
  1777. data/test/regression/xlsx_files/print_area01.xlsx +0 -0
  1778. data/test/regression/xlsx_files/print_area02.xlsx +0 -0
  1779. data/test/regression/xlsx_files/print_area03.xlsx +0 -0
  1780. data/test/regression/xlsx_files/print_area04.xlsx +0 -0
  1781. data/test/regression/xlsx_files/print_area05.xlsx +0 -0
  1782. data/test/regression/xlsx_files/print_area06.xlsx +0 -0
  1783. data/test/regression/xlsx_files/print_area07.xlsx +0 -0
  1784. data/test/regression/xlsx_files/print_options01.xlsx +0 -0
  1785. data/test/regression/xlsx_files/print_options02.xlsx +0 -0
  1786. data/test/regression/xlsx_files/print_options03.xlsx +0 -0
  1787. data/test/regression/xlsx_files/print_options04.xlsx +0 -0
  1788. data/test/regression/xlsx_files/print_options05.xlsx +0 -0
  1789. data/test/regression/xlsx_files/print_options06.xlsx +0 -0
  1790. data/test/regression/xlsx_files/print_options07.xlsx +0 -0
  1791. data/test/regression/xlsx_files/print_scale01.xlsx +0 -0
  1792. data/test/regression/xlsx_files/print_scale02.xlsx +0 -0
  1793. data/test/regression/xlsx_files/properties01.xlsx +0 -0
  1794. data/test/regression/xlsx_files/properties02.xlsx +0 -0
  1795. data/test/regression/xlsx_files/properties03.xlsx +0 -0
  1796. data/test/regression/xlsx_files/properties04.xlsx +0 -0
  1797. data/test/regression/xlsx_files/properties05.xlsx +0 -0
  1798. data/test/regression/xlsx_files/protect01.xlsx +0 -0
  1799. data/test/regression/xlsx_files/protect02.xlsx +0 -0
  1800. data/test/regression/xlsx_files/protect03.xlsx +0 -0
  1801. data/test/regression/xlsx_files/protect04.xlsx +0 -0
  1802. data/test/regression/xlsx_files/protect05.xlsx +0 -0
  1803. data/test/regression/xlsx_files/protect06.xlsx +0 -0
  1804. data/test/regression/xlsx_files/protect07.xlsx +0 -0
  1805. data/test/regression/xlsx_files/quote_name01.xlsx +0 -0
  1806. data/test/regression/xlsx_files/quote_name02.xlsx +0 -0
  1807. data/test/regression/xlsx_files/quote_name03.xlsx +0 -0
  1808. data/test/regression/xlsx_files/quote_name04.xlsx +0 -0
  1809. data/test/regression/xlsx_files/repeat01.xlsx +0 -0
  1810. data/test/regression/xlsx_files/repeat02.xlsx +0 -0
  1811. data/test/regression/xlsx_files/repeat03.xlsx +0 -0
  1812. data/test/regression/xlsx_files/repeat04.xlsx +0 -0
  1813. data/test/regression/xlsx_files/repeat05.xlsx +0 -0
  1814. data/test/regression/xlsx_files/rich_string01.xlsx +0 -0
  1815. data/test/regression/xlsx_files/rich_string02.xlsx +0 -0
  1816. data/test/regression/xlsx_files/rich_string03.xlsx +0 -0
  1817. data/test/regression/xlsx_files/rich_string04.xlsx +0 -0
  1818. data/test/regression/xlsx_files/rich_string05.xlsx +0 -0
  1819. data/test/regression/xlsx_files/rich_string06.xlsx +0 -0
  1820. data/test/regression/xlsx_files/rich_string07.xlsx +0 -0
  1821. data/test/regression/xlsx_files/rich_string08.xlsx +0 -0
  1822. data/test/regression/xlsx_files/rich_string09.xlsx +0 -0
  1823. data/test/regression/xlsx_files/rich_string10.xlsx +0 -0
  1824. data/test/regression/xlsx_files/rich_string11.xlsx +0 -0
  1825. data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
  1826. data/test/regression/xlsx_files/row_col_format01.xlsx +0 -0
  1827. data/test/regression/xlsx_files/row_col_format02.xlsx +0 -0
  1828. data/test/regression/xlsx_files/row_col_format03.xlsx +0 -0
  1829. data/test/regression/xlsx_files/row_col_format04.xlsx +0 -0
  1830. data/test/regression/xlsx_files/row_col_format05.xlsx +0 -0
  1831. data/test/regression/xlsx_files/row_col_format06.xlsx +0 -0
  1832. data/test/regression/xlsx_files/row_col_format07.xlsx +0 -0
  1833. data/test/regression/xlsx_files/row_col_format08.xlsx +0 -0
  1834. data/test/regression/xlsx_files/row_col_format09.xlsx +0 -0
  1835. data/test/regression/xlsx_files/row_col_format10.xlsx +0 -0
  1836. data/test/regression/xlsx_files/row_col_format11.xlsx +0 -0
  1837. data/test/regression/xlsx_files/row_col_format12.xlsx +0 -0
  1838. data/test/regression/xlsx_files/row_col_format13.xlsx +0 -0
  1839. data/test/regression/xlsx_files/row_col_format14.xlsx +0 -0
  1840. data/test/regression/xlsx_files/selection01.xlsx +0 -0
  1841. data/test/regression/xlsx_files/selection02.xlsx +0 -0
  1842. data/test/regression/xlsx_files/set_column01.xlsx +0 -0
  1843. data/test/regression/xlsx_files/set_column03.xlsx +0 -0
  1844. data/test/regression/xlsx_files/set_column04.xlsx +0 -0
  1845. data/test/regression/xlsx_files/set_column05.xlsx +0 -0
  1846. data/test/regression/xlsx_files/set_column06.xlsx +0 -0
  1847. data/test/regression/xlsx_files/set_column07.xlsx +0 -0
  1848. data/test/regression/xlsx_files/set_column08.xlsx +0 -0
  1849. data/test/regression/xlsx_files/set_column09.xlsx +0 -0
  1850. data/test/regression/xlsx_files/set_print_scale01.xlsx +0 -0
  1851. data/test/regression/xlsx_files/set_row01.xlsx +0 -0
  1852. data/test/regression/xlsx_files/set_row03.xlsx +0 -0
  1853. data/test/regression/xlsx_files/set_start_page01.xlsx +0 -0
  1854. data/test/regression/xlsx_files/set_start_page02.xlsx +0 -0
  1855. data/test/regression/xlsx_files/set_start_page03.xlsx +0 -0
  1856. data/test/regression/xlsx_files/shape01.xlsx +0 -0
  1857. data/test/regression/xlsx_files/shape02.xlsx +0 -0
  1858. data/test/regression/xlsx_files/shape03.xlsx +0 -0
  1859. data/test/regression/xlsx_files/shape04.xlsx +0 -0
  1860. data/test/regression/xlsx_files/shape_connect01.xlsx +0 -0
  1861. data/test/regression/xlsx_files/shape_connect02.xlsx +0 -0
  1862. data/test/regression/xlsx_files/shape_connect03.xlsx +0 -0
  1863. data/test/regression/xlsx_files/shape_connect04.xlsx +0 -0
  1864. data/test/regression/xlsx_files/shape_scale01.xlsx +0 -0
  1865. data/test/regression/xlsx_files/shape_stencil01.xlsx +0 -0
  1866. data/test/regression/xlsx_files/shared_strings01.xlsx +0 -0
  1867. data/test/regression/xlsx_files/shared_strings02.xlsx +0 -0
  1868. data/test/regression/xlsx_files/shared_strings_encoding.xlsx +0 -0
  1869. data/test/regression/xlsx_files/simple01.xlsx +0 -0
  1870. data/test/regression/xlsx_files/simple02.xlsx +0 -0
  1871. data/test/regression/xlsx_files/simple03.xlsx +0 -0
  1872. data/test/regression/xlsx_files/simple04.xlsx +0 -0
  1873. data/test/regression/xlsx_files/simple05.xlsx +0 -0
  1874. data/test/regression/xlsx_files/tab_color01.xlsx +0 -0
  1875. data/test/regression/xlsx_files/table01.xlsx +0 -0
  1876. data/test/regression/xlsx_files/table02.xlsx +0 -0
  1877. data/test/regression/xlsx_files/table03.xlsx +0 -0
  1878. data/test/regression/xlsx_files/table04.xlsx +0 -0
  1879. data/test/regression/xlsx_files/table05.xlsx +0 -0
  1880. data/test/regression/xlsx_files/table06.xlsx +0 -0
  1881. data/test/regression/xlsx_files/table07.xlsx +0 -0
  1882. data/test/regression/xlsx_files/table08.xlsx +0 -0
  1883. data/test/regression/xlsx_files/table09.xlsx +0 -0
  1884. data/test/regression/xlsx_files/table10.xlsx +0 -0
  1885. data/test/regression/xlsx_files/table11.xlsx +0 -0
  1886. data/test/regression/xlsx_files/table12.xlsx +0 -0
  1887. data/test/regression/xlsx_files/table13.xlsx +0 -0
  1888. data/test/regression/xlsx_files/table14.xlsx +0 -0
  1889. data/test/regression/xlsx_files/table15.xlsx +0 -0
  1890. data/test/regression/xlsx_files/table17.xlsx +0 -0
  1891. data/test/regression/xlsx_files/table18.xlsx +0 -0
  1892. data/test/regression/xlsx_files/table19.xlsx +0 -0
  1893. data/test/regression/xlsx_files/table21.xlsx +0 -0
  1894. data/test/regression/xlsx_files/table22.xlsx +0 -0
  1895. data/test/regression/xlsx_files/table23.xlsx +0 -0
  1896. data/test/regression/xlsx_files/table24.xlsx +0 -0
  1897. data/test/regression/xlsx_files/table25.xlsx +0 -0
  1898. data/test/regression/xlsx_files/table26.xlsx +0 -0
  1899. data/test/regression/xlsx_files/tutorial01.xlsx +0 -0
  1900. data/test/regression/xlsx_files/tutorial02.xlsx +0 -0
  1901. data/test/regression/xlsx_files/tutorial03.xlsx +0 -0
  1902. data/test/regression/xlsx_files/types02.xlsx +0 -0
  1903. data/test/regression/xlsx_files/types08.xlsx +0 -0
  1904. data/test/regression/xlsx_files/update_range_format_with_params.xlsx +0 -0
  1905. data/test/regression/xlsx_files/urls_as_strings.xlsx +0 -0
  1906. data/test/regression/xlsx_files/utf8_01.xlsx +0 -0
  1907. data/test/regression/xlsx_files/utf8_03.xlsx +0 -0
  1908. data/test/regression/xlsx_files/utf8_04.xlsx +0 -0
  1909. data/test/regression/xlsx_files/utf8_05.xlsx +0 -0
  1910. data/test/regression/xlsx_files/utf8_06.xlsx +0 -0
  1911. data/test/regression/xlsx_files/utf8_07.xlsx +0 -0
  1912. data/test/regression/xlsx_files/utf8_08.xlsx +0 -0
  1913. data/test/regression/xlsx_files/utf8_09.xlsx +0 -0
  1914. data/test/regression/xlsx_files/utf8_10.xlsx +0 -0
  1915. data/test/regression/xlsx_files/utf8_11.xlsx +0 -0
  1916. data/test/regression/xlsx_files/vbaProject01.bin +0 -0
  1917. data/test/regression/xlsx_files/vbaProject02.bin +0 -0
  1918. data/test/regression/xlsx_files/vml01.xlsx +0 -0
  1919. data/test/regression/xlsx_files/vml02.xlsx +0 -0
  1920. data/test/regression/xlsx_files/vml03.xlsx +0 -0
  1921. data/test/regression/xlsx_files/vml04.xlsx +0 -0
  1922. data/test/republic.png +0 -0
  1923. data/test/run_test.rb +0 -9
  1924. data/test/test_delete_files.rb +0 -37
  1925. data/test/test_example_match.rb +0 -6348
  1926. data/test/test_option_hash_for_workbook.rb +0 -72
  1927. data/test/test_xml_writer_simple.rb +0 -64
  1928. data/test/utility/test_range.rb +0 -20
  1929. data/test/vbaProject.bin +0 -0
  1930. data/test/workbook/test_check_sheetname.rb +0 -51
  1931. data/test/workbook/test_define_name.rb +0 -16
  1932. data/test/workbook/test_get_chart_range.rb +0 -57
  1933. data/test/workbook/test_sort_defined_names.rb +0 -77
  1934. data/test/workbook/test_workbook_01.rb +0 -29
  1935. data/test/workbook/test_workbook_02.rb +0 -31
  1936. data/test/workbook/test_workbook_03.rb +0 -31
  1937. data/test/workbook/test_worksheet_by_name.rb +0 -35
  1938. data/test/workbook/test_write_calc_pr.rb +0 -41
  1939. data/test/workbook/test_write_defined_name.rb +0 -17
  1940. data/test/workbook/test_write_defined_names.rb +0 -41
  1941. data/test/workbook/test_write_workbook_view.rb +0 -117
  1942. data/test/worksheet/test_calculate_spans.rb +0 -58
  1943. data/test/worksheet/test_cond_format_01.rb +0 -82
  1944. data/test/worksheet/test_cond_format_02.rb +0 -87
  1945. data/test/worksheet/test_cond_format_03.rb +0 -97
  1946. data/test/worksheet/test_cond_format_04.rb +0 -85
  1947. data/test/worksheet/test_cond_format_05.rb +0 -96
  1948. data/test/worksheet/test_cond_format_06.rb +0 -106
  1949. data/test/worksheet/test_cond_format_07.rb +0 -116
  1950. data/test/worksheet/test_cond_format_08.rb +0 -115
  1951. data/test/worksheet/test_cond_format_09.rb +0 -108
  1952. data/test/worksheet/test_cond_format_10.rb +0 -83
  1953. data/test/worksheet/test_cond_format_11.rb +0 -85
  1954. data/test/worksheet/test_cond_format_12.rb +0 -133
  1955. data/test/worksheet/test_cond_format_13.rb +0 -135
  1956. data/test/worksheet/test_cond_format_14.rb +0 -132
  1957. data/test/worksheet/test_cond_format_15.rb +0 -93
  1958. data/test/worksheet/test_cond_format_16.rb +0 -138
  1959. data/test/worksheet/test_cond_format_17.rb +0 -141
  1960. data/test/worksheet/test_cond_format_18.rb +0 -135
  1961. data/test/worksheet/test_cond_format_19.rb +0 -139
  1962. data/test/worksheet/test_cond_format_20.rb +0 -119
  1963. data/test/worksheet/test_cond_format_21.rb +0 -90
  1964. data/test/worksheet/test_cond_format_22.rb +0 -266
  1965. data/test/worksheet/test_cond_format_23.rb +0 -242
  1966. data/test/worksheet/test_cond_format_24.rb +0 -303
  1967. data/test/worksheet/test_convert_date_time_01.rb +0 -439
  1968. data/test/worksheet/test_convert_date_time_02.rb +0 -472
  1969. data/test/worksheet/test_convert_date_time_03.rb +0 -435
  1970. data/test/worksheet/test_convert_date_time_04.rb +0 -19
  1971. data/test/worksheet/test_data_bar_01.rb +0 -53
  1972. data/test/worksheet/test_data_bar_02.rb +0 -79
  1973. data/test/worksheet/test_data_bar_03.rb +0 -147
  1974. data/test/worksheet/test_data_bar_04.rb +0 -145
  1975. data/test/worksheet/test_data_bar_05.rb +0 -147
  1976. data/test/worksheet/test_data_bar_06.rb +0 -145
  1977. data/test/worksheet/test_data_bar_07.rb +0 -146
  1978. data/test/worksheet/test_data_bar_08.rb +0 -54
  1979. data/test/worksheet/test_data_bar_09.rb +0 -80
  1980. data/test/worksheet/test_data_bar_10.rb +0 -165
  1981. data/test/worksheet/test_data_bar_11.rb +0 -167
  1982. data/test/worksheet/test_data_bar_12.rb +0 -104
  1983. data/test/worksheet/test_extract_filter_tokens.rb +0 -109
  1984. data/test/worksheet/test_parse_filter_expression.rb +0 -143
  1985. data/test/worksheet/test_pixels_to_row_col.rb +0 -46
  1986. data/test/worksheet/test_position_object.rb +0 -50
  1987. data/test/worksheet/test_repeat_formula.rb +0 -55
  1988. data/test/worksheet/test_sparkline_01.rb +0 -65
  1989. data/test/worksheet/test_sparkline_02.rb +0 -92
  1990. data/test/worksheet/test_sparkline_03.rb +0 -133
  1991. data/test/worksheet/test_sparkline_04.rb +0 -93
  1992. data/test/worksheet/test_sparkline_05.rb +0 -93
  1993. data/test/worksheet/test_sparkline_06.rb +0 -114
  1994. data/test/worksheet/test_sparkline_07.rb +0 -357
  1995. data/test/worksheet/test_sparkline_08.rb +0 -177
  1996. data/test/worksheet/test_sparkline_09.rb +0 -1250
  1997. data/test/worksheet/test_sparkline_10.rb +0 -107
  1998. data/test/worksheet/test_sparkline_11.rb +0 -218
  1999. data/test/worksheet/test_sparkline_12.rb +0 -94
  2000. data/test/worksheet/test_update_format_methods.rb +0 -91
  2001. data/test/worksheet/test_worksheet_01.rb +0 -32
  2002. data/test/worksheet/test_worksheet_02.rb +0 -38
  2003. data/test/worksheet/test_worksheet_03.rb +0 -44
  2004. data/test/worksheet/test_worksheet_04.rb +0 -45
  2005. data/test/worksheet/test_write_array_formula_01.rb +0 -98
  2006. data/test/worksheet/test_write_autofilter.rb +0 -260
  2007. data/test/worksheet/test_write_brk.rb +0 -18
  2008. data/test/worksheet/test_write_cell.rb +0 -54
  2009. data/test/worksheet/test_write_cell_value.rb +0 -33
  2010. data/test/worksheet/test_write_col_breaks.rb +0 -27
  2011. data/test/worksheet/test_write_col_info.rb +0 -95
  2012. data/test/worksheet/test_write_conditional_formatting.rb +0 -72
  2013. data/test/worksheet/test_write_custom_filter.rb +0 -18
  2014. data/test/worksheet/test_write_custom_filters.rb +0 -25
  2015. data/test/worksheet/test_write_data_validation_01.rb +0 -113
  2016. data/test/worksheet/test_write_data_validation_02.rb +0 -585
  2017. data/test/worksheet/test_write_dimension.rb +0 -94
  2018. data/test/worksheet/test_write_filter.rb +0 -18
  2019. data/test/worksheet/test_write_filter_column.rb +0 -18
  2020. data/test/worksheet/test_write_filters.rb +0 -32
  2021. data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +0 -18
  2022. data/test/worksheet/test_write_header_footer.rb +0 -58
  2023. data/test/worksheet/test_write_hyperlink.rb +0 -32
  2024. data/test/worksheet/test_write_legacy_drawing.rb +0 -19
  2025. data/test/worksheet/test_write_merge_cell.rb +0 -18
  2026. data/test/worksheet/test_write_merge_cells.rb +0 -192
  2027. data/test/worksheet/test_write_methods.rb +0 -248
  2028. data/test/worksheet/test_write_page_margins.rb +0 -98
  2029. data/test/worksheet/test_write_page_set_up_pr.rb +0 -19
  2030. data/test/worksheet/test_write_page_setup.rb +0 -54
  2031. data/test/worksheet/test_write_pane.rb +0 -123
  2032. data/test/worksheet/test_write_phonetic_pr.rb +0 -19
  2033. data/test/worksheet/test_write_print_options.rb +0 -77
  2034. data/test/worksheet/test_write_row_breaks.rb +0 -27
  2035. data/test/worksheet/test_write_row_element.rb +0 -69
  2036. data/test/worksheet/test_write_selection.rb +0 -18
  2037. data/test/worksheet/test_write_sheet_calc_pr.rb +0 -18
  2038. data/test/worksheet/test_write_sheet_data.rb +0 -18
  2039. data/test/worksheet/test_write_sheet_format_pr.rb +0 -18
  2040. data/test/worksheet/test_write_sheet_pr.rb +0 -36
  2041. data/test/worksheet/test_write_sheet_protection.rb +0 -174
  2042. data/test/worksheet/test_write_sheet_view.rb +0 -71
  2043. data/test/worksheet/test_write_sheet_view1.rb +0 -64
  2044. data/test/worksheet/test_write_sheet_view2.rb +0 -56
  2045. data/test/worksheet/test_write_sheet_view3.rb +0 -83
  2046. data/test/worksheet/test_write_sheet_view4.rb +0 -83
  2047. data/test/worksheet/test_write_sheet_view5.rb +0 -74
  2048. data/test/worksheet/test_write_sheet_view6.rb +0 -51
  2049. data/test/worksheet/test_write_sheet_view7.rb +0 -71
  2050. data/test/worksheet/test_write_sheet_view8.rb +0 -51
  2051. data/test/worksheet/test_write_sheet_view9.rb +0 -51
  2052. data/test/worksheet/test_write_tab_color.rb +0 -23
  2053. data/test/worksheet/test_write_worksheet_attributes.rb +0 -21
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # frozen_string_literal: true
3
+
3
4
  require 'write_xlsx/package/xml_writer_simple'
4
5
  require 'write_xlsx/package/button'
5
6
  require 'write_xlsx/colors'
@@ -36,7 +37,7 @@ module Writexlsx
36
37
  attr_reader :vba_codename # :nodoc:
37
38
  attr_writer :excel_version
38
39
 
39
- def initialize(workbook, index, name) #:nodoc:
40
+ def initialize(workbook, index, name) # :nodoc:
40
41
  @writer = Package::XMLWriterSimple.new
41
42
 
42
43
  @workbook = workbook
@@ -138,19 +139,19 @@ module Writexlsx
138
139
  @original_row_height = 12.75
139
140
  @default_row_height = 12.75
140
141
  @default_row_pixels = 17
141
- self::margins_left_right = 0.75
142
- self::margins_top_bottom = 1
142
+ self.margins_left_right = 0.75
143
+ self.margins_top_bottom = 1
143
144
  @page_setup.margin_header = 0.5
144
145
  @page_setup.margin_footer = 0.5
145
146
  @page_setup.header_footer_aligns = false
146
147
  end
147
148
  end
148
149
 
149
- def set_xml_writer(filename) #:nodoc:
150
+ def set_xml_writer(filename) # :nodoc:
150
151
  @writer.set_xml_writer(filename)
151
152
  end
152
153
 
153
- def assemble_xml_file #:nodoc:
154
+ def assemble_xml_file # :nodoc:
154
155
  write_xml_declaration do
155
156
  @writer.tag_elements('worksheet', write_worksheet_attributes) do
156
157
  write_sheet_pr
@@ -188,9 +189,7 @@ module Writexlsx
188
189
  #
189
190
  # The name method is used to retrieve the name of a worksheet.
190
191
  #
191
- def name
192
- @name
193
- end
192
+ attr_reader :name
194
193
 
195
194
  #
196
195
  # Set this worksheet as a selected worksheet, i.e. the worksheet has its tab
@@ -244,8 +243,10 @@ module Writexlsx
244
243
  @protect = protect_default_settings.merge(options)
245
244
 
246
245
  # Set the password after the user defined values.
247
- @protect[:password] =
248
- encode_password(password) if password && password != ''
246
+ if password && password != ''
247
+ @protect[:password] =
248
+ encode_password(password)
249
+ end
249
250
  end
250
251
 
251
252
  #
@@ -300,7 +301,7 @@ module Writexlsx
300
301
  def set_column(*args)
301
302
  # Check for a cell reference in A1 notation and substitute row and column
302
303
  if args[0].to_s =~ /^\D/
303
- row1, firstcol, row2, lastcol, *data = substitute_cellref(*args)
304
+ _row1, firstcol, _row2, lastcol, *data = substitute_cellref(*args)
304
305
  else
305
306
  firstcol, lastcol, *data = args
306
307
  end
@@ -342,9 +343,9 @@ module Writexlsx
342
343
 
343
344
  # Store the col sizes for use when calculating image vertices taking
344
345
  # hidden columns into account. Also store the column formats.
345
- width = @default_col_width unless width
346
+ width ||= @default_col_width
346
347
 
347
- (firstcol .. lastcol).each do |col|
348
+ (firstcol..lastcol).each do |col|
348
349
  @col_sizes[col] = [width, hidden]
349
350
  @col_formats[col] = format if format
350
351
  end
@@ -376,9 +377,7 @@ module Writexlsx
376
377
  hidden = data[4] || 0
377
378
  level = data[5]
378
379
 
379
- if ptrue?(pixels)
380
- width = pixels_to_width(pixels)
381
- end
380
+ width = pixels_to_width(pixels) if ptrue?(pixels)
382
381
 
383
382
  set_column(first_col, last_col, width, format, hidden, level)
384
383
  end
@@ -408,7 +407,7 @@ module Writexlsx
408
407
  # Selection isn't set for cell A1.
409
408
  return if sqref == 'A1'
410
409
 
411
- @selections = [ [ nil, active_cell, sqref ] ]
410
+ @selections = [[nil, active_cell, sqref]]
412
411
  end
413
412
 
414
413
  #
@@ -431,7 +430,7 @@ module Writexlsx
431
430
  left_col ||= col
432
431
  type ||= 0
433
432
 
434
- @panes = [row, col, top_row, left_col, type ]
433
+ @panes = [row, col, top_row, left_col, type]
435
434
  end
436
435
 
437
436
  #
@@ -492,7 +491,7 @@ module Writexlsx
492
491
 
493
492
  def set_paper(paper_size)
494
493
  put_deprecate_message("#{self}.set_paper")
495
- self::paper = paper_size
494
+ self.paper = paper_size
496
495
  end
497
496
 
498
497
  #
@@ -500,26 +499,21 @@ module Writexlsx
500
499
  #
501
500
  def set_header(string = '', margin = 0.3, options = {})
502
501
  raise 'Header string must be less than 255 characters' if string.length > 255
502
+
503
503
  # Replace the Excel placeholder &[Picture] with the internal &G.
504
504
  @page_setup.header = string.gsub(/&\[Picture\]/, '&G')
505
505
 
506
- if options[:align_with_margins]
507
- @page_setup.header_footer_aligns = options[:align_with_margins]
508
- end
506
+ @page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
509
507
 
510
- if options[:scale_with_doc]
511
- @page_setup.header_footer_scales = options[:scale_with_doc]
512
- end
508
+ @page_setup.header_footer_scales = options[:scale_with_doc] if options[:scale_with_doc]
513
509
 
514
510
  # Reset the array in case the function is called more than once.
515
511
  @header_images = []
516
512
 
517
513
  [
518
- [:image_left, 'LH'], [:image_center, 'CH'], [:image_right, 'RH']
514
+ [:image_left, 'LH'], [:image_center, 'CH'], [:image_right, 'RH']
519
515
  ].each do |p|
520
- if options[p.first]
521
- @header_images << [options[p.first], p.last]
522
- end
516
+ @header_images << [options[p.first], p.last] if options[p.first]
523
517
  end
524
518
 
525
519
  # placeholeder /&G/ の数
@@ -527,9 +521,7 @@ module Writexlsx
527
521
 
528
522
  image_count = @header_images.count
529
523
 
530
- if image_count != placeholder_count
531
- raise "Number of header image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.header}"
532
- end
524
+ raise "Number of header image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.header}" if image_count != placeholder_count
533
525
 
534
526
  @has_header_vml = true if image_count > 0
535
527
 
@@ -543,28 +535,22 @@ module Writexlsx
543
535
  def set_footer(string = '', margin = 0.3, options = {})
544
536
  raise 'Footer string must be less than 255 characters' if string.length > 255
545
537
 
546
- @page_setup.footer = string.dup
538
+ @page_setup.footer = string.dup
547
539
 
548
540
  # Replace the Excel placeholder &[Picture] with the internal &G.
549
541
  @page_setup.footer = string.gsub(/&\[Picture\]/, '&G')
550
542
 
551
- if options[:align_with_margins]
552
- @page_setup.header_footer_aligns = options[:align_with_margins]
553
- end
543
+ @page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
554
544
 
555
- if options[:scale_with_doc]
556
- @page_setup.header_footer_scales = options[:scale_with_doc]
557
- end
545
+ @page_setup.header_footer_scales = options[:scale_with_doc] if options[:scale_with_doc]
558
546
 
559
547
  # Reset the array in case the function is called more than once.
560
548
  @footer_images = []
561
549
 
562
550
  [
563
- [:image_left, 'LF'], [:image_center, 'CF'], [:image_right, 'RF']
551
+ [:image_left, 'LF'], [:image_center, 'CF'], [:image_right, 'RF']
564
552
  ].each do |p|
565
- if options[p.first]
566
- @footer_images << [options[p.first], p.last]
567
- end
553
+ @footer_images << [options[p.first], p.last] if options[p.first]
568
554
  end
569
555
 
570
556
  # placeholeder /&G/ の数
@@ -572,9 +558,7 @@ module Writexlsx
572
558
 
573
559
  image_count = @footer_images.count
574
560
 
575
- if image_count != placeholder_count
576
- raise "Number of footer image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.footer}"
577
- end
561
+ raise "Number of footer image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.footer}" if image_count != placeholder_count
578
562
 
579
563
  @has_header_vml = true if image_count > 0
580
564
 
@@ -600,10 +584,10 @@ module Writexlsx
600
584
  # Set all the page margins to the same value in inches.
601
585
  #
602
586
  def margins=(margin)
603
- self::margin_left = margin
604
- self::margin_right = margin
605
- self::margin_top = margin
606
- self::margin_bottom = margin
587
+ self.margin_left = margin
588
+ self.margin_right = margin
589
+ self.margin_top = margin
590
+ self.margin_bottom = margin
607
591
  end
608
592
 
609
593
  #
@@ -611,8 +595,8 @@ module Writexlsx
611
595
  # See set_margins
612
596
  #
613
597
  def margins_left_right=(margin)
614
- self::margin_left = margin
615
- self::margin_right = margin
598
+ self.margin_left = margin
599
+ self.margin_right = margin
616
600
  end
617
601
 
618
602
  #
@@ -620,8 +604,8 @@ module Writexlsx
620
604
  # See set_margins
621
605
  #
622
606
  def margins_top_bottom=(margin)
623
- self::margin_top = margin
624
- self::margin_bottom = margin
607
+ self.margin_top = margin
608
+ self.margin_bottom = margin
625
609
  end
626
610
 
627
611
  #
@@ -661,7 +645,7 @@ module Writexlsx
661
645
  #
662
646
  def set_margins(margin)
663
647
  put_deprecate_message("#{self}.set_margins")
664
- self::margins = margin
648
+ self.margins = margin
665
649
  end
666
650
 
667
651
  #
@@ -670,7 +654,7 @@ module Writexlsx
670
654
  #
671
655
  def set_margins_LR(margin)
672
656
  put_deprecate_message("#{self}.set_margins_LR")
673
- self::margins_left_right = margin
657
+ self.margins_left_right = margin
674
658
  end
675
659
 
676
660
  #
@@ -679,7 +663,7 @@ module Writexlsx
679
663
  #
680
664
  def set_margins_TB(margin)
681
665
  put_deprecate_message("#{self}.set_margins_TB")
682
- self::margins_top_bottom = margin
666
+ self.margins_top_bottom = margin
683
667
  end
684
668
 
685
669
  #
@@ -688,7 +672,7 @@ module Writexlsx
688
672
  #
689
673
  def set_margin_left(margin = 0.7)
690
674
  put_deprecate_message("#{self}.set_margin_left")
691
- self::margin_left = margin
675
+ self.margin_left = margin
692
676
  end
693
677
 
694
678
  #
@@ -697,7 +681,7 @@ module Writexlsx
697
681
  #
698
682
  def set_margin_right(margin = 0.7)
699
683
  put_deprecate_message("#{self}.set_margin_right")
700
- self::margin_right = margin
684
+ self.margin_right = margin
701
685
  end
702
686
 
703
687
  #
@@ -706,7 +690,7 @@ module Writexlsx
706
690
  #
707
691
  def set_margin_top(margin = 0.75)
708
692
  put_deprecate_message("#{self}.set_margin_top")
709
- self::margin_top = margin
693
+ self.margin_top = margin
710
694
  end
711
695
 
712
696
  #
@@ -715,7 +699,7 @@ module Writexlsx
715
699
  #
716
700
  def set_margin_bottom(margin = 0.75)
717
701
  put_deprecate_message("#{self}.set_margin_bottom")
718
- self::margin_bottom = margin
702
+ self.margin_bottom = margin
719
703
  end
720
704
 
721
705
  #
@@ -747,7 +731,7 @@ module Writexlsx
747
731
  #
748
732
  def repeat_columns(*args)
749
733
  if args[0] =~ /^\D/
750
- dummy, first_col, dummy, last_col = substitute_cellref(*args)
734
+ _dummy, first_col, _dummy, last_col = substitute_cellref(*args)
751
735
  else
752
736
  first_col, last_col = args
753
737
  end
@@ -771,13 +755,12 @@ module Writexlsx
771
755
  #
772
756
  def print_area(*args)
773
757
  return @page_setup.print_area.dup if args.empty?
758
+
774
759
  row1, col1, row2, col2 = row_col_notation(args)
775
760
  return if [row1, col1, row2, col2].include?(nil)
776
761
 
777
762
  # Ignore max print area since this is the same as no print area for Excel.
778
- if row1 == 0 && col1 == 0 && row2 == ROW_MAX - 1 && col2 == COL_MAX - 1
779
- return
780
- end
763
+ return if row1 == 0 && col1 == 0 && row2 == ROW_MAX - 1 && col2 == COL_MAX - 1
781
764
 
782
765
  # Build up the print area range "=Sheet2!R1C1:R2C1"
783
766
  @page_setup.print_area = convert_name_area(row1, col1, row2, col2)
@@ -788,12 +771,12 @@ module Writexlsx
788
771
  #
789
772
  def zoom=(scale)
790
773
  # Confine the scale to Excel's range
791
- if scale < 10 or scale > 400
792
- # carp "Zoom factor scale outside range: 10 <= zoom <= 400"
793
- @zoom = 100
794
- else
795
- @zoom = scale.to_i
796
- end
774
+ @zoom = if scale < 10 or scale > 400
775
+ # carp "Zoom factor scale outside range: 10 <= zoom <= 400"
776
+ 100
777
+ else
778
+ scale.to_i
779
+ end
797
780
  end
798
781
 
799
782
  # This method is deprecated. use zoom=().
@@ -823,23 +806,23 @@ module Writexlsx
823
806
  #
824
807
  def set_print_scale(scale = 100)
825
808
  put_deprecate_message("#{self}.set_print_scale")
826
- self::print_scale = (scale)
809
+ self.print_scale = (scale)
827
810
  end
828
811
 
829
- #
830
- # Set the option to print the worksheet in black and white.
831
- #
832
- def print_black_and_white
833
- @page_setup.black_white = true
812
+ #
813
+ # Set the option to print the worksheet in black and white.
814
+ #
815
+ def print_black_and_white
816
+ @page_setup.black_white = true
834
817
  end
835
818
 
836
- #
837
- # Causes the write() method to treat integers with a leading zero as a string.
838
- # This ensures that any leading zeros such, as in zip codes, are maintained.
839
- #
840
- def keep_leading_zeros(flag = true)
841
- @leading_zeros = !!flag
842
- end
819
+ #
820
+ # Causes the write() method to treat integers with a leading zero as a string.
821
+ # This ensures that any leading zeros such, as in zip codes, are maintained.
822
+ #
823
+ def keep_leading_zeros(flag = true)
824
+ @leading_zeros = !!flag
825
+ end
843
826
 
844
827
  #
845
828
  # Display the worksheet right to left for some eastern versions of Excel.
@@ -852,7 +835,7 @@ module Writexlsx
852
835
  # Hide cell zero values.
853
836
  #
854
837
  def hide_zero(flag = true)
855
- @show_zeros = !flag
838
+ @show_zeros = !flag
856
839
  end
857
840
 
858
841
  #
@@ -877,7 +860,7 @@ module Writexlsx
877
860
 
878
861
  def set_start_page(page_start)
879
862
  put_deprecate_message("#{self}.set_start_page")
880
- self::start_page = page_start
863
+ self.start_page = page_start
881
864
  end
882
865
 
883
866
  #
@@ -893,6 +876,7 @@ module Writexlsx
893
876
  # Check for a cell reference in A1 notation and substitute row and column
894
877
  row_col_args = row_col_notation(args)
895
878
  token = row_col_args[2] || ''
879
+ token = token.to_s if token.instance_of?(Time)
896
880
 
897
881
  # Match an array ref.
898
882
  if token.respond_to?(:to_ary)
@@ -916,13 +900,13 @@ module Writexlsx
916
900
  write_blank(*row_col_args)
917
901
  elsif @workbook.strings_to_urls
918
902
  # Match http, https or ftp URL
919
- if token =~ %r|\A[fh]tt?ps?://|
903
+ if token =~ %r{\A[fh]tt?ps?://}
920
904
  write_url(*args)
921
905
  # Match mailto:
922
- elsif token =~ %r|\Amailto:|
906
+ elsif token =~ /\Amailto:/
923
907
  write_url(*args)
924
908
  # Match internal or external sheet link
925
- elsif token =~ %r!\A(?:in|ex)ternal:!
909
+ elsif token =~ /\A(?:in|ex)ternal:/
926
910
  write_url(*args)
927
911
  else
928
912
  write_string(*args)
@@ -1054,7 +1038,7 @@ module Writexlsx
1054
1038
  check_dimensions(row, col)
1055
1039
  store_row_col_max_min_values(row, col)
1056
1040
 
1057
- fragments, length = rich_strings_fragments(rich_strings)
1041
+ fragments, _length = rich_strings_fragments(rich_strings)
1058
1042
  # can't allow 2 formats in a row
1059
1043
  return -4 unless fragments
1060
1044
 
@@ -1128,11 +1112,11 @@ module Writexlsx
1128
1112
  store_row_col_max_min_values(row2, col2)
1129
1113
 
1130
1114
  # Define array range
1131
- if row1 == row2 && col1 == col2
1132
- range = xl_rowcol_to_cell(row1, col1)
1133
- else
1134
- range ="#{xl_rowcol_to_cell(row1, col1)}:#{xl_rowcol_to_cell(row2, col2)}"
1135
- end
1115
+ range = if row1 == row2 && col1 == col2
1116
+ xl_rowcol_to_cell(row1, col1)
1117
+ else
1118
+ "#{xl_rowcol_to_cell(row1, col1)}:#{xl_rowcol_to_cell(row2, col2)}"
1119
+ end
1136
1120
 
1137
1121
  # Remove array formula braces and the leading =.
1138
1122
  formula = formula.sub(/^\{(.*)\}$/, '\1').sub(/^=/, '')
@@ -1151,6 +1135,7 @@ module Writexlsx
1151
1135
  (row1..row2).each do |row|
1152
1136
  (col1..col2).each do |col|
1153
1137
  next if row == row1 && col == col1
1138
+
1154
1139
  write_number(row, col, 0, xf)
1155
1140
  end
1156
1141
  end
@@ -1186,7 +1171,6 @@ module Writexlsx
1186
1171
 
1187
1172
  val = val ? 1 : 0 # Boolean value.
1188
1173
  # xf : cell format.
1189
- type = 'l' # The data type
1190
1174
 
1191
1175
  # Check that row and col are valid and store max and min values
1192
1176
  check_dimensions(row, col)
@@ -1225,15 +1209,15 @@ module Writexlsx
1225
1209
  format.set_format_properties(params)
1226
1210
  end
1227
1211
  # keep original value of cell
1228
- if cell_data.is_a? FormulaCellData
1229
- value = "=#{cell_data.token}"
1230
- elsif cell_data.is_a? FormulaArrayCellData
1231
- value = "{=#{cell_data.token}}"
1232
- elsif cell_data.is_a? StringCellData
1233
- value = @workbook.shared_strings.string(cell_data.data[:sst_id])
1234
- else
1235
- value = cell_data.data
1236
- end
1212
+ value = if cell_data.is_a? FormulaCellData
1213
+ "=#{cell_data.token}"
1214
+ elsif cell_data.is_a? FormulaArrayCellData
1215
+ "{=#{cell_data.token}}"
1216
+ elsif cell_data.is_a? StringCellData
1217
+ @workbook.shared_strings.string(cell_data.data[:sst_id])
1218
+ else
1219
+ cell_data.data
1220
+ end
1237
1221
  write(row, col, value, format)
1238
1222
  end
1239
1223
  end
@@ -1250,7 +1234,7 @@ module Writexlsx
1250
1234
  raise WriteXLSXInsufficientArgumentError if [row_first, col_first, row_last, col_last, params].include?(nil)
1251
1235
 
1252
1236
  # Swap last row/col with first row/col as necessary
1253
- row_first, row_last = row_last, row_first if row_first > row_last
1237
+ row_first, row_last = row_last, row_first if row_first > row_last
1254
1238
  col_first, col_last = col_last, col_first if col_first > col_last
1255
1239
 
1256
1240
  # Check that column number is valid and store the max value
@@ -1309,12 +1293,10 @@ module Writexlsx
1309
1293
  hyperlink = Hyperlink.factory(url, str, tip)
1310
1294
  store_hyperlink(row, col, hyperlink)
1311
1295
 
1312
- if hyperlinks_count > 65_530
1313
- raise "URL '#{url}' added but URL exceeds Excel's limit of 65,530 URLs per worksheet."
1314
- end
1296
+ raise "URL '#{url}' added but URL exceeds Excel's limit of 65,530 URLs per worksheet." if hyperlinks_count > 65_530
1315
1297
 
1316
1298
  # Add the default URL format.
1317
- xf = @default_url_format unless xf
1299
+ xf ||= @default_url_format
1318
1300
 
1319
1301
  # Write the hyperlink string.
1320
1302
  write_string(row, col, hyperlink.str, xf)
@@ -1359,7 +1341,7 @@ module Writexlsx
1359
1341
  row, col, chart, *options = row_col_notation(args)
1360
1342
  raise WriteXLSXInsufficientArgumentError if [row, col, chart].include?(nil)
1361
1343
 
1362
- if options.first.class == Hash
1344
+ if options.first.instance_of?(Hash)
1363
1345
  params = options.first
1364
1346
  x_offset = params[:x_offset]
1365
1347
  y_offset = params[:y_offset]
@@ -1404,7 +1386,7 @@ module Writexlsx
1404
1386
  row, col, image, *options = row_col_notation(args)
1405
1387
  raise WriteXLSXInsufficientArgumentError if [row, col, image].include?(nil)
1406
1388
 
1407
- if options.first.class == Hash
1389
+ if options.first.instance_of?(Hash)
1408
1390
  # Newer hash bashed options
1409
1391
  params = options.first
1410
1392
  x_offset = params[:x_offset]
@@ -1443,7 +1425,7 @@ module Writexlsx
1443
1425
  row, col, formula, format, *pairs = row_col_notation(args)
1444
1426
  raise WriteXLSXInsufficientArgumentError if [row, col].include?(nil)
1445
1427
 
1446
- raise "Odd number of elements in pattern/replacement list" unless pairs.size % 2 == 0
1428
+ raise "Odd number of elements in pattern/replacement list" unless pairs.size.even?
1447
1429
  raise "Not a valid formula" unless formula.respond_to?(:to_ary)
1448
1430
 
1449
1431
  tokens = formula.join("\t").split("\t")
@@ -1454,7 +1436,7 @@ module Writexlsx
1454
1436
  value = pairs.pop
1455
1437
  pairs.pop
1456
1438
  end
1457
- while !pairs.empty?
1439
+ until pairs.empty?
1458
1440
  pattern = pairs.shift
1459
1441
  replace = pairs.shift
1460
1442
 
@@ -1475,6 +1457,7 @@ module Writexlsx
1475
1457
  #
1476
1458
  def set_row(*args)
1477
1459
  return unless args[0]
1460
+
1478
1461
  row = args[0]
1479
1462
  height = args[1] || @default_height
1480
1463
  xf = args[2]
@@ -1541,9 +1524,7 @@ module Writexlsx
1541
1524
  @row_size_changed = 1
1542
1525
  end
1543
1526
 
1544
- if ptrue?(zero_height)
1545
- @default_row_zeroed = 1
1546
- end
1527
+ @default_row_zeroed = 1 if ptrue?(zero_height)
1547
1528
  end
1548
1529
 
1549
1530
  #
@@ -1560,7 +1541,7 @@ module Writexlsx
1560
1541
  raise "Can't merge single cell" if row_first == row_last && col_first == col_last
1561
1542
 
1562
1543
  # Swap last row/col with first row/col as necessary
1563
- row_first, row_last = row_last, row_first if row_first > row_last
1544
+ row_first, row_last = row_last, row_first if row_first > row_last
1564
1545
  col_first, col_last = col_last, col_first if col_first > col_last
1565
1546
 
1566
1547
  # Check that the data range is valid and store the max and min values.
@@ -1683,7 +1664,7 @@ module Writexlsx
1683
1664
  # into a worksheet.
1684
1665
  #
1685
1666
  def insert_button(*args)
1686
- @buttons_array << button_params(*(row_col_notation(args)))
1667
+ @buttons_array << button_params(*row_col_notation(args))
1687
1668
  @has_vml = 1
1688
1669
  end
1689
1670
 
@@ -1705,11 +1686,7 @@ module Writexlsx
1705
1686
  # Set the option to hide gridlines on the screen and the printed page.
1706
1687
  #
1707
1688
  def hide_gridlines(option = 1)
1708
- if option == 2
1709
- @screen_gridlines = false
1710
- else
1711
- @screen_gridlines = true
1712
- end
1689
+ @screen_gridlines = (option != 2)
1713
1690
 
1714
1691
  @page_setup.hide_gridlines(option)
1715
1692
  end
@@ -1743,7 +1720,7 @@ module Writexlsx
1743
1720
  def fit_to_pages(width = 1, height = 1)
1744
1721
  @page_setup.fit_page = true
1745
1722
  @page_setup.fit_width = width
1746
- @page_setup.fit_height = height
1723
+ @page_setup.fit_height = height
1747
1724
  @page_setup.page_setup_changed = true
1748
1725
  end
1749
1726
 
@@ -1779,9 +1756,7 @@ module Writexlsx
1779
1756
 
1780
1757
  tokens = extract_filter_tokens(expression)
1781
1758
 
1782
- unless tokens.size == 3 || tokens.size == 7
1783
- raise "Incorrect number of tokens in expression '#{expression}'"
1784
- end
1759
+ raise "Incorrect number of tokens in expression '#{expression}'" unless tokens.size == 3 || tokens.size == 7
1785
1760
 
1786
1761
  tokens = parse_filter_expression(expression, tokens)
1787
1762
 
@@ -1891,7 +1866,7 @@ module Writexlsx
1891
1866
  def prepare_chart(index, chart_id, drawing_id) # :nodoc:
1892
1867
  drawing_type = 1
1893
1868
 
1894
- row, col, chart, x_offset, y_offset, x_scale, y_scale, anchor = @charts[index]
1869
+ row, col, chart, x_offset, y_offset, x_scale, y_scale, anchor = @charts[index]
1895
1870
  chart.id = chart_id - 1
1896
1871
  x_scale ||= 0
1897
1872
  y_scale ||= 0
@@ -1910,14 +1885,14 @@ module Writexlsx
1910
1885
 
1911
1886
  # Create a Drawing object to use with worksheet unless one already exists.
1912
1887
  drawing = Drawing.new(drawing_type, dimensions, 0, 0, name, nil, anchor, drawing_rel_index, 0, nil, 0)
1913
- if !drawings?
1888
+ if drawings?
1889
+ @drawings.add_drawing_object(drawing)
1890
+ else
1914
1891
  @drawings = Drawings.new
1915
1892
  @drawings.add_drawing_object(drawing)
1916
1893
  @drawings.embedded = 1
1917
1894
 
1918
- @external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml" ]
1919
- else
1920
- @drawings.add_drawing_object(drawing)
1895
+ @external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml"]
1921
1896
  end
1922
1897
  @drawing_links << ['/chart', "../charts/chart#{chart_id}.xml"]
1923
1898
  end
@@ -1933,31 +1908,31 @@ module Writexlsx
1933
1908
 
1934
1909
  # Iterate through the table data.
1935
1910
  data = []
1936
- (row_start .. row_end).each do |row_num|
1911
+ (row_start..row_end).each do |row_num|
1937
1912
  # Store nil if row doesn't exist.
1938
- if !@cell_data_table[row_num]
1913
+ unless @cell_data_table[row_num]
1939
1914
  data << nil
1940
1915
  next
1941
1916
  end
1942
1917
 
1943
- (col_start .. col_end).each do |col_num|
1944
- if cell = @cell_data_table[row_num][col_num]
1918
+ (col_start..col_end).each do |col_num|
1919
+ cell = @cell_data_table[row_num][col_num]
1920
+ if cell
1945
1921
  data << cell.data
1946
1922
  else
1947
- # Store nil if col doesn't exist.
1948
1923
  data << nil
1949
1924
  end
1950
1925
  end
1951
1926
  end
1952
1927
 
1953
- return data
1928
+ data
1954
1929
  end
1955
1930
 
1956
1931
  #
1957
1932
  # Calculate the vertices that define the position of a graphical object within
1958
1933
  # the worksheet in pixels.
1959
1934
  #
1960
- def position_object_pixels(col_start, row_start, x1, y1, width, height, anchor = nil) #:nodoc:
1935
+ def position_object_pixels(col_start, row_start, x1, y1, width, height, anchor = nil) # :nodoc:
1961
1936
  # Adjust start column for negative offsets.
1962
1937
  while x1 < 0 && col_start > 0
1963
1938
  x1 += size_col(col_start - 1)
@@ -1975,22 +1950,22 @@ module Writexlsx
1975
1950
  y1 = 0 if y1 < 0
1976
1951
 
1977
1952
  # Calculate the absolute x offset of the top-left vertex.
1978
- if @col_size_changed
1979
- x_abs = (0 .. col_start-1).inject(0) {|sum, col| sum += size_col(col, anchor)}
1980
- else
1981
- # Optimisation for when the column widths haven't changed.
1982
- x_abs = @default_col_pixels * col_start
1983
- end
1953
+ x_abs = if @col_size_changed
1954
+ (0..col_start - 1).inject(0) { |sum, col| sum += size_col(col, anchor) }
1955
+ else
1956
+ # Optimisation for when the column widths haven't changed.
1957
+ @default_col_pixels * col_start
1958
+ end
1984
1959
  x_abs += x1
1985
1960
 
1986
1961
  # Calculate the absolute y offset of the top-left vertex.
1987
1962
  # Store the column change to allow optimisations.
1988
- if @row_size_changed
1989
- y_abs = (0 .. row_start-1).inject(0) {|sum, row| sum += size_row(row, anchor)}
1990
- else
1991
- # Optimisation for when the row heights haven't changed.
1992
- y_abs = @default_row_pixels * row_start
1993
- end
1963
+ y_abs = if @row_size_changed
1964
+ (0..row_start - 1).inject(0) { |sum, row| sum += size_row(row, anchor) }
1965
+ else
1966
+ # Optimisation for when the row heights haven't changed.
1967
+ @default_row_pixels * row_start
1968
+ end
1994
1969
  y_abs += y1
1995
1970
 
1996
1971
  # Adjust start column for offsets that are greater than the col width.
@@ -2043,7 +2018,7 @@ module Writexlsx
2043
2018
  #
2044
2019
  # Write the cell value <v> element.
2045
2020
  #
2046
- def write_cell_value(value = '') #:nodoc:
2021
+ def write_cell_value(value = '') # :nodoc:
2047
2022
  return write_cell_formula('=NA()') if !value.nil? && value.is_a?(Float) && value.nan?
2048
2023
 
2049
2024
  value ||= ''
@@ -2054,24 +2029,24 @@ module Writexlsx
2054
2029
  #
2055
2030
  # Write the cell formula <f> element.
2056
2031
  #
2057
- def write_cell_formula(formula = '') #:nodoc:
2032
+ def write_cell_formula(formula = '') # :nodoc:
2058
2033
  @writer.data_element('f', formula)
2059
2034
  end
2060
2035
 
2061
2036
  #
2062
2037
  # Write the cell array formula <f> element.
2063
2038
  #
2064
- def write_cell_array_formula(formula, range) #:nodoc:
2039
+ def write_cell_array_formula(formula, range) # :nodoc:
2065
2040
  @writer.data_element(
2066
2041
  'f', formula,
2067
2042
  [
2068
- ['t', 'array'],
2043
+ %w[t array],
2069
2044
  ['ref', range]
2070
2045
  ]
2071
2046
  )
2072
2047
  end
2073
2048
 
2074
- def date_1904? #:nodoc:
2049
+ def date_1904? # :nodoc:
2075
2050
  @workbook.date_1904?
2076
2051
  end
2077
2052
 
@@ -2083,9 +2058,9 @@ module Writexlsx
2083
2058
  # Convert from an Excel internal colour index to a XML style #RRGGBB index
2084
2059
  # based on the default or user defined values in the Workbook palette.
2085
2060
  #
2086
- def palette_color(index) #:nodoc:
2061
+ def palette_color(index) # :nodoc:
2087
2062
  if index.to_s =~ /^#([0-9A-F]{6})$/i
2088
- "FF#{$1.upcase}"
2063
+ "FF#{::Regexp.last_match(1).upcase}"
2089
2064
  else
2090
2065
  "FF#{super(index)}"
2091
2066
  end
@@ -2125,7 +2100,7 @@ module Writexlsx
2125
2100
  # The VML o:idmap data id contains a comma separated range when there is
2126
2101
  # more than one 1024 block of comments, like this: data="1,2".
2127
2102
  data = "#{vml_data_id}"
2128
- (1 .. num_comments_block).each do |i|
2103
+ (1..num_comments_block).each do |i|
2129
2104
  data += ",#{vml_data_id + i}"
2130
2105
  end
2131
2106
  @vml_data_id = data
@@ -2183,11 +2158,7 @@ module Writexlsx
2183
2158
  # set the vba name for the worksheet
2184
2159
  #
2185
2160
  def set_vba_name(vba_codename = nil)
2186
- if vba_codename
2187
- @vba_codename = vba_codename
2188
- else
2189
- @vba_codename = @name
2190
- end
2161
+ @vba_codename = vba_codename || @name
2191
2162
  end
2192
2163
 
2193
2164
  #
@@ -2195,33 +2166,29 @@ module Writexlsx
2195
2166
  #
2196
2167
  def ignore_errors(ignores)
2197
2168
  # List of valid input parameters.
2198
- valid_parameter_keys = [
2199
- :number_stored_as_text,
2200
- :eval_error,
2201
- :formula_differs,
2202
- :formula_range,
2203
- :formula_unlocked,
2204
- :empty_cell_reference,
2205
- :list_data_validation,
2206
- :calculated_column,
2207
- :two_digit_text_year
2169
+ valid_parameter_keys = %i[
2170
+ number_stored_as_text
2171
+ eval_error
2172
+ formula_differs
2173
+ formula_range
2174
+ formula_unlocked
2175
+ empty_cell_reference
2176
+ list_data_validation
2177
+ calculated_column
2178
+ two_digit_text_year
2208
2179
  ]
2209
2180
 
2210
- unless (ignores.keys - valid_parameter_keys).empty?
2211
- raise "Unknown parameter '#{ignores.key - valid_parameter_keys}' in ignore_errors()."
2212
- end
2181
+ raise "Unknown parameter '#{ignores.key - valid_parameter_keys}' in ignore_errors()." unless (ignores.keys - valid_parameter_keys).empty?
2213
2182
 
2214
2183
  @ignore_errors = ignores
2215
2184
  end
2216
2185
 
2217
- def write_ext(url)
2186
+ def write_ext(url, &block)
2218
2187
  attributes = [
2219
2188
  ['xmlns:x14', "#{OFFICE_URL}spreadsheetml/2009/9/main"],
2220
2189
  ['uri', url]
2221
2190
  ]
2222
- @writer.tag_elements('ext', attributes) do
2223
- yield
2224
- end
2191
+ @writer.tag_elements('ext', attributes, &block)
2225
2192
  end
2226
2193
 
2227
2194
  def write_sparkline_groups
@@ -2279,11 +2246,7 @@ module Writexlsx
2279
2246
 
2280
2247
  def cell_format_of_rich_string(rich_strings)
2281
2248
  # If the last arg is a format we use it as the cell format.
2282
- if rich_strings[-1].respond_to?(:xf_index)
2283
- rich_strings.pop
2284
- else
2285
- nil
2286
- end
2249
+ rich_strings.pop if rich_strings[-1].respond_to?(:xf_index)
2287
2250
  end
2288
2251
 
2289
2252
  #
@@ -2310,12 +2273,12 @@ module Writexlsx
2310
2273
  last = 'format'
2311
2274
  else
2312
2275
  # Token is a string.
2313
- if last != 'format'
2314
- # If previous token wasn't a format add one before the string.
2315
- fragments << default << token
2316
- else
2276
+ if last == 'format'
2317
2277
  # If previous token was a format just add the string.
2318
2278
  fragments << token
2279
+ else
2280
+ # If previous token wasn't a format add one before the string.
2281
+ fragments << default << token
2319
2282
  end
2320
2283
 
2321
2284
  length += token.size # Keep track of actual string length.
@@ -2332,7 +2295,7 @@ module Writexlsx
2332
2295
  writer = Package::XMLWriterSimple.new
2333
2296
 
2334
2297
  # If the first token is a string start the <r> element.
2335
- writer.start_tag('r') if !fragments[0].respond_to?(:xf_index)
2298
+ writer.start_tag('r') unless fragments[0].respond_to?(:xf_index)
2336
2299
 
2337
2300
  # Write the XML elements for the format string fragments.
2338
2301
  fragments.each do |token|
@@ -2354,9 +2317,10 @@ module Writexlsx
2354
2317
 
2355
2318
  # Pad out the rest of the area with formatted blank cells.
2356
2319
  def write_formatted_blank_to_area(row_first, row_last, col_first, col_last, format)
2357
- (row_first .. row_last).each do |row|
2358
- (col_first .. col_last).each do |col|
2320
+ (row_first..row_last).each do |row|
2321
+ (col_first..col_last).each do |col|
2359
2322
  next if row == row_first && col == col_first
2323
+
2360
2324
  write_blank(row, col, format)
2361
2325
  end
2362
2326
  end
@@ -2367,13 +2331,13 @@ module Writexlsx
2367
2331
  # whitespace groups. The only tricky part is to extract string tokens that
2368
2332
  # contain whitespace and/or quoted double quotes (Excel's escaped quotes).
2369
2333
  #
2370
- def extract_filter_tokens(expression = nil) #:nodoc:
2334
+ def extract_filter_tokens(expression = nil) # :nodoc:
2371
2335
  return [] unless expression
2372
2336
 
2373
2337
  tokens = []
2374
2338
  str = expression
2375
2339
  while str =~ /"(?:[^"]|"")*"|\S+/
2376
- tokens << $&
2340
+ tokens << ::Regexp.last_match(0)
2377
2341
  str = $~.post_match
2378
2342
  end
2379
2343
 
@@ -2398,11 +2362,11 @@ module Writexlsx
2398
2362
  # Converts the tokens of a possibly conditional expression into 1 or 2
2399
2363
  # sub expressions for further parsing.
2400
2364
  #
2401
- def parse_filter_expression(expression, tokens) #:nodoc:
2365
+ def parse_filter_expression(expression, tokens) # :nodoc:
2402
2366
  # The number of tokens will be either 3 (for 1 expression)
2403
2367
  # or 7 (for 2 expressions).
2404
2368
  #
2405
- if (tokens.size == 7)
2369
+ if tokens.size == 7
2406
2370
  conditional = tokens[3]
2407
2371
  if conditional =~ /^(and|&&)$/
2408
2372
  conditional = 0
@@ -2410,7 +2374,7 @@ module Writexlsx
2410
2374
  conditional = 1
2411
2375
  else
2412
2376
  raise "Token '#{conditional}' is not a valid conditional " +
2413
- "in filter expression '#{expression}'"
2377
+ "in filter expression '#{expression}'"
2414
2378
  end
2415
2379
  expression_1 = parse_filter_tokens(expression, tokens[0..2])
2416
2380
  expression_2 = parse_filter_tokens(expression, tokens[4..6])
@@ -2423,7 +2387,7 @@ module Writexlsx
2423
2387
  #
2424
2388
  # Parse the 3 tokens of a filter expression and return the operator and token.
2425
2389
  #
2426
- def parse_filter_tokens(expression, tokens) #:nodoc:
2390
+ def parse_filter_tokens(expression, tokens) # :nodoc:
2427
2391
  operators = {
2428
2392
  '==' => 2,
2429
2393
  '=' => 2,
@@ -2438,7 +2402,7 @@ module Writexlsx
2438
2402
  '<' => 1,
2439
2403
  '<=' => 3,
2440
2404
  '>' => 4,
2441
- '>=' => 6,
2405
+ '>=' => 6
2442
2406
  }
2443
2407
 
2444
2408
  operator = operators[tokens[1]]
@@ -2447,40 +2411,38 @@ module Writexlsx
2447
2411
  # Special handling of "Top" filter expressions.
2448
2412
  if tokens[0] =~ /^top|bottom$/i
2449
2413
  value = tokens[1]
2450
- if (value.to_s =~ /\D/ or value.to_i < 1 or value.to_i > 500)
2414
+ if value.to_s =~ /\D/ or value.to_i < 1 or value.to_i > 500
2451
2415
  raise "The value '#{value}' in expression '#{expression}' " +
2452
- "must be in the range 1 to 500"
2416
+ "must be in the range 1 to 500"
2453
2417
  end
2454
2418
  token.downcase!
2455
- if (token != 'items' and token != '%')
2419
+ if token != 'items' and token != '%'
2456
2420
  raise "The type '#{token}' in expression '#{expression}' " +
2457
- "must be either 'items' or '%'"
2421
+ "must be either 'items' or '%'"
2458
2422
  end
2459
2423
 
2460
- if (tokens[0] =~ /^top$/i)
2461
- operator = 30
2462
- else
2463
- operator = 32
2464
- end
2424
+ operator = if tokens[0] =~ /^top$/i
2425
+ 30
2426
+ else
2427
+ 32
2428
+ end
2465
2429
 
2466
- if (tokens[2] == '%')
2467
- operator += 1
2468
- end
2430
+ operator += 1 if tokens[2] == '%'
2469
2431
 
2470
2432
  token = value
2471
2433
  end
2472
2434
 
2473
- if (not operator and tokens[0])
2435
+ if !operator and tokens[0]
2474
2436
  raise "Token '#{tokens[1]}' is not a valid operator " +
2475
- "in filter expression '#{expression}'"
2437
+ "in filter expression '#{expression}'"
2476
2438
  end
2477
2439
 
2478
2440
  # Special handling for Blanks/NonBlanks.
2479
- if (token.to_s =~ /^blanks|nonblanks$/i)
2441
+ if token.to_s =~ /^blanks|nonblanks$/i
2480
2442
  # Only allow Equals or NotEqual in this context.
2481
- if (operator != 2 and operator != 5)
2443
+ if operator != 2 and operator != 5
2482
2444
  raise "The operator '#{tokens[1]}' in expression '#{expression}' " +
2483
- "is not valid in relation to Blanks/NonBlanks'"
2445
+ "is not valid in relation to Blanks/NonBlanks'"
2484
2446
  end
2485
2447
 
2486
2448
  token.downcase!
@@ -2488,25 +2450,19 @@ module Writexlsx
2488
2450
  # The operator should always be 2 (=) to flag a "simple" equality in
2489
2451
  # the binary record. Therefore we convert <> to =.
2490
2452
  if token == 'blanks'
2491
- if operator == 5
2492
- token = ' '
2493
- end
2453
+ token = ' ' if operator == 5
2454
+ elsif operator == 5
2455
+ operator = 2
2456
+ token = 'blanks'
2494
2457
  else
2495
- if operator == 5
2496
- operator = 2
2497
- token = 'blanks'
2498
- else
2499
- operator = 5
2500
- token = ' '
2501
- end
2458
+ operator = 5
2459
+ token = ' '
2502
2460
  end
2503
2461
  end
2504
2462
 
2505
2463
  # if the string token contains an Excel match character then change the
2506
2464
  # operator type to indicate a non "simple" equality.
2507
- if (operator == 2 and token.to_s =~ /[*?]/)
2508
- operator = 22
2509
- end
2465
+ operator = 22 if operator == 2 and token.to_s =~ /[*?]/
2510
2466
 
2511
2467
  [operator, token]
2512
2468
  end
@@ -2518,7 +2474,7 @@ module Writexlsx
2518
2474
  # 2. Sorts the list.
2519
2475
  # 3. Removes 0 from the list if present.
2520
2476
  #
2521
- def sort_pagebreaks(*args) #:nodoc:
2477
+ def sort_pagebreaks(*args) # :nodoc:
2522
2478
  return [] if args.empty?
2523
2479
 
2524
2480
  breaks = args.uniq.sort
@@ -2538,17 +2494,17 @@ module Writexlsx
2538
2494
  # Calculate the vertices that define the position of a graphical object within
2539
2495
  # the worksheet in EMUs.
2540
2496
  #
2541
- def position_object_emus(col_start, row_start, x1, y1, width, height, anchor = nil) #:nodoc:
2497
+ def position_object_emus(col_start, row_start, x1, y1, width, height, anchor = nil) # :nodoc:
2542
2498
  col_start, row_start, x1, y1, col_end, row_end, x2, y2, x_abs, y_abs =
2543
2499
  position_object_pixels(col_start, row_start, x1, y1, width, height, anchor)
2544
2500
 
2545
2501
  # Convert the pixel values to EMUs. See above.
2546
- x1 = (0.5 + 9_525 * x1).to_i
2547
- y1 = (0.5 + 9_525 * y1).to_i
2548
- x2 = (0.5 + 9_525 * x2).to_i
2549
- y2 = (0.5 + 9_525 * y2).to_i
2550
- x_abs = (0.5 + 9_525 * x_abs).to_i
2551
- y_abs = (0.5 + 9_525 * y_abs).to_i
2502
+ x1 = (0.5 + (9_525 * x1)).to_i
2503
+ y1 = (0.5 + (9_525 * y1)).to_i
2504
+ x2 = (0.5 + (9_525 * x2)).to_i
2505
+ y2 = (0.5 + (9_525 * y2)).to_i
2506
+ x_abs = (0.5 + (9_525 * x_abs)).to_i
2507
+ y_abs = (0.5 + (9_525 * y_abs)).to_i
2552
2508
 
2553
2509
  [col_start, row_start, x1, y1, col_end, row_end, x2, y2, x_abs, y_abs]
2554
2510
  end
@@ -2559,19 +2515,19 @@ module Writexlsx
2559
2515
  # we use the default value. A hidden column is treated as having a width of
2560
2516
  # zero unless it has the special "object_position" of 4 (size with cells).
2561
2517
  #
2562
- def size_col(col, anchor = 0) #:nodoc:
2518
+ def size_col(col, anchor = 0) # :nodoc:
2563
2519
  # Look up the cell value to see if it has been changed.
2564
2520
  if @col_sizes[col]
2565
2521
  width, hidden = @col_sizes[col]
2566
2522
 
2567
2523
  # Convert to pixels.
2568
- if hidden == 1 && anchor != 4
2569
- pixels = 0
2570
- elsif width < 1
2571
- pixels = (width * (MAX_DIGIT_WIDTH + PADDING) + 0.5).to_i
2572
- else
2573
- pixels = (width * MAX_DIGIT_WIDTH + 0.5).to_i + PADDING
2574
- end
2524
+ pixels = if hidden == 1 && anchor != 4
2525
+ 0
2526
+ elsif width < 1
2527
+ ((width * (MAX_DIGIT_WIDTH + PADDING)) + 0.5).to_i
2528
+ else
2529
+ ((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING
2530
+ end
2575
2531
  else
2576
2532
  pixels = @default_col_pixels
2577
2533
  end
@@ -2584,16 +2540,16 @@ module Writexlsx
2584
2540
  # treated as having a height of zero unless it has the special
2585
2541
  # "object_position" of 4 (size with cells).
2586
2542
  #
2587
- def size_row(row, anchor = 0) #:nodoc:
2543
+ def size_row(row, anchor = 0) # :nodoc:
2588
2544
  # Look up the cell value to see if it has been changed
2589
2545
  if @row_sizes[row]
2590
2546
  height, hidden = @row_sizes[row]
2591
2547
 
2592
- if hidden == 1 && anchor != 4
2593
- pixels = 0
2594
- else
2595
- pixels = (4 / 3.0 * height).to_i
2596
- end
2548
+ pixels = if hidden == 1 && anchor != 4
2549
+ 0
2550
+ else
2551
+ (4 / 3.0 * height).to_i
2552
+ end
2597
2553
  else
2598
2554
  pixels = (4 / 3.0 * @default_row_height).to_i
2599
2555
  end
@@ -2608,12 +2564,10 @@ module Writexlsx
2608
2564
  padding = 5.0
2609
2565
 
2610
2566
  if pixels <= 12
2611
- width = pixels / (max_digit_width + padding)
2567
+ pixels / (max_digit_width + padding)
2612
2568
  else
2613
- width = (pixels - padding) / max_digit_width
2569
+ (pixels - padding) / max_digit_width
2614
2570
  end
2615
-
2616
- width
2617
2571
  end
2618
2572
 
2619
2573
  #
@@ -2621,19 +2575,19 @@ module Writexlsx
2621
2575
  #
2622
2576
  def pixels_to_height(pixels)
2623
2577
  height = 0.75 * pixels
2624
- height = height.to_i if ( height - height.to_i).abs < 0.1
2578
+ height = height.to_i if (height - height.to_i).abs < 0.1
2625
2579
  height
2626
2580
  end
2627
2581
 
2628
2582
  #
2629
2583
  # Set up image/drawings.
2630
2584
  #
2631
- def prepare_image(index, image_id, drawing_id, width, height, name, image_type, x_dpi = 96, y_dpi = 96, md5 = nil) #:nodoc:
2585
+ def prepare_image(index, image_id, drawing_id, width, height, name, image_type, x_dpi = 96, y_dpi = 96, md5 = nil) # :nodoc:
2632
2586
  x_dpi ||= 96
2633
2587
  y_dpi ||= 96
2634
2588
  drawing_type = 2
2635
2589
 
2636
- row, col, image, x_offset, y_offset,
2590
+ row, col, _image, x_offset, y_offset,
2637
2591
  x_scale, y_scale, url, tip, anchor, description, decorative = @images[index]
2638
2592
 
2639
2593
  width *= x_scale
@@ -2650,28 +2604,24 @@ module Writexlsx
2650
2604
 
2651
2605
  # Create a Drawing object to use with worksheet unless one already exists.
2652
2606
  drawing = Drawing.new(drawing_type, dimensions, width, height, name, nil, anchor, 0, 0, tip, decorative)
2653
- if !drawings?
2607
+ if drawings?
2608
+ drawings = @drawings
2609
+ else
2654
2610
  drawings = Drawings.new
2655
2611
  drawings.embedded = 1
2656
2612
 
2657
2613
  @drawings = drawings
2658
2614
 
2659
2615
  @external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml"]
2660
- else
2661
- drawings = @drawings
2662
2616
  end
2663
2617
  drawings.add_drawing_object(drawing)
2664
2618
 
2665
- if description
2666
- drawing.description = description
2667
- end
2619
+ drawing.description = description if description
2668
2620
 
2669
2621
  if url
2670
2622
  rel_type = '/hyperlink'
2671
2623
  target_mode = 'External'
2672
- if url =~ %r!^[fh]tt?ps?://! || url =~ /^mailto:/
2673
- target = escape_url(url)
2674
- end
2624
+ target = escape_url(url) if url =~ %r{^[fh]tt?ps?://} || url =~ /^mailto:/
2675
2625
  if url =~ /^external:/
2676
2626
  target = escape_url(url.sub(/^external:/, ''))
2677
2627
 
@@ -2679,11 +2629,11 @@ module Writexlsx
2679
2629
  target = target.gsub(/#/, '%23')
2680
2630
 
2681
2631
  # Prefix absolute paths (not relative) with file:///
2682
- if target =~ /^\w:/ || target =~ /^\\\\/
2683
- target = "file:///#{target}"
2684
- else
2685
- target = target.gsub(/\\/, '/')
2686
- end
2632
+ target = if target =~ /^\w:/ || target =~ /^\\\\/
2633
+ "file:///#{target}"
2634
+ else
2635
+ target.gsub(/\\/, '/')
2636
+ end
2687
2637
  end
2688
2638
 
2689
2639
  if url =~ /^internal:/
@@ -2697,15 +2647,11 @@ Ignoring URL #{target} where link or anchor > 255 characters since it exceeds Ex
2697
2647
  EOS
2698
2648
  end
2699
2649
 
2700
- if target && !@drawing_rels[url]
2701
- @drawing_links << [rel_type, target, target_mode]
2702
- end
2650
+ @drawing_links << [rel_type, target, target_mode] if target && !@drawing_rels[url]
2703
2651
  drawing.url_rel_index = drawing_rel_index(url)
2704
2652
  end
2705
2653
 
2706
- if !@drawing_rels[md5]
2707
- @drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"]
2708
- end
2654
+ @drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"] unless @drawing_rels[md5]
2709
2655
  drawing.rel_index = drawing_rel_index(md5)
2710
2656
  end
2711
2657
  public :prepare_image
@@ -2713,11 +2659,9 @@ EOS
2713
2659
  def prepare_header_image(image_id, width, height, name, image_type, position, x_dpi, y_dpi, md5)
2714
2660
  # Strip the extension from the filename.
2715
2661
  body = name.dup
2716
- body[/\.[^\.]+$/, 0] = ''
2662
+ body[/\.[^.]+$/, 0] = ''
2717
2663
 
2718
- if !@vml_drawing_rels[md5]
2719
- @vml_drawing_links << ['/image', "../media/image#{image_id}.#{image_type}" ]
2720
- end
2664
+ @vml_drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"] unless @vml_drawing_rels[md5]
2721
2665
 
2722
2666
  ref_id = get_vml_drawing_rel_index(md5)
2723
2667
  @header_images_array << [width, height, body, position, x_dpi, y_dpi, ref_id]
@@ -2753,9 +2697,7 @@ EOS
2753
2697
  # Check for a cell reference in A1 notation and substitute row and column.
2754
2698
  row_start, column_start, shape, x_offset, y_offset, x_scale, y_scale, anchor =
2755
2699
  row_col_notation(args)
2756
- if [row_start, column_start, shape].include?(nil)
2757
- raise "Insufficient arguments in insert_shape()"
2758
- end
2700
+ raise "Insufficient arguments in insert_shape()" if [row_start, column_start, shape].include?(nil)
2759
2701
 
2760
2702
  shape.set_position(
2761
2703
  row_start, column_start, x_offset, y_offset,
@@ -2778,14 +2720,14 @@ EOS
2778
2720
  # Allow lookup of entry into shape array by shape ID.
2779
2721
  @shape_hash[shape.id] = shape.element = @shapes.size
2780
2722
 
2781
- if ptrue?(shape.stencil)
2782
- # Insert a copy of the shape, not a reference so that the shape is
2783
- # used as a stencil. Previously stamped copies don't get modified
2784
- # if the stencil is modified.
2785
- insert = shape.dup
2786
- else
2787
- insert = shape
2788
- end
2723
+ insert = if ptrue?(shape.stencil)
2724
+ # Insert a copy of the shape, not a reference so that the shape is
2725
+ # used as a stencil. Previously stamped copies don't get modified
2726
+ # if the stencil is modified.
2727
+ shape.dup
2728
+ else
2729
+ shape
2730
+ end
2789
2731
 
2790
2732
  # For connectors change x/y coords based on location of connected shapes.
2791
2733
  insert.auto_locate_connectors(@shapes, @shape_hash)
@@ -2839,29 +2781,25 @@ EOS
2839
2781
  button.font = { :_caption => caption }
2840
2782
 
2841
2783
  # Set the macro name.
2842
- if params[:macro]
2843
- button.macro = "[0]!#{params[:macro]}"
2844
- else
2845
- button.macro = "[0]!Button#{button_number}_Click"
2846
- end
2784
+ button.macro = if params[:macro]
2785
+ "[0]!#{params[:macro]}"
2786
+ else
2787
+ "[0]!Button#{button_number}_Click"
2788
+ end
2847
2789
 
2848
2790
  # Ensure that a width and height have been set.
2849
2791
  default_width = @default_col_pixels
2850
2792
  default_height = @default_row_pixels
2851
- params[:width] = default_width if !params[:width]
2852
- params[:height] = default_height if !params[:height]
2793
+ params[:width] = default_width unless params[:width]
2794
+ params[:height] = default_height unless params[:height]
2853
2795
 
2854
2796
  # Set the x/y offsets.
2855
- params[:x_offset] = 0 if !params[:x_offset]
2856
- params[:y_offset] = 0 if !params[:y_offset]
2797
+ params[:x_offset] = 0 unless params[:x_offset]
2798
+ params[:y_offset] = 0 unless params[:y_offset]
2857
2799
 
2858
2800
  # Scale the size of the button box if required.
2859
- if params[:x_scale]
2860
- params[:width] = params[:width] * params[:x_scale]
2861
- end
2862
- if params[:y_scale]
2863
- params[:height] = params[:height] * params[:y_scale]
2864
- end
2801
+ params[:width] = params[:width] * params[:x_scale] if params[:x_scale]
2802
+ params[:height] = params[:height] * params[:y_scale] if params[:y_scale]
2865
2803
 
2866
2804
  # Round the dimensions to the nearest pixel.
2867
2805
  params[:width] = (0.5 + params[:width]).to_i
@@ -2891,7 +2829,7 @@ EOS
2891
2829
  #
2892
2830
  # Based on the algorithm provided by Daniel Rentz of OpenOffice.
2893
2831
  #
2894
- def encode_password(password) #:nodoc:
2832
+ def encode_password(password) # :nodoc:
2895
2833
  i = 0
2896
2834
  chars = password.split(//)
2897
2835
  count = chars.size
@@ -2900,12 +2838,12 @@ EOS
2900
2838
  i += 1
2901
2839
  char = char.ord << i
2902
2840
  low_15 = char & 0x7fff
2903
- high_15 = char & 0x7fff << 15
2841
+ high_15 = char & (0x7fff << 15)
2904
2842
  high_15 = high_15 >> 15
2905
2843
  char = low_15 | high_15
2906
2844
  end
2907
2845
 
2908
- encoded_password = 0x0000
2846
+ encoded_password = 0x0000
2909
2847
  chars.each { |c| encoded_password ^= c }
2910
2848
  encoded_password ^= count
2911
2849
  encoded_password ^= 0xCE4B
@@ -2916,7 +2854,7 @@ EOS
2916
2854
  #
2917
2855
  # Write the <worksheet> element. This is the root element of Worksheet.
2918
2856
  #
2919
- def write_worksheet_attributes #:nodoc:
2857
+ def write_worksheet_attributes # :nodoc:
2920
2858
  schema = 'http://schemas.openxmlformats.org/'
2921
2859
  attributes = [
2922
2860
  ['xmlns', "#{schema}spreadsheetml/2006/main"],
@@ -2934,7 +2872,7 @@ EOS
2934
2872
  #
2935
2873
  # Write the <sheetPr> element for Sheet level properties.
2936
2874
  #
2937
- def write_sheet_pr #:nodoc:
2875
+ def write_sheet_pr # :nodoc:
2938
2876
  return unless tab_outline_fit? || vba_codename? || filter_on?
2939
2877
 
2940
2878
  attributes = []
@@ -2959,14 +2897,14 @@ EOS
2959
2897
  #
2960
2898
  # Write the <pageSetUpPr> element.
2961
2899
  #
2962
- def write_page_set_up_pr #:nodoc:
2963
- @writer.empty_tag('pageSetUpPr', [ ['fitToPage', 1] ]) if fit_page?
2900
+ def write_page_set_up_pr # :nodoc:
2901
+ @writer.empty_tag('pageSetUpPr', [['fitToPage', 1]]) if fit_page?
2964
2902
  end
2965
2903
 
2966
2904
  # Write the <dimension> element. This specifies the range of cells in the
2967
2905
  # worksheet. As a special case, empty spreadsheets use 'A1' as a range.
2968
2906
  #
2969
- def write_dimension #:nodoc:
2907
+ def write_dimension # :nodoc:
2970
2908
  if !@dim_rowmin && !@dim_colmin
2971
2909
  # If the min dims are undefined then no dimensions have been set
2972
2910
  # and we use the default 'A1'.
@@ -2992,16 +2930,17 @@ EOS
2992
2930
  cell_2 = xl_rowcol_to_cell(@dim_rowmax, @dim_colmax)
2993
2931
  ref = cell_1 + ':' + cell_2
2994
2932
  end
2995
- @writer.empty_tag('dimension', [ ['ref', ref] ])
2933
+ @writer.empty_tag('dimension', [['ref', ref]])
2996
2934
  end
2935
+
2997
2936
  #
2998
2937
  # Write the <sheetViews> element.
2999
2938
  #
3000
- def write_sheet_views #:nodoc:
2939
+ def write_sheet_views # :nodoc:
3001
2940
  @writer.tag_elements('sheetViews', []) { write_sheet_view }
3002
2941
  end
3003
2942
 
3004
- def write_sheet_view #:nodoc:
2943
+ def write_sheet_view # :nodoc:
3005
2944
  attributes = []
3006
2945
  # Hide screen gridlines if required.
3007
2946
  attributes << ['showGridLines', 0] unless @screen_gridlines
@@ -3023,7 +2962,7 @@ EOS
3023
2962
 
3024
2963
  # Set the page view/layout mode if required.
3025
2964
  # TODO. Add pageBreakPreview mode when requested.
3026
- attributes << ['view', 'pageLayout'] if page_view?
2965
+ attributes << %w[view pageLayout] if page_view?
3027
2966
 
3028
2967
  # Set the zoom level.
3029
2968
  if @zoom != 100
@@ -3046,14 +2985,14 @@ EOS
3046
2985
  #
3047
2986
  # Write the <selection> elements.
3048
2987
  #
3049
- def write_selections #:nodoc:
2988
+ def write_selections # :nodoc:
3050
2989
  @selections.each { |selection| write_selection(*selection) }
3051
2990
  end
3052
2991
 
3053
2992
  #
3054
2993
  # Write the <selection> element.
3055
2994
  #
3056
- def write_selection(pane, active_cell, sqref) #:nodoc:
2995
+ def write_selection(pane, active_cell, sqref) # :nodoc:
3057
2996
  attributes = []
3058
2997
  attributes << ['pane', pane] if pane
3059
2998
  attributes << ['activeCell', active_cell] if active_cell
@@ -3065,44 +3004,36 @@ EOS
3065
3004
  #
3066
3005
  # Write the <sheetFormatPr> element.
3067
3006
  #
3068
- def write_sheet_format_pr #:nodoc:
3069
- base_col_width = 10
3070
-
3007
+ def write_sheet_format_pr # :nodoc:
3071
3008
  attributes = [
3072
3009
  ['defaultRowHeight', @default_row_height]
3073
3010
  ]
3074
- if @default_row_height != @original_row_height
3075
- attributes << ['customHeight', 1]
3076
- end
3011
+ attributes << ['customHeight', 1] if @default_row_height != @original_row_height
3077
3012
 
3078
- if ptrue?(@default_row_zeroed)
3079
- attributes << ['zeroHeight', 1]
3080
- end
3013
+ attributes << ['zeroHeight', 1] if ptrue?(@default_row_zeroed)
3081
3014
 
3082
3015
  attributes << ['outlineLevelRow', @outline_row_level] if @outline_row_level > 0
3083
3016
  attributes << ['outlineLevelCol', @outline_col_level] if @outline_col_level > 0
3084
- if @excel_version == 2010
3085
- attributes << ['x14ac:dyDescent', '0.25']
3086
- end
3017
+ attributes << ['x14ac:dyDescent', '0.25'] if @excel_version == 2010
3087
3018
  @writer.empty_tag('sheetFormatPr', attributes)
3088
3019
  end
3089
3020
 
3090
3021
  #
3091
3022
  # Write the <cols> element and <col> sub elements.
3092
3023
  #
3093
- def write_cols #:nodoc:
3024
+ def write_cols # :nodoc:
3094
3025
  # Exit unless some column have been formatted.
3095
3026
  return if @colinfo.empty?
3096
3027
 
3097
3028
  @writer.tag_elements('cols') do
3098
- @colinfo.keys.sort.each {|col| write_col_info(@colinfo[col]) }
3029
+ @colinfo.keys.sort.each { |col| write_col_info(@colinfo[col]) }
3099
3030
  end
3100
3031
  end
3101
3032
 
3102
3033
  #
3103
3034
  # Write the <col> element.
3104
3035
  #
3105
- def write_col_info(args) #:nodoc:
3036
+ def write_col_info(args) # :nodoc:
3106
3037
  @writer.empty_tag('col', col_info_attributes(args))
3107
3038
  end
3108
3039
 
@@ -3120,16 +3051,14 @@ EOS
3120
3051
  custom_width = false if width.nil? && hidden == 0
3121
3052
  custom_width = false if width == 8.43
3122
3053
 
3123
- width = hidden == 0 ? @default_col_width : 0 unless width
3054
+ width ||= hidden == 0 ? @default_col_width : 0
3124
3055
 
3125
3056
  # Convert column width from user units to character width.
3126
- if width && width < 1
3127
- width =
3128
- ((width * (MAX_DIGIT_WIDTH + PADDING) + 0.5).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3129
- else
3130
- width =
3131
- (((width * MAX_DIGIT_WIDTH + 0.5).to_i + PADDING).to_i/ MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3132
- end
3057
+ width = if width && width < 1
3058
+ (((width * (MAX_DIGIT_WIDTH + PADDING)) + 0.5).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3059
+ else
3060
+ ((((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
3061
+ end
3133
3062
  width = width.to_i if width - width.to_i == 0
3134
3063
 
3135
3064
  attributes = [
@@ -3149,22 +3078,22 @@ EOS
3149
3078
  #
3150
3079
  # Write the <sheetData> element.
3151
3080
  #
3152
- def write_sheet_data #:nodoc:
3153
- if !@dim_rowmin
3081
+ def write_sheet_data # :nodoc:
3082
+ if @dim_rowmin
3083
+ @writer.tag_elements('sheetData') { write_rows }
3084
+ else
3154
3085
  # If the dimensions aren't defined then there is no data to write.
3155
3086
  @writer.empty_tag('sheetData')
3156
- else
3157
- @writer.tag_elements('sheetData') { write_rows }
3158
3087
  end
3159
3088
  end
3160
3089
 
3161
3090
  #
3162
3091
  # Write out the worksheet data as a series of rows and cells.
3163
3092
  #
3164
- def write_rows #:nodoc:
3093
+ def write_rows # :nodoc:
3165
3094
  calculate_spans
3166
3095
 
3167
- (@dim_rowmin .. @dim_rowmax).each do |row_num|
3096
+ (@dim_rowmin..@dim_rowmax).each do |row_num|
3168
3097
  # Skip row if it doesn't contain row formatting or cell data.
3169
3098
  next if not_contain_formatting_or_data?(row_num)
3170
3099
 
@@ -3177,8 +3106,6 @@ EOS
3177
3106
  write_row_element(row_num, span, *args) do
3178
3107
  write_cell_column_dimension(row_num)
3179
3108
  end
3180
- elsif @comments[row_num]
3181
- write_empty_row(row_num, span, *(@set_rows[row_num]))
3182
3109
  else
3183
3110
  # Row attributes only.
3184
3111
  write_empty_row(row_num, span, *(@set_rows[row_num]))
@@ -3191,7 +3118,7 @@ EOS
3191
3118
  end
3192
3119
 
3193
3120
  def write_cell_column_dimension(row_num) # :nodoc:
3194
- (@dim_colmin .. @dim_colmax).each do |col_num|
3121
+ (@dim_colmin..@dim_colmax).each do |col_num|
3195
3122
  @cell_data_table[row_num][col_num].write_cell if @cell_data_table[row_num][col_num]
3196
3123
  end
3197
3124
  end
@@ -3199,21 +3126,19 @@ EOS
3199
3126
  #
3200
3127
  # Write the <row> element.
3201
3128
  #
3202
- def write_row_element(*args) # :nodoc:
3203
- @writer.tag_elements('row', row_attributes(args)) do
3204
- yield
3205
- end
3129
+ def write_row_element(*args, &block) # :nodoc:
3130
+ @writer.tag_elements('row', row_attributes(args), &block)
3206
3131
  end
3207
3132
 
3208
3133
  #
3209
3134
  # Write and empty <row> element, i.e., attributes only, no cell data.
3210
3135
  #
3211
- def write_empty_row(*args) #:nodoc:
3136
+ def write_empty_row(*args) # :nodoc:
3212
3137
  @writer.empty_tag('row', row_attributes(args))
3213
3138
  end
3214
3139
 
3215
3140
  def row_attributes(args)
3216
- r, spans, height, format, hidden, level, collapsed, empty_row = args
3141
+ r, spans, height, format, hidden, level, collapsed, _empty_row = args
3217
3142
  height ||= @default_row_height
3218
3143
  hidden ||= 0
3219
3144
  level ||= 0
@@ -3230,36 +3155,34 @@ EOS
3230
3155
  attributes << ['outlineLevel', level] if ptrue?(level)
3231
3156
  attributes << ['collapsed', 1] if ptrue?(collapsed)
3232
3157
 
3233
- if @excel_version == 2010
3234
- attributes << ['x14ac:dyDescent', '0.25']
3235
- end
3158
+ attributes << ['x14ac:dyDescent', '0.25'] if @excel_version == 2010
3236
3159
  attributes
3237
3160
  end
3238
3161
 
3239
3162
  #
3240
3163
  # Write the frozen or split <pane> elements.
3241
3164
  #
3242
- def write_panes #:nodoc:
3165
+ def write_panes # :nodoc:
3243
3166
  return if @panes.empty?
3244
3167
 
3245
3168
  if @panes[4] == 2
3246
3169
  write_split_panes
3247
3170
  else
3248
- write_freeze_panes(*(@panes))
3171
+ write_freeze_panes(*@panes)
3249
3172
  end
3250
3173
  end
3251
3174
 
3252
3175
  #
3253
3176
  # Write the <pane> element for freeze panes.
3254
3177
  #
3255
- def write_freeze_panes(row, col, top_row, left_col, type) #:nodoc:
3178
+ def write_freeze_panes(row, col, top_row, left_col, type) # :nodoc:
3256
3179
  y_split = row
3257
3180
  x_split = col
3258
3181
  top_left_cell = xl_rowcol_to_cell(top_row, left_col)
3259
3182
 
3260
3183
  # Move user cell selection to the panes.
3261
3184
  unless @selections.empty?
3262
- dummy, active_cell, sqref = @selections[0]
3185
+ _dummy, active_cell, sqref = @selections[0]
3263
3186
  @selections = []
3264
3187
  end
3265
3188
 
@@ -3268,13 +3191,13 @@ EOS
3268
3191
  active_pane = set_active_pane_and_cell_selections(row, col, row, col, active_cell, sqref)
3269
3192
 
3270
3193
  # Set the pane type.
3271
- if type == 0
3272
- state = 'frozen'
3273
- elsif type == 1
3274
- state = 'frozenSplit'
3275
- else
3276
- state = 'split'
3277
- end
3194
+ state = if type == 0
3195
+ 'frozen'
3196
+ elsif type == 1
3197
+ 'frozenSplit'
3198
+ else
3199
+ 'split'
3200
+ end
3278
3201
 
3279
3202
  attributes = []
3280
3203
  attributes << ['xSplit', x_split] if x_split > 0
@@ -3291,35 +3214,35 @@ EOS
3291
3214
  #
3292
3215
  # See also, implementers note for split_panes().
3293
3216
  #
3294
- def write_split_panes #:nodoc:
3217
+ def write_split_panes # :nodoc:
3295
3218
  row, col, top_row, left_col = @panes
3296
3219
  has_selection = false
3297
3220
  y_split = row
3298
3221
  x_split = col
3299
3222
 
3300
3223
  # Move user cell selection to the panes.
3301
- if !@selections.empty?
3302
- dummy, active_cell, sqref = @selections[0]
3224
+ unless @selections.empty?
3225
+ _dummy, active_cell, sqref = @selections[0]
3303
3226
  @selections = []
3304
3227
  has_selection = true
3305
3228
  end
3306
3229
 
3307
3230
  # Convert the row and col to 1/20 twip units with padding.
3308
- y_split = (20 * y_split + 300).to_i if y_split > 0
3231
+ y_split = ((20 * y_split) + 300).to_i if y_split > 0
3309
3232
  x_split = calculate_x_split_width(x_split) if x_split > 0
3310
3233
 
3311
3234
  # For non-explicit topLeft definitions, estimate the cell offset based
3312
3235
  # on the pixels dimensions. This is only a workaround and doesn't take
3313
3236
  # adjusted cell dimensions into account.
3314
3237
  if top_row == row && left_col == col
3315
- top_row = (0.5 + (y_split - 300) / 20 / 15).to_i
3316
- left_col = (0.5 + (x_split - 390) / 20 / 3 * 4 / 64).to_i
3238
+ top_row = (0.5 + ((y_split - 300) / 20 / 15)).to_i
3239
+ left_col = (0.5 + ((x_split - 390) / 20 / 3 * 4 / 64)).to_i
3317
3240
  end
3318
3241
 
3319
3242
  top_left_cell = xl_rowcol_to_cell(top_row, left_col)
3320
3243
 
3321
3244
  # If there is no selection set the active cell to the top left cell.
3322
- if !has_selection
3245
+ unless has_selection
3323
3246
  active_cell = top_left_cell
3324
3247
  sqref = top_left_cell
3325
3248
  end
@@ -3339,13 +3262,13 @@ EOS
3339
3262
  #
3340
3263
  # Convert column width from user units to pane split width.
3341
3264
  #
3342
- def calculate_x_split_width(width) #:nodoc:
3265
+ def calculate_x_split_width(width) # :nodoc:
3343
3266
  # Convert to pixels.
3344
- if width < 1
3345
- pixels = int(width * 12 + 0.5)
3346
- else
3347
- pixels = (width * MAX_DIGIT_WIDTH + 0.5).to_i + PADDING
3348
- end
3267
+ pixels = if width < 1
3268
+ int((width * 12) + 0.5)
3269
+ else
3270
+ ((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING
3271
+ end
3349
3272
 
3350
3273
  # Convert to points.
3351
3274
  points = pixels * 3 / 4
@@ -3360,17 +3283,17 @@ EOS
3360
3283
  #
3361
3284
  # Write the <sheetCalcPr> element for the worksheet calculation properties.
3362
3285
  #
3363
- def write_sheet_calc_pr #:nodoc:
3364
- @writer.empty_tag('sheetCalcPr', [ ['fullCalcOnLoad', 1] ])
3286
+ def write_sheet_calc_pr # :nodoc:
3287
+ @writer.empty_tag('sheetCalcPr', [['fullCalcOnLoad', 1]])
3365
3288
  end
3366
3289
 
3367
3290
  #
3368
3291
  # Write the <phoneticPr> element.
3369
3292
  #
3370
- def write_phonetic_pr #:nodoc:
3293
+ def write_phonetic_pr # :nodoc:
3371
3294
  attributes = [
3372
3295
  ['fontId', 0],
3373
- ['type', 'noConversion']
3296
+ %w[type noConversion]
3374
3297
  ]
3375
3298
 
3376
3299
  @writer.empty_tag('phoneticPr', attributes)
@@ -3379,82 +3302,80 @@ EOS
3379
3302
  #
3380
3303
  # Write the <pageMargins> element.
3381
3304
  #
3382
- def write_page_margins #:nodoc:
3305
+ def write_page_margins # :nodoc:
3383
3306
  @page_setup.write_page_margins(@writer)
3384
3307
  end
3385
3308
 
3386
3309
  #
3387
3310
  # Write the <pageSetup> element.
3388
3311
  #
3389
- def write_page_setup #:nodoc:
3312
+ def write_page_setup # :nodoc:
3390
3313
  @page_setup.write_page_setup(@writer)
3391
3314
  end
3392
3315
 
3393
3316
  #
3394
3317
  # Write the <mergeCells> element.
3395
3318
  #
3396
- def write_merge_cells #:nodoc:
3319
+ def write_merge_cells # :nodoc:
3397
3320
  write_some_elements('mergeCells', @merge) do
3398
3321
  @merge.each { |merged_range| write_merge_cell(merged_range) }
3399
3322
  end
3400
3323
  end
3401
3324
 
3402
- def write_some_elements(tag, container)
3325
+ def write_some_elements(tag, container, &block)
3403
3326
  return if container.empty?
3404
3327
 
3405
- @writer.tag_elements(tag, [ ['count', container.size] ]) do
3406
- yield
3407
- end
3328
+ @writer.tag_elements(tag, [['count', container.size]], &block)
3408
3329
  end
3409
3330
 
3410
3331
  #
3411
3332
  # Write the <mergeCell> element.
3412
3333
  #
3413
- def write_merge_cell(merged_range) #:nodoc:
3334
+ def write_merge_cell(merged_range) # :nodoc:
3414
3335
  row_min, col_min, row_max, col_max = merged_range
3415
3336
 
3416
3337
  # Convert the merge dimensions to a cell range.
3417
3338
  cell_1 = xl_rowcol_to_cell(row_min, col_min)
3418
3339
  cell_2 = xl_rowcol_to_cell(row_max, col_max)
3419
3340
 
3420
- @writer.empty_tag('mergeCell', [ ['ref', "#{cell_1}:#{cell_2}"] ])
3341
+ @writer.empty_tag('mergeCell', [['ref', "#{cell_1}:#{cell_2}"]])
3421
3342
  end
3422
3343
 
3423
3344
  #
3424
3345
  # Write the <printOptions> element.
3425
3346
  #
3426
- def write_print_options #:nodoc:
3347
+ def write_print_options # :nodoc:
3427
3348
  @page_setup.write_print_options(@writer)
3428
3349
  end
3429
3350
 
3430
3351
  #
3431
3352
  # Write the <headerFooter> element.
3432
3353
  #
3433
- def write_header_footer #:nodoc:
3354
+ def write_header_footer # :nodoc:
3434
3355
  @page_setup.write_header_footer(@writer, excel2003_style?)
3435
3356
  end
3436
3357
 
3437
3358
  #
3438
3359
  # Write the <rowBreaks> element.
3439
3360
  #
3440
- def write_row_breaks #:nodoc:
3361
+ def write_row_breaks # :nodoc:
3441
3362
  write_breaks('rowBreaks')
3442
3363
  end
3443
3364
 
3444
3365
  #
3445
3366
  # Write the <colBreaks> element.
3446
3367
  #
3447
- def write_col_breaks #:nodoc:
3368
+ def write_col_breaks # :nodoc:
3448
3369
  write_breaks('colBreaks')
3449
3370
  end
3450
3371
 
3451
3372
  def write_breaks(tag) # :nodoc:
3452
3373
  case tag
3453
3374
  when 'rowBreaks'
3454
- page_breaks = sort_pagebreaks(*(@page_setup.hbreaks))
3375
+ page_breaks = sort_pagebreaks(*@page_setup.hbreaks)
3455
3376
  max = 16383
3456
3377
  when 'colBreaks'
3457
- page_breaks = sort_pagebreaks(*(@page_setup.vbreaks))
3378
+ page_breaks = sort_pagebreaks(*@page_setup.vbreaks)
3458
3379
  max = 1048575
3459
3380
  else
3460
3381
  raise "Invalid parameter '#{tag}' in write_breaks."
@@ -3472,10 +3393,11 @@ EOS
3472
3393
  page_breaks.each { |num| write_brk(num, max) }
3473
3394
  end
3474
3395
  end
3396
+
3475
3397
  #
3476
3398
  # Write the <brk> element.
3477
3399
  #
3478
- def write_brk(id, max) #:nodoc:
3400
+ def write_brk(id, max) # :nodoc:
3479
3401
  attributes = [
3480
3402
  ['id', id],
3481
3403
  ['max', max],
@@ -3488,7 +3410,7 @@ EOS
3488
3410
  #
3489
3411
  # Write the <autoFilter> element.
3490
3412
  #
3491
- def write_auto_filter #:nodoc:
3413
+ def write_auto_filter # :nodoc:
3492
3414
  return unless autofilter_ref?
3493
3415
 
3494
3416
  attributes = [
@@ -3510,10 +3432,10 @@ EOS
3510
3432
  # Function to iterate through the columns that form part of an autofilter
3511
3433
  # range and write the appropriate filters.
3512
3434
  #
3513
- def write_autofilters #:nodoc:
3435
+ def write_autofilters # :nodoc:
3514
3436
  col1, col2 = @filter_range
3515
3437
 
3516
- (col1 .. col2).each do |col|
3438
+ (col1..col2).each do |col|
3517
3439
  # Skip if column doesn't have an active filter.
3518
3440
  next unless @filter_cols[col]
3519
3441
 
@@ -3529,8 +3451,8 @@ EOS
3529
3451
  #
3530
3452
  # Write the <filterColumn> element.
3531
3453
  #
3532
- def write_filter_column(col_id, type, *filters) #:nodoc:
3533
- @writer.tag_elements('filterColumn', [ ['colId', col_id] ]) do
3454
+ def write_filter_column(col_id, type, *filters) # :nodoc:
3455
+ @writer.tag_elements('filterColumn', [['colId', col_id]]) do
3534
3456
  if type == 1
3535
3457
  # Type == 1 is the new XLSX style filter.
3536
3458
  write_filters(*filters)
@@ -3544,13 +3466,11 @@ EOS
3544
3466
  #
3545
3467
  # Write the <filters> element.
3546
3468
  #
3547
- def write_filters(*filters) #:nodoc:
3469
+ def write_filters(*filters) # :nodoc:
3548
3470
  non_blanks = filters.reject { |filter| filter.to_s =~ /^blanks$/i }
3549
3471
  attributes = []
3550
3472
 
3551
- if filters != non_blanks
3552
- attributes = [ ['blank', 1] ]
3553
- end
3473
+ attributes = [['blank', 1]] if filters != non_blanks
3554
3474
 
3555
3475
  if filters.size == 1 && non_blanks.empty?
3556
3476
  # Special case for blank cells only.
@@ -3566,14 +3486,14 @@ EOS
3566
3486
  #
3567
3487
  # Write the <filter> element.
3568
3488
  #
3569
- def write_filter(val) #:nodoc:
3570
- @writer.empty_tag('filter', [ ['val', val] ])
3489
+ def write_filter(val) # :nodoc:
3490
+ @writer.empty_tag('filter', [['val', val]])
3571
3491
  end
3572
3492
 
3573
3493
  #
3574
3494
  # Write the <customFilters> element.
3575
3495
  #
3576
- def write_custom_filters(*tokens) #:nodoc:
3496
+ def write_custom_filters(*tokens) # :nodoc:
3577
3497
  if tokens.size == 2
3578
3498
  # One filter expression only.
3579
3499
  @writer.tag_elements('customFilters') { write_custom_filter(*tokens) }
@@ -3581,11 +3501,11 @@ EOS
3581
3501
  # Two filter expressions.
3582
3502
 
3583
3503
  # Check if the "join" operand is "and" or "or".
3584
- if tokens[2] == 0
3585
- attributes = [ ['and', 1] ]
3586
- else
3587
- attributes = [ ['and', 0] ]
3588
- end
3504
+ attributes = if tokens[2] == 0
3505
+ [['and', 1]]
3506
+ else
3507
+ [['and', 0]]
3508
+ end
3589
3509
 
3590
3510
  # Write the two custom filters.
3591
3511
  @writer.tag_elements('customFilters', attributes) do
@@ -3598,7 +3518,7 @@ EOS
3598
3518
  #
3599
3519
  # Write the <customFilter> element.
3600
3520
  #
3601
- def write_custom_filter(operator, val) #:nodoc:
3521
+ def write_custom_filter(operator, val) # :nodoc:
3602
3522
  operators = {
3603
3523
  1 => 'lessThan',
3604
3524
  2 => 'equal',
@@ -3628,8 +3548,9 @@ EOS
3628
3548
  # Process any sored hyperlinks in row/col order and write the <hyperlinks>
3629
3549
  # element. The attributes are different for internal and external links.
3630
3550
  #
3631
- def write_hyperlinks #:nodoc:
3551
+ def write_hyperlinks # :nodoc:
3632
3552
  return unless @hyperlinks
3553
+
3633
3554
  hlink_attributes = []
3634
3555
  @hyperlinks.keys.sort.each do |row_num|
3635
3556
  # Sort the hyperlinks into column order.
@@ -3642,11 +3563,9 @@ EOS
3642
3563
  # If the cell isn't a string then we have to add the url as
3643
3564
  # the string to display
3644
3565
  if ptrue?(@cell_data_table) &&
3645
- ptrue?(@cell_data_table[row_num]) &&
3646
- ptrue?(@cell_data_table[row_num][col_num])
3647
- if @cell_data_table[row_num][col_num].display_url_string?
3648
- link.display_on
3649
- end
3566
+ ptrue?(@cell_data_table[row_num]) &&
3567
+ ptrue?(@cell_data_table[row_num][col_num]) && @cell_data_table[row_num][col_num].display_url_string?
3568
+ link.display_on
3650
3569
  end
3651
3570
 
3652
3571
  if link.respond_to?(:external_hyper_link)
@@ -3672,7 +3591,7 @@ EOS
3672
3591
  #
3673
3592
  # Write the <tabColor> element.
3674
3593
  #
3675
- def write_tab_color #:nodoc:
3594
+ def write_tab_color # :nodoc:
3676
3595
  return unless tab_color?
3677
3596
 
3678
3597
  @writer.empty_tag(
@@ -3701,7 +3620,7 @@ EOS
3701
3620
  #
3702
3621
  # Write the <sheetProtection> element.
3703
3622
  #
3704
- def write_sheet_protection #:nodoc:
3623
+ def write_sheet_protection # :nodoc:
3705
3624
  return unless protect?
3706
3625
 
3707
3626
  attributes = []
@@ -3759,14 +3678,14 @@ EOS
3759
3678
  #
3760
3679
  # Write the <drawing> elements.
3761
3680
  #
3762
- def write_drawings #:nodoc:
3681
+ def write_drawings # :nodoc:
3763
3682
  increment_rel_id_and_write_r_id('drawing') if drawings?
3764
3683
  end
3765
3684
 
3766
3685
  #
3767
3686
  # Write the <legacyDrawing> element.
3768
3687
  #
3769
- def write_legacy_drawing #:nodoc:
3688
+ def write_legacy_drawing # :nodoc:
3770
3689
  increment_rel_id_and_write_r_id('legacyDrawing') if has_vml?
3771
3690
  end
3772
3691
 
@@ -3779,7 +3698,7 @@ EOS
3779
3698
  # Increment the relationship id for any drawings or comments.
3780
3699
  @rel_count += 1
3781
3700
 
3782
- attributes = [ ['r:id', "rId#{@rel_count}"] ]
3701
+ attributes = [['r:id', "rId#{@rel_count}"]]
3783
3702
  @writer.empty_tag('legacyDrawingHF', attributes)
3784
3703
  end
3785
3704
 
@@ -3801,7 +3720,7 @@ EOS
3801
3720
  #
3802
3721
  # Write the underline font element.
3803
3722
  #
3804
- def write_underline(writer, underline) #:nodoc:
3723
+ def write_underline(writer, underline) # :nodoc:
3805
3724
  writer.empty_tag('u', underline_attributes(underline))
3806
3725
  end
3807
3726
 
@@ -3811,7 +3730,7 @@ EOS
3811
3730
  def write_table_parts
3812
3731
  return if @tables.empty?
3813
3732
 
3814
- @writer.tag_elements('tableParts', [ ['count', tables_count] ]) do
3733
+ @writer.tag_elements('tableParts', [['count', tables_count]]) do
3815
3734
  tables_count.times { increment_rel_id_and_write_r_id('tablePart') }
3816
3735
  end
3817
3736
  end
@@ -3850,7 +3769,6 @@ EOS
3850
3769
  def write_ext_list_data_bars
3851
3770
  # Write the ext element.
3852
3771
  write_ext('{78C0D931-6437-407d-A8EE-F0AAD7539E65}') do
3853
-
3854
3772
  @writer.tag_elements('x14:conditionalFormattings') do
3855
3773
  # Write each of the Excel 2010 conditional formatting data bar elements.
3856
3774
  @data_bars_2010.each do |data_bar|
@@ -3860,16 +3778,16 @@ EOS
3860
3778
  end
3861
3779
  end
3862
3780
  end
3781
+
3863
3782
  #
3864
3783
  # Write the <x14:conditionalFormatting> element.
3865
3784
  #
3866
3785
  def write_conditional_formatting_2010(data_bar)
3867
3786
  xmlns_xm = 'http://schemas.microsoft.com/office/excel/2006/main'
3868
3787
 
3869
- attributes = [ ['xmlns:xm', xmlns_xm] ]
3788
+ attributes = [['xmlns:xm', xmlns_xm]]
3870
3789
 
3871
3790
  @writer.tag_elements('x14:conditionalFormatting', attributes) do
3872
-
3873
3791
  # Write the '<x14:cfRule element.
3874
3792
  write_x14_cf_rule(data_bar)
3875
3793
 
@@ -3881,26 +3799,21 @@ EOS
3881
3799
  write_x14_cfvo(data_bar[:x14_max_type], data_bar[:max_value])
3882
3800
 
3883
3801
  # Write the x14:borderColor element.
3884
- if !ptrue?(data_bar[:bar_no_border])
3885
- write_x14_border_color(data_bar[:bar_border_color])
3886
- end
3802
+ write_x14_border_color(data_bar[:bar_border_color]) unless ptrue?(data_bar[:bar_no_border])
3887
3803
 
3888
3804
  # Write the x14:negativeFillColor element.
3889
- if !ptrue?(data_bar[:bar_negative_color_same])
3890
- write_x14_negative_fill_color(data_bar[:bar_negative_color])
3891
- end
3805
+ write_x14_negative_fill_color(data_bar[:bar_negative_color]) unless ptrue?(data_bar[:bar_negative_color_same])
3892
3806
 
3893
3807
  # Write the x14:negativeBorderColor element.
3894
3808
  if !ptrue?(data_bar[:bar_no_border]) &&
3895
3809
  !ptrue?(data_bar[:bar_negative_border_color_same])
3896
3810
  write_x14_negative_border_color(
3897
- data_bar[:bar_negative_border_color])
3811
+ data_bar[:bar_negative_border_color]
3812
+ )
3898
3813
  end
3899
3814
 
3900
3815
  # Write the x14:axisColor element.
3901
- if data_bar[:bar_axis_position] != 'none'
3902
- write_x14_axis_color(data_bar[:bar_axis_color])
3903
- end
3816
+ write_x14_axis_color(data_bar[:bar_axis_color]) if data_bar[:bar_axis_position] != 'none'
3904
3817
 
3905
3818
  # Write closing elements.
3906
3819
  @writer.end_tag('x14:dataBar')
@@ -3915,9 +3828,9 @@ EOS
3915
3828
  # Write the <cfvo> element.
3916
3829
  #
3917
3830
  def write_x14_cfvo(type, value)
3918
- attributes = [ ['type', type ] ]
3831
+ attributes = [['type', type]]
3919
3832
 
3920
- if %w(min max autoMin autoMax).include?(type)
3833
+ if %w[min max autoMin autoMax].include?(type)
3921
3834
  @writer.empty_tag('x14:cfvo', attributes)
3922
3835
  else
3923
3836
  @writer.tag_elements('x14:cfvo', attributes) do
@@ -3939,7 +3852,6 @@ EOS
3939
3852
  ]
3940
3853
 
3941
3854
  @writer.start_tag('x14:cfRule', attributes)
3942
-
3943
3855
  end
3944
3856
 
3945
3857
  #
@@ -3954,32 +3866,22 @@ EOS
3954
3866
  ['maxLength', max_length]
3955
3867
  ]
3956
3868
 
3957
- attributes << ['border', 1] if !ptrue?(data_bar[:bar_no_border])
3869
+ attributes << ['border', 1] unless ptrue?(data_bar[:bar_no_border])
3958
3870
  attributes << ['gradient', 0] if ptrue?(data_bar[:bar_solid])
3959
3871
 
3960
- if data_bar[:bar_direction] == 'left'
3961
- attributes << ['direction', 'leftToRight']
3962
- end
3963
- if data_bar[:bar_direction] == 'right'
3964
- attributes << ['direction', 'rightToLeft']
3965
- end
3872
+ attributes << %w[direction leftToRight] if data_bar[:bar_direction] == 'left'
3873
+ attributes << %w[direction rightToLeft] if data_bar[:bar_direction] == 'right'
3966
3874
 
3967
- if ptrue?(data_bar[:bar_negative_color_same])
3968
- attributes << ['negativeBarColorSameAsPositive', 1]
3969
- end
3875
+ attributes << ['negativeBarColorSameAsPositive', 1] if ptrue?(data_bar[:bar_negative_color_same])
3970
3876
 
3971
3877
  if !ptrue?(data_bar[:bar_no_border]) &&
3972
3878
  !ptrue?(data_bar[:bar_negative_border_color_same])
3973
3879
  attributes << ['negativeBarBorderColorSameAsPositive', 0]
3974
3880
  end
3975
3881
 
3976
- if data_bar[:bar_axis_position] == 'middle'
3977
- attributes << ['axisPosition', 'middle']
3978
- end
3882
+ attributes << %w[axisPosition middle] if data_bar[:bar_axis_position] == 'middle'
3979
3883
 
3980
- if data_bar[:bar_axis_position] == 'none'
3981
- attributes << ['axisPosition', 'none']
3982
- end
3884
+ attributes << %w[axisPosition none] if data_bar[:bar_axis_position] == 'none'
3983
3885
 
3984
3886
  @writer.start_tag('x14:dataBar', attributes)
3985
3887
  end
@@ -3988,7 +3890,7 @@ EOS
3988
3890
  # Write the <x14:borderColor> element.
3989
3891
  #
3990
3892
  def write_x14_border_color(rgb)
3991
- attributes = [ ['rgb', rgb] ]
3893
+ attributes = [['rgb', rgb]]
3992
3894
 
3993
3895
  @writer.empty_tag('x14:borderColor', attributes)
3994
3896
  end
@@ -3997,7 +3899,7 @@ EOS
3997
3899
  # Write the <x14:negativeFillColor> element.
3998
3900
  #
3999
3901
  def write_x14_negative_fill_color(rgb)
4000
- attributes = [ ['rgb', rgb] ]
3902
+ attributes = [['rgb', rgb]]
4001
3903
 
4002
3904
  @writer.empty_tag('x14:negativeFillColor', attributes)
4003
3905
  end
@@ -4006,7 +3908,7 @@ EOS
4006
3908
  # Write the <x14:negativeBorderColor> element.
4007
3909
  #
4008
3910
  def write_x14_negative_border_color(rgb)
4009
- attributes = [ ['rgb', rgb] ]
3911
+ attributes = [['rgb', rgb]]
4010
3912
 
4011
3913
  @writer.empty_tag('x14:negativeBorderColor', attributes)
4012
3914
  end
@@ -4015,7 +3917,7 @@ EOS
4015
3917
  # Write the <x14:axisColor> element.
4016
3918
  #
4017
3919
  def write_x14_axis_color(rgb)
4018
- attributes = [ ['rgb', rgb] ]
3920
+ attributes = [['rgb', rgb]]
4019
3921
 
4020
3922
  @writer.empty_tag('x14:axisColor', attributes)
4021
3923
  end
@@ -4026,7 +3928,6 @@ EOS
4026
3928
  def write_ext_list_sparklines
4027
3929
  # Write the ext element.
4028
3930
  write_ext('{05C60535-1F16-4fd2-B633-F4F36F0B64E0}') do
4029
-
4030
3931
  # Write the x14:sparklineGroups element.
4031
3932
  write_sparkline_groups
4032
3933
  end
@@ -4038,7 +3939,7 @@ EOS
4038
3939
  def write_sparklines(sparkline)
4039
3940
  # Write the sparkline elements.
4040
3941
  @writer.tag_elements('x14:sparklines') do
4041
- (0..sparkline[:count]-1).each do |i|
3942
+ (0..sparkline[:count] - 1).each do |i|
4042
3943
  range = sparkline[:ranges][i]
4043
3944
  location = sparkline[:locations][i]
4044
3945
 
@@ -4052,14 +3953,14 @@ EOS
4052
3953
 
4053
3954
  def sparkline_groups_attributes # :nodoc:
4054
3955
  [
4055
- ['xmlns:xm', "#{OFFICE_URL}excel/2006/main"]
3956
+ ['xmlns:xm', "#{OFFICE_URL}excel/2006/main"]
4056
3957
  ]
4057
3958
  end
4058
3959
 
4059
3960
  #
4060
3961
  # Write the <dataValidations> element.
4061
3962
  #
4062
- def write_data_validations #:nodoc:
3963
+ def write_data_validations # :nodoc:
4063
3964
  write_some_elements('dataValidations', @validations) do
4064
3965
  @validations.each { |validation| validation.write_data_validation(@writer) }
4065
3966
  end
@@ -4068,7 +3969,7 @@ EOS
4068
3969
  #
4069
3970
  # Write the Worksheet conditional formats.
4070
3971
  #
4071
- def write_conditional_formats #:nodoc:
3972
+ def write_conditional_formats # :nodoc:
4072
3973
  @cond_formats.keys.sort.each do |range|
4073
3974
  write_conditional_formatting(range, @cond_formats[range])
4074
3975
  end
@@ -4077,14 +3978,15 @@ EOS
4077
3978
  #
4078
3979
  # Write the <conditionalFormatting> element.
4079
3980
  #
4080
- def write_conditional_formatting(range, cond_formats) #:nodoc:
4081
- @writer.tag_elements('conditionalFormatting', [ ['sqref', range] ]) do
3981
+ def write_conditional_formatting(range, cond_formats) # :nodoc:
3982
+ @writer.tag_elements('conditionalFormatting', [['sqref', range]]) do
4082
3983
  cond_formats.each { |cond_format| cond_format.write_cf_rule }
4083
3984
  end
4084
3985
  end
4085
3986
 
4086
- def store_data_to_table(cell_data) #:nodoc:
4087
- row, col = cell_data.row, cell_data.col
3987
+ def store_data_to_table(cell_data) # :nodoc:
3988
+ row = cell_data.row
3989
+ col = cell_data.col
4088
3990
  if @cell_data_table[row]
4089
3991
  @cell_data_table[row][col] = cell_data
4090
3992
  else
@@ -4103,44 +4005,40 @@ EOS
4103
4005
  # optimisation and isn't strictly required. However, it makes comparing
4104
4006
  # files easier.
4105
4007
  #
4106
- def calculate_spans #:nodoc:
4008
+ def calculate_spans # :nodoc:
4107
4009
  span_min = nil
4108
4010
  span_max = 0
4109
4011
  spans = []
4110
4012
 
4111
- (@dim_rowmin .. @dim_rowmax).each do |row_num|
4112
- if @cell_data_table[row_num]
4113
- span_min, span_max = calc_spans(@cell_data_table, row_num, span_min, span_max)
4114
- end
4013
+ (@dim_rowmin..@dim_rowmax).each do |row_num|
4014
+ span_min, span_max = calc_spans(@cell_data_table, row_num, span_min, span_max) if @cell_data_table[row_num]
4115
4015
 
4116
4016
  # Calculate spans for comments.
4117
- if @comments[row_num]
4118
- span_min, span_max = calc_spans(@comments, row_num, span_min, span_max)
4119
- end
4017
+ span_min, span_max = calc_spans(@comments, row_num, span_min, span_max) if @comments[row_num]
4120
4018
 
4121
- if ((row_num + 1) % 16 == 0) || (row_num == @dim_rowmax)
4122
- span_index = row_num / 16
4123
- if span_min
4124
- span_min += 1
4125
- span_max += 1
4126
- spans[span_index] = "#{span_min}:#{span_max}"
4127
- span_min = nil
4128
- end
4129
- end
4019
+ next unless ((row_num + 1) % 16 == 0) || (row_num == @dim_rowmax)
4020
+
4021
+ span_index = row_num / 16
4022
+ next unless span_min
4023
+
4024
+ span_min += 1
4025
+ span_max += 1
4026
+ spans[span_index] = "#{span_min}:#{span_max}"
4027
+ span_min = nil
4130
4028
  end
4131
4029
 
4132
4030
  @row_spans = spans
4133
4031
  end
4134
4032
 
4135
4033
  def calc_spans(data, row_num, span_min, span_max)
4136
- (@dim_colmin .. @dim_colmax).each do |col_num|
4034
+ (@dim_colmin..@dim_colmax).each do |col_num|
4137
4035
  if data[row_num][col_num]
4138
- if !span_min
4139
- span_min = col_num
4140
- span_max = col_num
4141
- else
4036
+ if span_min
4142
4037
  span_min = col_num if col_num < span_min
4143
4038
  span_max = col_num if col_num > span_max
4039
+ else
4040
+ span_min = col_num
4041
+ span_max = col_num
4144
4042
  end
4145
4043
  end
4146
4044
  end
@@ -4151,7 +4049,7 @@ EOS
4151
4049
  # Add a string to the shared string table, if it isn't already there, and
4152
4050
  # return the string index.
4153
4051
  #
4154
- def shared_string_index(str) #:nodoc:
4052
+ def shared_string_index(str) # :nodoc:
4155
4053
  @workbook.shared_string_index(str)
4156
4054
  end
4157
4055
 
@@ -4161,7 +4059,7 @@ EOS
4161
4059
  # Convert zero indexed rows and columns to the format required by worksheet
4162
4060
  # named ranges, eg, "Sheet1!$A$1:$C$13".
4163
4061
  #
4164
- def convert_name_area(row_num_1, col_num_1, row_num_2, col_num_2) #:nodoc:
4062
+ def convert_name_area(row_num_1, col_num_1, row_num_2, col_num_2) # :nodoc:
4165
4063
  range1 = ''
4166
4064
  range2 = ''
4167
4065
  row_col_only = false
@@ -4187,25 +4085,25 @@ EOS
4187
4085
  end
4188
4086
 
4189
4087
  # A repeated range is only written once (if it isn't a special case).
4190
- if range1 == range2 && !row_col_only
4191
- area = range1
4192
- else
4193
- area = "#{range1}:#{range2}"
4194
- end
4088
+ area = if range1 == range2 && !row_col_only
4089
+ range1
4090
+ else
4091
+ "#{range1}:#{range2}"
4092
+ end
4195
4093
 
4196
4094
  # Build up the print area range "Sheet1!$A$1:$C$13".
4197
4095
  "#{quote_sheetname(@name)}!#{area}"
4198
4096
  end
4199
4097
 
4200
- def fit_page? #:nodoc:
4098
+ def fit_page? # :nodoc:
4201
4099
  @page_setup.fit_page
4202
4100
  end
4203
4101
 
4204
- def filter_on? #:nodoc:
4102
+ def filter_on? # :nodoc:
4205
4103
  ptrue?(@filter_on)
4206
4104
  end
4207
4105
 
4208
- def tab_color? #:nodoc:
4106
+ def tab_color? # :nodoc:
4209
4107
  ptrue?(@tab_color)
4210
4108
  end
4211
4109
 
@@ -4217,37 +4115,37 @@ EOS
4217
4115
  ptrue?(@vba_codename)
4218
4116
  end
4219
4117
 
4220
- def zoom_scale_normal? #:nodoc:
4118
+ def zoom_scale_normal? # :nodoc:
4221
4119
  ptrue?(@zoom_scale_normal)
4222
4120
  end
4223
4121
 
4224
- def page_view? #:nodoc:
4122
+ def page_view? # :nodoc:
4225
4123
  !!@page_view
4226
4124
  end
4227
4125
 
4228
- def right_to_left? #:nodoc:
4126
+ def right_to_left? # :nodoc:
4229
4127
  !!@right_to_left
4230
4128
  end
4231
4129
 
4232
- def show_zeros? #:nodoc:
4130
+ def show_zeros? # :nodoc:
4233
4131
  !!@show_zeros
4234
4132
  end
4235
4133
 
4236
- def protect? #:nodoc:
4134
+ def protect? # :nodoc:
4237
4135
  !!@protect
4238
4136
  end
4239
4137
 
4240
- def autofilter_ref? #:nodoc:
4138
+ def autofilter_ref? # :nodoc:
4241
4139
  !!@autofilter_ref
4242
4140
  end
4243
4141
 
4244
- def drawings? #:nodoc:
4142
+ def drawings? # :nodoc:
4245
4143
  !!@drawings
4246
4144
  end
4247
4145
 
4248
- def remove_white_space(margin) #:nodoc:
4146
+ def remove_white_space(margin) # :nodoc:
4249
4147
  if margin.respond_to?(:gsub)
4250
- margin.gsub(/[^\d\.]/, '')
4148
+ margin.gsub(/[^\d.]/, '')
4251
4149
  else
4252
4150
  margin
4253
4151
  end
@@ -4260,15 +4158,15 @@ EOS
4260
4158
  col_cell = xl_rowcol_to_cell(0, left_col)
4261
4159
 
4262
4160
  @selections <<
4263
- [ 'topRight', col_cell, col_cell ] <<
4264
- [ 'bottomLeft', row_cell, row_cell ] <<
4265
- [ 'bottomRight', active_cell, sqref ]
4161
+ ['topRight', col_cell, col_cell] <<
4162
+ ['bottomLeft', row_cell, row_cell] <<
4163
+ ['bottomRight', active_cell, sqref]
4266
4164
  elsif col > 0
4267
4165
  active_pane = 'topRight'
4268
- @selections << [ 'topRight', active_cell, sqref ]
4166
+ @selections << ['topRight', active_cell, sqref]
4269
4167
  else
4270
4168
  active_pane = 'bottomLeft'
4271
- @selections << [ 'bottomLeft', active_cell, sqref ]
4169
+ @selections << ['bottomLeft', active_cell, sqref]
4272
4170
  end
4273
4171
  active_pane
4274
4172
  end
@@ -4279,16 +4177,15 @@ EOS
4279
4177
  col_letter = col
4280
4178
 
4281
4179
  # Convert col ref to a cell ref and then to a col number.
4282
- dummy, col = substitute_cellref("#{col}1")
4180
+ _dummy, col = substitute_cellref("#{col}1")
4283
4181
  raise "Invalid column '#{col_letter}'" if col >= COL_MAX
4284
4182
  end
4285
4183
 
4286
4184
  col_first, col_last = @filter_range
4287
4185
 
4288
4186
  # Reject column if it is outside filter range.
4289
- if col < col_first or col > col_last
4290
- raise "Column '#{col}' outside autofilter column range (#{col_first} .. #{col_last})"
4291
- end
4187
+ raise "Column '#{col}' outside autofilter column range (#{col_first} .. #{col_last})" if col < col_first or col > col_last
4188
+
4292
4189
  col
4293
4190
  end
4294
4191
 
@@ -4300,7 +4197,7 @@ EOS
4300
4197
 
4301
4198
  ignore = @ignore_errors
4302
4199
 
4303
- @writer.tag_elements('ignoredErrors' ) do
4200
+ @writer.tag_elements('ignoredErrors') do
4304
4201
  {
4305
4202
  :number_stored_as_text => 'numberStoredAsText',
4306
4203
  :eval_error => 'evalError',
@@ -4312,9 +4209,7 @@ EOS
4312
4209
  :calculated_column => 'calculatedColumn',
4313
4210
  :two_digit_text_year => 'twoDigitTextYear'
4314
4211
  }.each do |key, value|
4315
- if ignore[key]
4316
- write_ignored_error(value, ignore[key])
4317
- end
4212
+ write_ignored_error(value, ignore[key]) if ignore[key]
4318
4213
  end
4319
4214
  end
4320
4215
  end