write_xlsx 0.85.3 → 0.85.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (611) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +3 -0
  3. data/Changes +15 -0
  4. data/Rakefile +1 -1
  5. data/lib/write_xlsx/compatibility.rb +1 -1
  6. data/lib/write_xlsx/format.rb +2 -3
  7. data/lib/write_xlsx/package/shared_strings.rb +6 -4
  8. data/lib/write_xlsx/package/xml_writer_simple.rb +6 -6
  9. data/lib/write_xlsx/utility.rb +4 -2
  10. data/lib/write_xlsx/version.rb +1 -1
  11. data/lib/write_xlsx/workbook.rb +6 -2
  12. data/lib/write_xlsx/worksheet.rb +22 -16
  13. data/lib/write_xlsx/worksheet/cell_data.rb +3 -1
  14. data/lib/write_xlsx/worksheet/hyperlink.rb +2 -2
  15. data/test/helper.rb +20 -0
  16. data/test/regression/disabled_test_vml04.rb +2 -2
  17. data/test/regression/test_array_formula01.rb +6 -6
  18. data/test/regression/test_array_formula02.rb +6 -6
  19. data/test/regression/test_autofilter00.rb +3 -3
  20. data/test/regression/test_autofilter01.rb +3 -3
  21. data/test/regression/test_autofilter02.rb +3 -3
  22. data/test/regression/test_autofilter03.rb +3 -3
  23. data/test/regression/test_autofilter04.rb +3 -3
  24. data/test/regression/test_autofilter05.rb +3 -3
  25. data/test/regression/test_autofilter06.rb +3 -3
  26. data/test/regression/test_autofilter07.rb +3 -3
  27. data/test/regression/test_button01.rb +3 -3
  28. data/test/regression/test_button02.rb +3 -3
  29. data/test/regression/test_button03.rb +3 -3
  30. data/test/regression/test_button04.rb +3 -3
  31. data/test/regression/test_button05.rb +3 -3
  32. data/test/regression/test_button06.rb +3 -3
  33. data/test/regression/test_button07.rb +3 -3
  34. data/test/regression/test_button08.rb +3 -3
  35. data/test/regression/test_button13.rb +2 -6
  36. data/test/regression/test_button14.rb +3 -3
  37. data/test/regression/test_chart_area01.rb +3 -3
  38. data/test/regression/test_chart_area02.rb +3 -3
  39. data/test/regression/test_chart_area03.rb +3 -3
  40. data/test/regression/test_chart_area04.rb +3 -3
  41. data/test/regression/test_chart_axis01.rb +6 -7
  42. data/test/regression/test_chart_axis02.rb +6 -7
  43. data/test/regression/test_chart_axis03.rb +9 -10
  44. data/test/regression/test_chart_axis04.rb +8 -9
  45. data/test/regression/test_chart_axis05.rb +8 -9
  46. data/test/regression/test_chart_axis06.rb +8 -9
  47. data/test/regression/test_chart_axis07.rb +8 -9
  48. data/test/regression/test_chart_axis08.rb +8 -9
  49. data/test/regression/test_chart_axis09.rb +8 -9
  50. data/test/regression/test_chart_axis10.rb +8 -9
  51. data/test/regression/test_chart_axis11.rb +8 -9
  52. data/test/regression/test_chart_axis12.rb +8 -9
  53. data/test/regression/test_chart_axis13.rb +8 -9
  54. data/test/regression/test_chart_axis14.rb +9 -10
  55. data/test/regression/test_chart_axis15.rb +9 -10
  56. data/test/regression/test_chart_axis16.rb +9 -10
  57. data/test/regression/test_chart_axis17.rb +6 -7
  58. data/test/regression/test_chart_axis18.rb +6 -7
  59. data/test/regression/test_chart_axis19.rb +6 -7
  60. data/test/regression/test_chart_axis20.rb +6 -7
  61. data/test/regression/test_chart_axis21.rb +6 -7
  62. data/test/regression/test_chart_axis22.rb +6 -7
  63. data/test/regression/test_chart_axis23.rb +6 -7
  64. data/test/regression/test_chart_axis24.rb +6 -7
  65. data/test/regression/test_chart_axis25.rb +6 -7
  66. data/test/regression/test_chart_axis26.rb +6 -7
  67. data/test/regression/test_chart_axis27.rb +6 -7
  68. data/test/regression/test_chart_axis28.rb +6 -7
  69. data/test/regression/test_chart_axis29.rb +6 -7
  70. data/test/regression/test_chart_axis30.rb +3 -7
  71. data/test/regression/test_chart_axis31.rb +3 -7
  72. data/test/regression/test_chart_axis32.rb +3 -7
  73. data/test/regression/test_chart_axis33.rb +6 -7
  74. data/test/regression/test_chart_axis34.rb +6 -7
  75. data/test/regression/test_chart_axis35.rb +6 -7
  76. data/test/regression/test_chart_axis36.rb +6 -7
  77. data/test/regression/test_chart_axis37.rb +6 -7
  78. data/test/regression/test_chart_axis38.rb +5 -10
  79. data/test/regression/test_chart_axis39.rb +6 -7
  80. data/test/regression/test_chart_bar01.rb +3 -3
  81. data/test/regression/test_chart_bar02.rb +11 -12
  82. data/test/regression/test_chart_bar03.rb +12 -13
  83. data/test/regression/test_chart_bar04.rb +12 -13
  84. data/test/regression/test_chart_bar05.rb +3 -7
  85. data/test/regression/test_chart_bar06.rb +9 -10
  86. data/test/regression/test_chart_bar07.rb +13 -14
  87. data/test/regression/test_chart_bar08.rb +3 -7
  88. data/test/regression/test_chart_bar09.rb +6 -7
  89. data/test/regression/test_chart_bar10.rb +6 -7
  90. data/test/regression/test_chart_bar11.rb +23 -25
  91. data/test/regression/test_chart_bar12.rb +3 -8
  92. data/test/regression/test_chart_bar13.rb +3 -8
  93. data/test/regression/test_chart_bar14.rb +10 -12
  94. data/test/regression/test_chart_bar15.rb +9 -11
  95. data/test/regression/test_chart_bar16.rb +8 -10
  96. data/test/regression/test_chart_bar17.rb +8 -10
  97. data/test/regression/test_chart_bar18.rb +17 -19
  98. data/test/regression/test_chart_bar19.rb +8 -10
  99. data/test/regression/test_chart_bar20.rb +8 -10
  100. data/test/regression/test_chart_bar21.rb +3 -7
  101. data/test/regression/test_chart_bar22.rb +8 -10
  102. data/test/regression/test_chart_bar23.rb +8 -10
  103. data/test/regression/test_chart_bar24.rb +9 -10
  104. data/test/regression/test_chart_blank01.rb +3 -3
  105. data/test/regression/test_chart_blank02.rb +3 -3
  106. data/test/regression/test_chart_blank03.rb +3 -3
  107. data/test/regression/test_chart_blank04.rb +3 -3
  108. data/test/regression/test_chart_blank05.rb +6 -8
  109. data/test/regression/test_chart_blank06.rb +3 -3
  110. data/test/regression/test_chart_chartarea01.rb +3 -3
  111. data/test/regression/test_chart_chartarea02.rb +3 -3
  112. data/test/regression/test_chart_chartarea03.rb +3 -3
  113. data/test/regression/test_chart_chartarea04.rb +6 -8
  114. data/test/regression/test_chart_chartarea05.rb +3 -3
  115. data/test/regression/test_chart_clustered01.rb +3 -3
  116. data/test/regression/test_chart_column01.rb +3 -7
  117. data/test/regression/test_chart_column02.rb +8 -9
  118. data/test/regression/test_chart_column03.rb +8 -9
  119. data/test/regression/test_chart_column04.rb +9 -10
  120. data/test/regression/test_chart_column05.rb +3 -3
  121. data/test/regression/test_chart_column06.rb +8 -9
  122. data/test/regression/test_chart_column07.rb +3 -7
  123. data/test/regression/test_chart_column08.rb +3 -7
  124. data/test/regression/test_chart_column09.rb +3 -7
  125. data/test/regression/test_chart_column10.rb +3 -7
  126. data/test/regression/test_chart_column11.rb +3 -7
  127. data/test/regression/test_chart_column12.rb +2 -10
  128. data/test/regression/test_chart_combined01.rb +3 -3
  129. data/test/regression/test_chart_combined02.rb +3 -3
  130. data/test/regression/test_chart_combined03.rb +3 -3
  131. data/test/regression/test_chart_combined04.rb +3 -3
  132. data/test/regression/test_chart_combined05.rb +3 -3
  133. data/test/regression/test_chart_combined06.rb +3 -3
  134. data/test/regression/test_chart_combined07.rb +3 -3
  135. data/test/regression/test_chart_combined08.rb +3 -3
  136. data/test/regression/test_chart_crossing01.rb +8 -9
  137. data/test/regression/test_chart_crossing02.rb +8 -9
  138. data/test/regression/test_chart_crossing03.rb +8 -9
  139. data/test/regression/test_chart_crossing04.rb +8 -9
  140. data/test/regression/test_chart_data_labels01.rb +3 -3
  141. data/test/regression/test_chart_data_labels02.rb +3 -3
  142. data/test/regression/test_chart_data_labels03.rb +3 -3
  143. data/test/regression/test_chart_data_labels04.rb +3 -3
  144. data/test/regression/test_chart_data_labels05.rb +3 -3
  145. data/test/regression/test_chart_data_labels06.rb +3 -3
  146. data/test/regression/test_chart_data_labels07.rb +3 -3
  147. data/test/regression/test_chart_data_labels08.rb +3 -3
  148. data/test/regression/test_chart_data_labels09.rb +3 -3
  149. data/test/regression/test_chart_data_labels10.rb +3 -3
  150. data/test/regression/test_chart_data_labels11.rb +3 -3
  151. data/test/regression/test_chart_data_labels12.rb +3 -3
  152. data/test/regression/test_chart_data_labels13.rb +3 -3
  153. data/test/regression/test_chart_data_labels14.rb +3 -3
  154. data/test/regression/test_chart_data_labels15.rb +3 -3
  155. data/test/regression/test_chart_data_labels16.rb +3 -3
  156. data/test/regression/test_chart_data_labels17.rb +3 -3
  157. data/test/regression/test_chart_data_labels18.rb +3 -3
  158. data/test/regression/test_chart_data_labels19.rb +3 -3
  159. data/test/regression/test_chart_data_labels20.rb +3 -3
  160. data/test/regression/test_chart_data_labels21.rb +3 -3
  161. data/test/regression/test_chart_data_labels22.rb +3 -3
  162. data/test/regression/test_chart_data_labels23.rb +3 -3
  163. data/test/regression/test_chart_data_labels24.rb +3 -3
  164. data/test/regression/test_chart_date01.rb +2 -6
  165. data/test/regression/test_chart_date02.rb +3 -3
  166. data/test/regression/test_chart_date03.rb +3 -3
  167. data/test/regression/test_chart_date04.rb +3 -3
  168. data/test/regression/test_chart_date05.rb +3 -3
  169. data/test/regression/test_chart_display_units01.rb +3 -3
  170. data/test/regression/test_chart_display_units02.rb +3 -3
  171. data/test/regression/test_chart_display_units03.rb +3 -3
  172. data/test/regression/test_chart_display_units04.rb +3 -3
  173. data/test/regression/test_chart_display_units05.rb +3 -3
  174. data/test/regression/test_chart_display_units06.rb +3 -3
  175. data/test/regression/test_chart_display_units07.rb +3 -3
  176. data/test/regression/test_chart_display_units08.rb +3 -3
  177. data/test/regression/test_chart_display_units09.rb +3 -3
  178. data/test/regression/test_chart_display_units10.rb +3 -3
  179. data/test/regression/test_chart_display_units11.rb +3 -3
  180. data/test/regression/test_chart_display_units12.rb +3 -3
  181. data/test/regression/test_chart_doughnut01.rb +3 -7
  182. data/test/regression/test_chart_doughnut02.rb +3 -7
  183. data/test/regression/test_chart_doughnut03.rb +3 -7
  184. data/test/regression/test_chart_doughnut04.rb +3 -7
  185. data/test/regression/test_chart_doughnut05.rb +3 -7
  186. data/test/regression/test_chart_doughnut06.rb +3 -7
  187. data/test/regression/test_chart_drop_lines01.rb +3 -3
  188. data/test/regression/test_chart_drop_lines02.rb +3 -3
  189. data/test/regression/test_chart_drop_lines03.rb +3 -3
  190. data/test/regression/test_chart_drop_lines04.rb +3 -3
  191. data/test/regression/test_chart_errorbars01.rb +3 -4
  192. data/test/regression/test_chart_errorbars02.rb +3 -4
  193. data/test/regression/test_chart_errorbars03.rb +3 -4
  194. data/test/regression/test_chart_errorbars04.rb +3 -4
  195. data/test/regression/test_chart_errorbars05.rb +3 -4
  196. data/test/regression/test_chart_errorbars06.rb +3 -4
  197. data/test/regression/test_chart_errorbars07.rb +6 -7
  198. data/test/regression/test_chart_errorbars08.rb +3 -7
  199. data/test/regression/test_chart_errorbars09.rb +3 -7
  200. data/test/regression/test_chart_errorbars10.rb +3 -7
  201. data/test/regression/test_chart_font01.rb +3 -3
  202. data/test/regression/test_chart_font02.rb +3 -3
  203. data/test/regression/test_chart_font03.rb +3 -3
  204. data/test/regression/test_chart_font04.rb +3 -3
  205. data/test/regression/test_chart_font05.rb +3 -3
  206. data/test/regression/test_chart_font06.rb +3 -3
  207. data/test/regression/test_chart_font07.rb +3 -3
  208. data/test/regression/test_chart_font08.rb +3 -3
  209. data/test/regression/test_chart_font09.rb +2 -6
  210. data/test/regression/test_chart_format01.rb +3 -3
  211. data/test/regression/test_chart_format02.rb +3 -3
  212. data/test/regression/test_chart_format03.rb +3 -3
  213. data/test/regression/test_chart_format04.rb +3 -3
  214. data/test/regression/test_chart_format05.rb +3 -3
  215. data/test/regression/test_chart_format06.rb +8 -10
  216. data/test/regression/test_chart_format07.rb +8 -10
  217. data/test/regression/test_chart_format08.rb +8 -10
  218. data/test/regression/test_chart_format09.rb +8 -10
  219. data/test/regression/test_chart_format10.rb +8 -10
  220. data/test/regression/test_chart_format11.rb +8 -10
  221. data/test/regression/test_chart_format12.rb +8 -10
  222. data/test/regression/test_chart_format13.rb +8 -10
  223. data/test/regression/test_chart_format14.rb +8 -10
  224. data/test/regression/test_chart_format15.rb +8 -10
  225. data/test/regression/test_chart_format16.rb +8 -10
  226. data/test/regression/test_chart_format17.rb +3 -4
  227. data/test/regression/test_chart_format18.rb +3 -4
  228. data/test/regression/test_chart_format19.rb +3 -4
  229. data/test/regression/test_chart_format20.rb +3 -4
  230. data/test/regression/test_chart_gap01.rb +3 -3
  231. data/test/regression/test_chart_gap02.rb +3 -3
  232. data/test/regression/test_chart_gap03.rb +3 -3
  233. data/test/regression/test_chart_gap04.rb +3 -3
  234. data/test/regression/test_chart_gap05.rb +3 -3
  235. data/test/regression/test_chart_gradient01.rb +3 -6
  236. data/test/regression/test_chart_gradient02.rb +3 -6
  237. data/test/regression/test_chart_gradient03.rb +3 -6
  238. data/test/regression/test_chart_gradient04.rb +3 -6
  239. data/test/regression/test_chart_gradient05.rb +3 -6
  240. data/test/regression/test_chart_gradient06.rb +3 -6
  241. data/test/regression/test_chart_gradient07.rb +3 -6
  242. data/test/regression/test_chart_gradient08.rb +3 -6
  243. data/test/regression/test_chart_gradient09.rb +3 -6
  244. data/test/regression/test_chart_gradient10.rb +3 -6
  245. data/test/regression/test_chart_gradient11.rb +3 -6
  246. data/test/regression/test_chart_gradient12.rb +3 -6
  247. data/test/regression/test_chart_gradient13.rb +3 -6
  248. data/test/regression/test_chart_gridlines01.rb +3 -6
  249. data/test/regression/test_chart_gridlines02.rb +3 -6
  250. data/test/regression/test_chart_gridlines03.rb +6 -8
  251. data/test/regression/test_chart_gridlines04.rb +3 -6
  252. data/test/regression/test_chart_gridlines05.rb +3 -6
  253. data/test/regression/test_chart_gridlines06.rb +3 -6
  254. data/test/regression/test_chart_gridlines07.rb +6 -8
  255. data/test/regression/test_chart_gridlines08.rb +3 -6
  256. data/test/regression/test_chart_gridlines09.rb +3 -6
  257. data/test/regression/test_chart_layout01.rb +3 -3
  258. data/test/regression/test_chart_layout02.rb +3 -3
  259. data/test/regression/test_chart_layout03.rb +3 -3
  260. data/test/regression/test_chart_layout04.rb +3 -3
  261. data/test/regression/test_chart_layout05.rb +3 -3
  262. data/test/regression/test_chart_layout06.rb +3 -3
  263. data/test/regression/test_chart_layout07.rb +3 -3
  264. data/test/regression/test_chart_layout08.rb +3 -3
  265. data/test/regression/test_chart_legend01.rb +3 -8
  266. data/test/regression/test_chart_legend02.rb +3 -8
  267. data/test/regression/test_chart_line01.rb +3 -3
  268. data/test/regression/test_chart_line02.rb +9 -10
  269. data/test/regression/test_chart_line03.rb +3 -3
  270. data/test/regression/test_chart_line04.rb +3 -3
  271. data/test/regression/test_chart_name01.rb +3 -6
  272. data/test/regression/test_chart_name02.rb +3 -6
  273. data/test/regression/test_chart_name03.rb +3 -6
  274. data/test/regression/test_chart_order01.rb +3 -6
  275. data/test/regression/test_chart_order02.rb +3 -6
  276. data/test/regression/test_chart_order03.rb +10 -12
  277. data/test/regression/test_chart_pie01.rb +3 -3
  278. data/test/regression/test_chart_pie02.rb +3 -3
  279. data/test/regression/test_chart_pie03.rb +3 -3
  280. data/test/regression/test_chart_pie04.rb +3 -3
  281. data/test/regression/test_chart_pie05.rb +3 -3
  282. data/test/regression/test_chart_points01.rb +3 -3
  283. data/test/regression/test_chart_points02.rb +3 -3
  284. data/test/regression/test_chart_points03.rb +3 -3
  285. data/test/regression/test_chart_points04.rb +3 -3
  286. data/test/regression/test_chart_points05.rb +3 -3
  287. data/test/regression/test_chart_points06.rb +3 -3
  288. data/test/regression/test_chart_radar01.rb +3 -3
  289. data/test/regression/test_chart_radar02.rb +3 -3
  290. data/test/regression/test_chart_radar03.rb +3 -3
  291. data/test/regression/test_chart_scatter01.rb +3 -3
  292. data/test/regression/test_chart_scatter02.rb +3 -3
  293. data/test/regression/test_chart_scatter03.rb +3 -3
  294. data/test/regression/test_chart_scatter04.rb +3 -3
  295. data/test/regression/test_chart_scatter05.rb +3 -3
  296. data/test/regression/test_chart_scatter06.rb +3 -3
  297. data/test/regression/test_chart_scatter07.rb +9 -10
  298. data/test/regression/test_chart_scatter08.rb +3 -3
  299. data/test/regression/test_chart_scatter09.rb +3 -3
  300. data/test/regression/test_chart_scatter10.rb +3 -3
  301. data/test/regression/test_chart_scatter11.rb +3 -3
  302. data/test/regression/test_chart_scatter12.rb +3 -3
  303. data/test/regression/test_chart_scatter13.rb +3 -3
  304. data/test/regression/test_chart_scatter14.rb +3 -3
  305. data/test/regression/test_chart_scatter15.rb +3 -3
  306. data/test/regression/test_chart_size01.rb +3 -3
  307. data/test/regression/test_chart_size02.rb +3 -3
  308. data/test/regression/test_chart_size03.rb +3 -3
  309. data/test/regression/test_chart_size04.rb +3 -3
  310. data/test/regression/test_chart_size05.rb +3 -3
  311. data/test/regression/test_chart_sparse01.rb +6 -9
  312. data/test/regression/test_chart_stock01.rb +6 -8
  313. data/test/regression/test_chart_stock02.rb +10 -12
  314. data/test/regression/test_chart_str01.rb +3 -8
  315. data/test/regression/test_chart_str02.rb +3 -8
  316. data/test/regression/test_chart_table01.rb +3 -6
  317. data/test/regression/test_chart_table02.rb +3 -6
  318. data/test/regression/test_chart_title01.rb +3 -8
  319. data/test/regression/test_chart_title02.rb +3 -8
  320. data/test/regression/test_chartsheet01.rb +3 -8
  321. data/test/regression/test_chartsheet02.rb +8 -10
  322. data/test/regression/test_chartsheet03.rb +8 -10
  323. data/test/regression/test_chartsheet04.rb +8 -10
  324. data/test/regression/test_chartsheet05.rb +8 -10
  325. data/test/regression/test_chartsheet06.rb +7 -13
  326. data/test/regression/test_chartsheet07.rb +16 -18
  327. data/test/regression/test_chartsheet08.rb +16 -18
  328. data/test/regression/test_chartsheet09.rb +8 -10
  329. data/test/regression/test_comment01.rb +3 -3
  330. data/test/regression/test_comment02.rb +3 -3
  331. data/test/regression/test_comment03.rb +6 -7
  332. data/test/regression/test_comment04.rb +6 -7
  333. data/test/regression/test_comment06.rb +6 -7
  334. data/test/regression/test_comment07.rb +6 -7
  335. data/test/regression/test_comment08.rb +6 -7
  336. data/test/regression/test_comment09.rb +6 -7
  337. data/test/regression/test_comment10.rb +6 -7
  338. data/test/regression/test_comment11.rb +6 -8
  339. data/test/regression/test_comment12.rb +3 -8
  340. data/test/regression/test_cond_format01.rb +6 -7
  341. data/test/regression/test_cond_format02.rb +6 -7
  342. data/test/regression/test_cond_format03.rb +6 -7
  343. data/test/regression/test_cond_format04.rb +6 -7
  344. data/test/regression/test_cond_format05.rb +6 -7
  345. data/test/regression/test_cond_format06.rb +6 -7
  346. data/test/regression/test_cond_format07.rb +6 -7
  347. data/test/regression/test_cond_format08.rb +6 -7
  348. data/test/regression/test_cond_format10.rb +6 -7
  349. data/test/regression/test_cond_format11.rb +6 -7
  350. data/test/regression/test_cond_format12.rb +6 -7
  351. data/test/regression/test_cond_format13.rb +6 -7
  352. data/test/regression/test_custom_colors01.rb +3 -3
  353. data/test/regression/test_data_validation01.rb +3 -3
  354. data/test/regression/test_data_validation02.rb +3 -3
  355. data/test/regression/test_data_validation03.rb +3 -3
  356. data/test/regression/test_data_validation04.rb +1 -5
  357. data/test/regression/test_data_validation05.rb +1 -5
  358. data/test/regression/test_date_1904_01.rb +3 -8
  359. data/test/regression/test_date_1904_02.rb +3 -8
  360. data/test/regression/test_date_examples01.rb +3 -3
  361. data/test/regression/test_default_format01.rb +2 -6
  362. data/test/regression/test_default_row01.rb +3 -3
  363. data/test/regression/test_default_row02.rb +3 -3
  364. data/test/regression/test_default_row03.rb +3 -3
  365. data/test/regression/test_default_row04.rb +3 -3
  366. data/test/regression/test_defined_name01.rb +10 -12
  367. data/test/regression/test_defined_name02.rb +10 -12
  368. data/test/regression/test_defined_name03.rb +10 -12
  369. data/test/regression/test_defined_name04.rb +2 -7
  370. data/test/regression/test_escapes01.rb +8 -10
  371. data/test/regression/test_escapes02.rb +8 -9
  372. data/test/regression/test_escapes03.rb +8 -9
  373. data/test/regression/test_escapes04.rb +8 -10
  374. data/test/regression/test_escapes05.rb +8 -10
  375. data/test/regression/test_escapes06.rb +3 -6
  376. data/test/regression/test_escapes07.rb +3 -6
  377. data/test/regression/test_escapes08.rb +3 -6
  378. data/test/regression/test_excel2003_style01.rb +3 -3
  379. data/test/regression/test_excel2003_style02.rb +3 -3
  380. data/test/regression/test_excel2003_style03.rb +3 -3
  381. data/test/regression/test_excel2003_style04.rb +3 -3
  382. data/test/regression/test_excel2003_style05.rb +3 -3
  383. data/test/regression/test_excel2003_style06.rb +3 -3
  384. data/test/regression/test_excel2003_style07.rb +3 -3
  385. data/test/regression/test_excel2003_style08.rb +3 -3
  386. data/test/regression/test_firstsheet01.rb +3 -8
  387. data/test/regression/test_fit_to_pages01.rb +12 -14
  388. data/test/regression/test_fit_to_pages02.rb +12 -14
  389. data/test/regression/test_fit_to_pages03.rb +12 -14
  390. data/test/regression/test_fit_to_pages04.rb +12 -14
  391. data/test/regression/test_fit_to_pages05.rb +12 -14
  392. data/test/regression/test_format01.rb +3 -3
  393. data/test/regression/test_format02.rb +3 -3
  394. data/test/regression/test_format03.rb +3 -3
  395. data/test/regression/test_format04.rb +3 -3
  396. data/test/regression/test_format05.rb +3 -3
  397. data/test/regression/test_format11.rb +3 -3
  398. data/test/regression/test_format12.rb +3 -3
  399. data/test/regression/test_formula_results01.rb +3 -3
  400. data/test/regression/test_gridlines01.rb +12 -14
  401. data/test/regression/test_header01.rb +3 -3
  402. data/test/regression/test_header02.rb +3 -3
  403. data/test/regression/test_header03.rb +3 -3
  404. data/test/regression/test_header_image01.rb +3 -3
  405. data/test/regression/test_header_image02.rb +3 -3
  406. data/test/regression/test_header_image03.rb +3 -3
  407. data/test/regression/test_header_image04.rb +3 -3
  408. data/test/regression/test_header_image05.rb +3 -3
  409. data/test/regression/test_header_image06.rb +3 -3
  410. data/test/regression/test_header_image07.rb +3 -3
  411. data/test/regression/test_header_image08.rb +3 -3
  412. data/test/regression/test_header_image09.rb +8 -12
  413. data/test/regression/test_header_image10.rb +3 -3
  414. data/test/regression/test_header_image11.rb +3 -3
  415. data/test/regression/test_header_image12.rb +3 -3
  416. data/test/regression/test_header_image13.rb +3 -3
  417. data/test/regression/test_header_image14.rb +3 -3
  418. data/test/regression/test_hide01.rb +3 -8
  419. data/test/regression/test_hyperlink01.rb +3 -3
  420. data/test/regression/test_hyperlink02.rb +3 -3
  421. data/test/regression/test_hyperlink03.rb +3 -3
  422. data/test/regression/test_hyperlink04.rb +3 -3
  423. data/test/regression/test_hyperlink05.rb +3 -3
  424. data/test/regression/test_hyperlink06.rb +3 -3
  425. data/test/regression/test_hyperlink07.rb +2 -6
  426. data/test/regression/test_hyperlink08.rb +3 -3
  427. data/test/regression/test_hyperlink09.rb +3 -3
  428. data/test/regression/test_hyperlink10.rb +3 -3
  429. data/test/regression/test_hyperlink11.rb +3 -3
  430. data/test/regression/test_hyperlink12.rb +3 -3
  431. data/test/regression/test_hyperlink13.rb +3 -3
  432. data/test/regression/test_hyperlink14.rb +3 -3
  433. data/test/regression/test_hyperlink15.rb +3 -3
  434. data/test/regression/test_hyperlink16.rb +3 -3
  435. data/test/regression/test_hyperlink17.rb +3 -3
  436. data/test/regression/test_hyperlink18.rb +3 -3
  437. data/test/regression/test_hyperlink20.rb +3 -3
  438. data/test/regression/test_hyperlink21.rb +3 -3
  439. data/test/regression/test_image01.rb +3 -3
  440. data/test/regression/test_image02.rb +3 -3
  441. data/test/regression/test_image03.rb +3 -3
  442. data/test/regression/test_image04.rb +3 -3
  443. data/test/regression/test_image05.rb +3 -3
  444. data/test/regression/test_image06.rb +3 -3
  445. data/test/regression/test_image07.rb +3 -3
  446. data/test/regression/test_image08.rb +3 -3
  447. data/test/regression/test_image09.rb +3 -3
  448. data/test/regression/test_image10.rb +3 -3
  449. data/test/regression/test_image11.rb +3 -3
  450. data/test/regression/test_image12.rb +3 -3
  451. data/test/regression/test_image13.rb +3 -3
  452. data/test/regression/test_image14.rb +3 -3
  453. data/test/regression/test_image15.rb +3 -3
  454. data/test/regression/test_image16.rb +3 -3
  455. data/test/regression/test_image17.rb +2 -6
  456. data/test/regression/test_image18.rb +3 -3
  457. data/test/regression/test_image19.rb +3 -3
  458. data/test/regression/test_image22.rb +3 -3
  459. data/test/regression/test_image23.rb +3 -3
  460. data/test/regression/test_image24.rb +3 -3
  461. data/test/regression/test_image25.rb +3 -3
  462. data/test/regression/test_image26.rb +3 -3
  463. data/test/regression/test_image27.rb +3 -3
  464. data/test/regression/test_landscape01.rb +3 -3
  465. data/test/regression/test_macro01.rb +3 -3
  466. data/test/regression/test_merge_cells01.rb +2 -6
  467. data/test/regression/test_merge_range01.rb +3 -6
  468. data/test/regression/test_merge_range02.rb +3 -6
  469. data/test/regression/test_merge_range03.rb +3 -6
  470. data/test/regression/test_merge_range04.rb +3 -6
  471. data/test/regression/test_merge_range05.rb +3 -6
  472. data/test/regression/test_outline01.rb +12 -14
  473. data/test/regression/test_outline02.rb +12 -14
  474. data/test/regression/test_outline03.rb +12 -14
  475. data/test/regression/test_outline04.rb +12 -14
  476. data/test/regression/test_outline05.rb +12 -14
  477. data/test/regression/test_outline06.rb +12 -14
  478. data/test/regression/test_page_breaks01.rb +12 -14
  479. data/test/regression/test_page_breaks02.rb +12 -14
  480. data/test/regression/test_page_breaks03.rb +12 -14
  481. data/test/regression/test_page_breaks04.rb +12 -14
  482. data/test/regression/test_page_breaks05.rb +12 -14
  483. data/test/regression/test_page_breaks06.rb +12 -14
  484. data/test/regression/test_page_view01.rb +12 -14
  485. data/test/regression/test_panes01.rb +3 -8
  486. data/test/regression/test_print_across01.rb +12 -14
  487. data/test/regression/test_print_area01.rb +12 -14
  488. data/test/regression/test_print_area02.rb +12 -14
  489. data/test/regression/test_print_area03.rb +12 -14
  490. data/test/regression/test_print_area04.rb +12 -14
  491. data/test/regression/test_print_area05.rb +12 -14
  492. data/test/regression/test_print_area06.rb +12 -14
  493. data/test/regression/test_print_area07.rb +12 -14
  494. data/test/regression/test_print_options01.rb +12 -14
  495. data/test/regression/test_print_options02.rb +12 -14
  496. data/test/regression/test_print_options03.rb +12 -14
  497. data/test/regression/test_print_options04.rb +12 -14
  498. data/test/regression/test_print_options05.rb +12 -14
  499. data/test/regression/test_print_options06.rb +12 -14
  500. data/test/regression/test_print_options07.rb +3 -5
  501. data/test/regression/test_print_scale01.rb +12 -14
  502. data/test/regression/test_print_scale02.rb +12 -14
  503. data/test/regression/test_properties01.rb +6 -7
  504. data/test/regression/test_protect01.rb +3 -3
  505. data/test/regression/test_protect02.rb +3 -3
  506. data/test/regression/test_protect03.rb +3 -3
  507. data/test/regression/test_quote_name01.rb +3 -3
  508. data/test/regression/test_quote_name03.rb +3 -3
  509. data/test/regression/test_quote_name04.rb +3 -3
  510. data/test/regression/test_repeat01.rb +12 -14
  511. data/test/regression/test_repeat02.rb +12 -14
  512. data/test/regression/test_repeat03.rb +12 -14
  513. data/test/regression/test_repeat04.rb +12 -14
  514. data/test/regression/test_repeat05.rb +15 -17
  515. data/test/regression/test_rich_string01.rb +3 -3
  516. data/test/regression/test_rich_string02.rb +3 -3
  517. data/test/regression/test_rich_string03.rb +3 -3
  518. data/test/regression/test_rich_string04.rb +3 -3
  519. data/test/regression/test_rich_string05.rb +3 -3
  520. data/test/regression/test_rich_string06.rb +3 -3
  521. data/test/regression/test_rich_string07.rb +3 -3
  522. data/test/regression/test_rich_string08.rb +3 -3
  523. data/test/regression/test_rich_string09.rb +3 -3
  524. data/test/regression/test_rich_string10.rb +3 -3
  525. data/test/regression/test_rich_string11.rb +3 -3
  526. data/test/regression/test_rich_string12.rb +3 -3
  527. data/test/regression/test_row_col_format01.rb +3 -3
  528. data/test/regression/test_row_col_format02.rb +3 -3
  529. data/test/regression/test_row_col_format03.rb +3 -3
  530. data/test/regression/test_row_col_format04.rb +3 -3
  531. data/test/regression/test_row_col_format05.rb +3 -3
  532. data/test/regression/test_row_col_format06.rb +3 -3
  533. data/test/regression/test_row_col_format07.rb +3 -3
  534. data/test/regression/test_row_col_format08.rb +3 -3
  535. data/test/regression/test_row_col_format09.rb +3 -3
  536. data/test/regression/test_row_col_format10.rb +3 -3
  537. data/test/regression/test_row_col_format11.rb +3 -3
  538. data/test/regression/test_row_col_format12.rb +3 -3
  539. data/test/regression/test_row_col_format13.rb +3 -3
  540. data/test/regression/test_row_col_format14.rb +3 -3
  541. data/test/regression/test_selection01.rb +3 -3
  542. data/test/regression/test_selection02.rb +3 -3
  543. data/test/regression/test_set_column01.rb +3 -3
  544. data/test/regression/test_set_column02.rb +3 -3
  545. data/test/regression/test_set_column03.rb +2 -6
  546. data/test/regression/test_set_column04.rb +3 -3
  547. data/test/regression/test_set_column05.rb +3 -3
  548. data/test/regression/test_set_column06.rb +3 -3
  549. data/test/regression/test_set_column07.rb +3 -3
  550. data/test/regression/test_set_column08.rb +3 -3
  551. data/test/regression/test_set_column09.rb +3 -3
  552. data/test/regression/test_set_print_scale01.rb +3 -3
  553. data/test/regression/test_set_start_page01.rb +3 -3
  554. data/test/regression/test_set_start_page02.rb +3 -3
  555. data/test/regression/test_set_start_page03.rb +3 -3
  556. data/test/regression/test_shape01.rb +3 -3
  557. data/test/regression/test_shape02.rb +3 -3
  558. data/test/regression/test_shape03.rb +3 -3
  559. data/test/regression/test_shape04.rb +3 -3
  560. data/test/regression/test_shape_connect01.rb +3 -3
  561. data/test/regression/test_shape_connect02.rb +3 -3
  562. data/test/regression/test_shape_connect03.rb +3 -3
  563. data/test/regression/test_shape_connect04.rb +3 -3
  564. data/test/regression/test_shape_scale01.rb +12 -14
  565. data/test/regression/test_shape_stencil01.rb +3 -8
  566. data/test/regression/test_shared_strings01.rb +6 -8
  567. data/test/regression/test_shared_strings02.rb +6 -8
  568. data/test/regression/test_shared_strings_encoding.rb +0 -103
  569. data/test/regression/test_simple01.rb +3 -3
  570. data/test/regression/test_simple02.rb +3 -3
  571. data/test/regression/test_simple03.rb +3 -3
  572. data/test/regression/test_simple04.rb +3 -3
  573. data/test/regression/test_simple05.rb +3 -3
  574. data/test/regression/test_tab_color01.rb +2 -11
  575. data/test/regression/test_table01.rb +3 -3
  576. data/test/regression/test_table02.rb +3 -3
  577. data/test/regression/test_table03.rb +3 -3
  578. data/test/regression/test_table04.rb +3 -3
  579. data/test/regression/test_table05.rb +3 -3
  580. data/test/regression/test_table06.rb +3 -3
  581. data/test/regression/test_table07.rb +3 -3
  582. data/test/regression/test_table08.rb +3 -3
  583. data/test/regression/test_table09.rb +3 -3
  584. data/test/regression/test_table10.rb +3 -3
  585. data/test/regression/test_table11.rb +3 -3
  586. data/test/regression/test_table12.rb +3 -3
  587. data/test/regression/test_table13.rb +3 -3
  588. data/test/regression/test_table14.rb +3 -3
  589. data/test/regression/test_table15.rb +3 -3
  590. data/test/regression/test_table16.rb +3 -3
  591. data/test/regression/test_table17.rb +3 -3
  592. data/test/regression/test_tutorial01.rb +3 -3
  593. data/test/regression/test_tutorial02.rb +3 -3
  594. data/test/regression/test_tutorial03.rb +3 -3
  595. data/test/regression/test_urls_as_strings.rb +25 -0
  596. data/test/regression/test_utf8_01.rb +3 -3
  597. data/test/regression/test_utf8_03.rb +3 -3
  598. data/test/regression/test_utf8_04.rb +3 -3
  599. data/test/regression/test_utf8_05.rb +3 -3
  600. data/test/regression/test_utf8_06.rb +3 -3
  601. data/test/regression/test_utf8_07.rb +3 -3
  602. data/test/regression/test_utf8_08.rb +3 -3
  603. data/test/regression/test_utf8_09.rb +2 -6
  604. data/test/regression/test_utf8_10.rb +3 -3
  605. data/test/regression/test_vml01.rb +3 -3
  606. data/test/regression/test_vml02.rb +3 -3
  607. data/test/regression/test_vml03.rb +3 -3
  608. data/test/regression/xlsx_files/urls_as_strings.xlsx +0 -0
  609. data/test/test_example_match.rb +199 -133
  610. data/test/test_xml_writer_simple.rb +3 -3
  611. metadata +7 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 451a49314f7a14e2c9d5bfc5c4df3ca7f54e2718
4
- data.tar.gz: 040af462094068f22464c341ea38fa971b5e4403
2
+ SHA256:
3
+ metadata.gz: 1a8ed1e139d973baf49fc349d874da19de256e10ac34f2b4f5a08ec6dcac1eba
4
+ data.tar.gz: a553667cbe7443f9c9bbfc74d28a9a30e830c95dec213e2d70ca48862bb0505a
5
5
  SHA512:
6
- metadata.gz: 47524ba5498e8529ccc789da00036e0cf7a901d116f6661c75d8ee7b74485181aeb5ee7f657844cdbf756a1dfaa6337faf25c307586960fb32465fcca4764249
7
- data.tar.gz: b582ea2f76e0bf02a37484581d732c9a329161d606fae13a381cd6541824b0a4ee061f8196385277a4e8b92f0965db79b5d426bf77cc7107201f55f18b1e0b76
6
+ metadata.gz: ec4e891ca22e53564f6a715aca9efce06c19782a4274d71ddb485b2bc34f1bf4f11a5f70b736b5fd4f23d74b47e68235c8ef4781fd3c014cad7cbf7c07501963
7
+ data.tar.gz: e262a4b65b0da4703894ab831f36a1058dcae5d71d103d7f83c313c0ada4e30db534eaabc3273b4c784c1b06d14de4730506b142ea49c8dc32c283339604f0c3
data/.gitignore CHANGED
@@ -1,4 +1,7 @@
1
1
  TAGS
2
+ GPATH
3
+ GRTAGS
4
+ GTAGS
2
5
  *.gem
3
6
  .bundle
4
7
  .config
data/Changes CHANGED
@@ -1,5 +1,20 @@
1
1
  Change history of write_xlsx rubygem.
2
2
 
3
+ 2020-09-03 v0.85.8
4
+ apply pull-request #58 and #52
5
+
6
+ 2019-06-20 v0.85.7
7
+ apply pull-request #26
8
+
9
+ 2019-02-10 v0.85.6
10
+ Fix work well in ms windows.
11
+
12
+ 2018-04-29 v0.85.5
13
+ Added option to store hyperlink strings as string (strings_as_urls: false).
14
+
15
+ 2018-04-29 v0.85.4
16
+ Added option to store hyperlink strings as string (urls_as_strings).
17
+
3
18
  2018-01-07 v0.85.3
4
19
  Fix hide first sheet problem #37
5
20
 
data/Rakefile CHANGED
@@ -7,5 +7,5 @@ require 'rake/testtask'
7
7
  Rake::TestTask.new do |test|
8
8
  test.libs << 'test'
9
9
  test.pattern = 'test/**/test_*.rb'
10
- test.verbose = true
10
+ test.warning = false
11
11
  end
@@ -45,7 +45,7 @@ def ascii_only?
45
45
 
46
46
  unless File.respond_to?(:binread)
47
47
  def File.binread(file) #:nodoc:
48
- File.open(file,"rb") { |f| f.read }
48
+ File.open(file,"rb:utf-8:utf-8") { |f| f.read }
49
49
  end
50
50
  end
51
51
 
@@ -287,11 +287,10 @@ def set_format_properties(*properties) # :nodoc:
287
287
 
288
288
  # Create a sub to set the property.
289
289
  if value.respond_to?(:to_str) || !value.respond_to?(:+)
290
- s = "set_#{key}('#{value}')"
290
+ send("set_#{key}", value.to_s)
291
291
  else
292
- s = "set_#{key}(#{value})"
292
+ send("set_#{key}", value)
293
293
  end
294
- eval s
295
294
  end
296
295
  end
297
296
  end
@@ -9,14 +9,15 @@ class SharedStrings
9
9
  include Writexlsx::Utility
10
10
 
11
11
  def initialize
12
- @writer = Package::XMLWriterSimple.new
13
- @strings = [] # string table
14
- @count = {} # => count
12
+ @writer = Package::XMLWriterSimple.new
13
+ @strings = [] # string table
14
+ @strings_index = {} # string table index
15
+ @count = {} # count
15
16
  end
16
17
 
17
18
  def index(string, params = {})
18
19
  add(string) unless params[:only_query]
19
- @strings.index(string)
20
+ @strings_index[string]
20
21
  end
21
22
 
22
23
  def add(string)
@@ -25,6 +26,7 @@ def add(string)
25
26
  @count[str] += 1
26
27
  else
27
28
  @strings << str
29
+ @strings_index[str] = @strings.size - 1
28
30
  @count[str] = 1
29
31
  end
30
32
  end
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # XMLWriterSimple
4
5
  #
@@ -29,10 +30,9 @@ def tag_elements(tag, attributes = [])
29
30
  end
30
31
 
31
32
  def tag_elements_str(tag, attributes = [])
32
- str = ''
33
- str << start_tag_str(tag, attributes)
34
- str << yield
35
- str << end_tag_str(tag)
33
+ str = start_tag_str(tag, attributes) +
34
+ yield +
35
+ end_tag_str(tag)
36
36
  end
37
37
 
38
38
  def start_tag(tag, attr = [])
@@ -65,7 +65,7 @@ def empty_tag_encoded_str(tag, attr = [])
65
65
  end
66
66
 
67
67
  def data_element(tag, data, attr = [])
68
- tag_elements(tag, attr) { io_write("#{escape_data(data)}") }
68
+ tag_elements(tag, attr) { io_write(escape_data(data)) }
69
69
  end
70
70
 
71
71
  #
@@ -92,7 +92,7 @@ def crlf
92
92
 
93
93
  def close
94
94
  if @filename
95
- File.open(@filename, "wb") { |f| f << string }
95
+ File.open(@filename, "wb:utf-8:utf-8") { |f| f << string }
96
96
  end
97
97
  @io.close
98
98
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
  require 'write_xlsx/col_name'
3
4
 
4
5
  module Writexlsx
@@ -303,11 +304,12 @@ def write_color(writer, name, value) #:nodoc:
303
304
  writer.empty_tag('color', attributes)
304
305
  end
305
306
 
307
+ PERL_TRUE_VALUES = [false, nil, 0, "0", "", [], {}].freeze
306
308
  #
307
309
  # return perl's boolean result
308
310
  #
309
311
  def ptrue?(value)
310
- if [false, nil, 0, "0", "", [], {}].include?(value)
312
+ if PERL_TRUE_VALUES.include?(value)
311
313
  false
312
314
  else
313
315
  true
@@ -586,7 +588,7 @@ def process_workbook_options(*params)
586
588
  when 0
587
589
  [{}, {}]
588
590
  when 1 # one hash
589
- options_keys = [:tempdir, :date_1904, :optimization, :excel2003_style]
591
+ options_keys = [:tempdir, :date_1904, :optimization, :excel2003_style, :strings_to_urls]
590
592
 
591
593
  hash = params.first
592
594
  options = hash.reject{|k,v| !options_keys.include?(k)}
@@ -1 +1 @@
1
- WriteXLSX_VERSION = "0.85.3"
1
+ WriteXLSX_VERSION = "0.85.8"
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
  require 'write_xlsx/package/xml_writer_simple'
3
4
  require 'write_xlsx/package/packager'
4
5
  require 'write_xlsx/sheets'
@@ -47,6 +48,7 @@ class Workbook
47
48
  attr_reader :shared_strings # :nodoc:
48
49
  attr_reader :vba_project # :nodoc:
49
50
  attr_reader :excel2003_style # :nodoc:
51
+ attr_reader :strings_to_urls # :nodoc:
50
52
  #
51
53
  # A new Excel workbook is created using the +new+ constructor
52
54
  # which accepts either a filename or an IO object as a parameter.
@@ -123,6 +125,7 @@ def initialize(file, *option_params)
123
125
  @table_count = 0
124
126
  @image_types = {}
125
127
  @images = []
128
+ @strings_to_urls = (options[:strings_to_urls].nil? || options[:strings_to_urls]) ? true : false
126
129
 
127
130
  # Structures for the shared strings data.
128
131
  @shared_strings = Package::SharedStrings.new
@@ -970,8 +973,9 @@ def date_1904? #:nodoc:
970
973
  # Add a string to the shared string table, if it isn't already there, and
971
974
  # return the string index.
972
975
  #
973
- def shared_string_index(str, params = {}) #:nodoc:
974
- @shared_strings.index(str, params)
976
+ EMPTY_HASH = {}.freeze
977
+ def shared_string_index(str) #:nodoc:
978
+ @shared_strings.index(str, EMPTY_HASH)
975
979
  end
976
980
 
977
981
  def str_unique # :nodoc:
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
  require 'write_xlsx/package/xml_writer_simple'
3
4
  require 'write_xlsx/package/button'
4
5
  require 'write_xlsx/colors'
@@ -1783,15 +1784,6 @@ def write(*args)
1783
1784
  write_number(*args)
1784
1785
  elsif token =~ /^\d+$/
1785
1786
  write_number(*args)
1786
- # Match http, https or ftp URL
1787
- elsif token =~ %r|\A[fh]tt?ps?://|
1788
- write_url(*args)
1789
- # Match mailto:
1790
- elsif token =~ %r|\Amailto:|
1791
- write_url(*args)
1792
- # Match internal or external sheet link
1793
- elsif token =~ %r!\A(?:in|ex)ternal:!
1794
- write_url(*args)
1795
1787
  # Match formula
1796
1788
  elsif token =~ /^=/
1797
1789
  write_formula(*args)
@@ -1802,6 +1794,19 @@ def write(*args)
1802
1794
  elsif token == ''
1803
1795
  row_col_args.delete_at(2) # remove the empty string from the parameter list
1804
1796
  write_blank(*row_col_args)
1797
+ elsif @workbook.strings_to_urls
1798
+ # Match http, https or ftp URL
1799
+ if token =~ %r|\A[fh]tt?ps?://|
1800
+ write_url(*args)
1801
+ # Match mailto:
1802
+ elsif token =~ %r|\Amailto:|
1803
+ write_url(*args)
1804
+ # Match internal or external sheet link
1805
+ elsif token =~ %r!\A(?:in|ex)ternal:!
1806
+ write_url(*args)
1807
+ else
1808
+ write_string(*args)
1809
+ end
1805
1810
  else
1806
1811
  write_string(*args)
1807
1812
  end
@@ -2184,7 +2189,7 @@ def write_comment(*args)
2184
2189
  def write_number(*args)
2185
2190
  # Check for a cell reference in A1 notation and substitute row and column
2186
2191
  row, col, num, xf = row_col_notation(args)
2187
- raise WriteXLSXInsufficientArgumentError if [row, col, num].include?(nil)
2192
+ raise WriteXLSXInsufficientArgumentError if row.nil? || col.nil? || num.nil?
2188
2193
 
2189
2194
  # Check that row and col are valid and store max and min values
2190
2195
  check_dimensions(row, col)
@@ -2226,13 +2231,13 @@ def write_string(*args)
2226
2231
  # Check for a cell reference in A1 notation and substitute row and column
2227
2232
  row, col, str, xf = row_col_notation(args)
2228
2233
  str &&= str.to_s
2229
- raise WriteXLSXInsufficientArgumentError if [row, col, str].include?(nil)
2234
+ raise WriteXLSXInsufficientArgumentError if row.nil? || col.nil? || str.nil?
2230
2235
 
2231
2236
  # Check that row and col are valid and store max and min values
2232
2237
  check_dimensions(row, col)
2233
2238
  store_row_col_max_min_values(row, col)
2234
2239
 
2235
- index = shared_string_index(str[0, STR_MAX])
2240
+ index = shared_string_index(str.length > STR_MAX ? str[0, STR_MAX] : str)
2236
2241
 
2237
2242
  store_data_to_table(StringCellData.new(self, row, col, index, xf))
2238
2243
  end
@@ -5845,10 +5850,11 @@ def prepare_vml_objects(vml_data_id, vml_shape_id, vml_drawing_id, comment_id)
5845
5850
 
5846
5851
  # The VML o:idmap data id contains a comma separated range when there is
5847
5852
  # more than one 1024 block of comments, like this: data="1,2".
5853
+ data = "#{vml_data_id}"
5848
5854
  (1 .. num_comments_block).each do |i|
5849
- vml_data_id = "#{vml_data_id},#{vml_data_id + i}"
5855
+ data += ",#{vml_data_id + i}"
5850
5856
  end
5851
- @vml_data_id = vml_data_id
5857
+ @vml_data_id = data
5852
5858
  @vml_shape_id = vml_shape_id
5853
5859
  end
5854
5860
 
@@ -7505,8 +7511,8 @@ def calc_spans(data, row_num, span_min, span_max)
7505
7511
  # Add a string to the shared string table, if it isn't already there, and
7506
7512
  # return the string index.
7507
7513
  #
7508
- def shared_string_index(str, params = {}) #:nodoc:
7509
- @workbook.shared_string_index(str, params)
7514
+ def shared_string_index(str) #:nodoc:
7515
+ @workbook.shared_string_index(str)
7510
7516
  end
7511
7517
 
7512
7518
  #
@@ -1,4 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Writexlsx
4
5
  class Worksheet
@@ -63,9 +64,10 @@ def data
63
64
  { :sst_id => token }
64
65
  end
65
66
 
67
+ TYPE_STR_ATTRS = ['t', 's'].freeze
66
68
  def write_cell
67
69
  attributes = cell_attributes
68
- attributes << ['t', 's']
70
+ attributes << TYPE_STR_ATTRS
69
71
  @worksheet.writer.tag_elements('c', attributes) do
70
72
  @worksheet.write_cell_value(token)
71
73
  end
@@ -24,7 +24,7 @@ def initialize(url, str, tip)
24
24
  str ||= url.dup
25
25
 
26
26
  # Strip the mailto header.
27
- str.sub!(/^mailto:/, '')
27
+ normalized_str = str.sub(/^mailto:/, '')
28
28
 
29
29
  # Escape URL unless it looks already escaped.
30
30
  url = escape_url(url)
@@ -35,7 +35,7 @@ def initialize(url, str, tip)
35
35
  end
36
36
 
37
37
  @url = url
38
- @str = str
38
+ @str = normalized_str
39
39
  @url_str = nil
40
40
  @tip = tip
41
41
  end
@@ -13,6 +13,9 @@
13
13
  $LOAD_PATH.unshift(File.dirname(__FILE__))
14
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
15
15
  require 'write_xlsx'
16
+ require 'stringio'
17
+ require 'tempfile'
18
+
16
19
 
17
20
  class Writexlsx::Workbook
18
21
  #
@@ -28,6 +31,11 @@ def setup_dir_var
28
31
  @test_dir = File.dirname(__FILE__)
29
32
  @perl_output = File.join(@test_dir, 'perl_output')
30
33
  @regression_output = File.join(@test_dir, 'regression', 'xlsx_files')
34
+ @io = StringIO.new
35
+ end
36
+
37
+ def expected_xlsx
38
+ File.join(@regression_output, @xlsx)
31
39
  end
32
40
 
33
41
  def expected_to_array(lines)
@@ -68,6 +76,18 @@ def entrys(xlsx)
68
76
  result
69
77
  end
70
78
 
79
+ def compare_for_regression(ignore_members = nil, ignore_elements = nil)
80
+ store_to_tempfile
81
+ compare_xlsx(expected_xlsx, @tempfile.path, ignore_members, ignore_elements, true)
82
+ end
83
+
84
+ def store_to_tempfile
85
+ @tempfile = Tempfile.open(@xlsx)
86
+ @tempfile.binmode
87
+ @tempfile.write(@io.string)
88
+ @tempfile.close
89
+ end
90
+
71
91
  def compare_xlsx_for_regression(exp_filename, got_filename, ignore_members = nil, ignore_elements = nil)
72
92
  compare_xlsx(exp_filename, got_filename, ignore_members, ignore_elements, true)
73
93
  end
@@ -12,7 +12,7 @@ def teardown
12
12
 
13
13
  def test_vml04
14
14
  @xlsx = 'vml04.xlsx'
15
- workbook = WriteXLSX.new(@xlsx)
15
+ workbook = WriteXLSX.new(@io)
16
16
  worksheet1 = workbook.add_worksheet
17
17
  worksheet2 = workbook.add_worksheet
18
18
  worksheet3 = workbook.add_worksheet
@@ -36,6 +36,6 @@ def test_vml04
36
36
  worksheet3.insert_button('E8', {})
37
37
 
38
38
  workbook.close
39
- compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx)
39
+ compare_for_regression
40
40
  end
41
41
  end
@@ -7,12 +7,12 @@ def setup
7
7
  end
8
8
 
9
9
  def teardown
10
- File.delete(@xlsx) if File.exist?(@xlsx)
10
+ @tempfile.close(true)
11
11
  end
12
12
 
13
13
  def test_array_formula01
14
14
  @xlsx = 'array_formula01.xlsx'
15
- workbook = WriteXLSX.new(@xlsx)
15
+ workbook = WriteXLSX.new(@io)
16
16
  worksheet = workbook.add_worksheet
17
17
 
18
18
  data = [0, 0, 0]
@@ -23,9 +23,9 @@ def test_array_formula01
23
23
  worksheet.write_array_formula('A1:A3', '{=SUM(B1:C1*B2:C2)}', nil, 0)
24
24
 
25
25
  workbook.close
26
- compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
27
- [ 'xl/calcChain.xml', '[Content_Types].xml', 'xl/_rels/workbook.xml.rels' ],
28
- {'xl/workbook.xml' => ['<workbookView']}
29
- )
26
+ compare_for_regression(
27
+ [ 'xl/calcChain.xml', '[Content_Types].xml', 'xl/_rels/workbook.xml.rels' ],
28
+ {'xl/workbook.xml' => ['<workbookView']}
29
+ )
30
30
  end
31
31
  end
@@ -7,12 +7,12 @@ def setup
7
7
  end
8
8
 
9
9
  def teardown
10
- File.delete(@xlsx) if File.exist?(@xlsx)
10
+ @tempfile.close(true)
11
11
  end
12
12
 
13
13
  def test_array_formula02
14
14
  @xlsx = 'array_formula02.xlsx'
15
- workbook = WriteXLSX.new(@xlsx)
15
+ workbook = WriteXLSX.new(@io)
16
16
  worksheet = workbook.add_worksheet
17
17
  format = workbook.add_format(:bold => 1)
18
18
 
@@ -24,9 +24,9 @@ def test_array_formula02
24
24
  worksheet.write_array_formula('A1:A3', '{=SUM(B1:C1*B2:C2)}', format, 0)
25
25
 
26
26
  workbook.close
27
- compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
28
- [ 'xl/calcChain.xml', '[Content_Types].xml', 'xl/_rels/workbook.xml.rels' ],
29
- {'xl/workbook.xml' => ['<workbookView']}
30
- )
27
+ compare_for_regression(
28
+ [ 'xl/calcChain.xml', '[Content_Types].xml', 'xl/_rels/workbook.xml.rels' ],
29
+ {'xl/workbook.xml' => ['<workbookView']}
30
+ )
31
31
  end
32
32
  end