write_xlsx 0.85.3 → 0.85.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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