write_xlsx 0.85.8 → 0.87.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (894) hide show
  1. checksums.yaml +4 -4
  2. data/Changes +39 -0
  3. data/README.md +5 -5
  4. data/examples/chart_combined.rb +3 -1
  5. data/examples/colors.rb +47 -0
  6. data/examples/comments2.rb +1 -1
  7. data/examples/conditional_format.rb +60 -9
  8. data/examples/data_validate.rb +7 -7
  9. data/examples/panes.rb +1 -1
  10. data/examples/tab_colors.rb +1 -1
  11. data/examples/update_range_format_with_params.rb +33 -0
  12. data/lib/write_xlsx/chart.rb +51 -4
  13. data/lib/write_xlsx/chart/axis.rb +2 -2
  14. data/lib/write_xlsx/chart/series.rb +26 -10
  15. data/lib/write_xlsx/format.rb +6 -2
  16. data/lib/write_xlsx/package/app.rb +12 -0
  17. data/lib/write_xlsx/package/comments.rb +4 -2
  18. data/lib/write_xlsx/package/conditional_format.rb +8 -2
  19. data/lib/write_xlsx/package/shared_strings.rb +12 -10
  20. data/lib/write_xlsx/package/styles.rb +1 -1
  21. data/lib/write_xlsx/package/table.rb +31 -5
  22. data/lib/write_xlsx/package/xml_writer_simple.rb +4 -3
  23. data/lib/write_xlsx/utility.rb +86 -1
  24. data/lib/write_xlsx/version.rb +1 -1
  25. data/lib/write_xlsx/workbook.rb +19 -17
  26. data/lib/write_xlsx/worksheet.rb +118 -11
  27. data/lib/write_xlsx/worksheet/data_validation.rb +23 -11
  28. data/lib/write_xlsx/worksheet/hyperlink.rb +12 -8
  29. data/test/chart/test_add_series.rb +11 -1
  30. data/test/chart/test_process_names.rb +1 -1
  31. data/test/chart/test_write_a_latin.rb +1 -1
  32. data/test/chart/test_write_auto.rb +1 -1
  33. data/test/chart/test_write_ax_id.rb +1 -1
  34. data/test/chart/test_write_ax_pos.rb +1 -1
  35. data/test/chart/test_write_cross_ax.rb +1 -1
  36. data/test/chart/test_write_crosses.rb +1 -1
  37. data/test/chart/test_write_d_lbls.rb +1 -1
  38. data/test/chart/test_write_format_code.rb +1 -1
  39. data/test/chart/test_write_idx.rb +1 -1
  40. data/test/chart/test_write_label_align.rb +1 -1
  41. data/test/chart/test_write_label_offset.rb +1 -1
  42. data/test/chart/test_write_lang.rb +1 -1
  43. data/test/chart/test_write_layout.rb +1 -1
  44. data/test/chart/test_write_legend.rb +1 -1
  45. data/test/chart/test_write_legend_pos.rb +1 -1
  46. data/test/chart/test_write_major_gridlines.rb +1 -1
  47. data/test/chart/test_write_marker.rb +1 -1
  48. data/test/chart/test_write_marker_size.rb +1 -1
  49. data/test/chart/test_write_marker_value.rb +1 -1
  50. data/test/chart/test_write_num_cache.rb +1 -1
  51. data/test/chart/test_write_number_format.rb +2 -3
  52. data/test/chart/test_write_order.rb +1 -1
  53. data/test/chart/test_write_orientation.rb +1 -1
  54. data/test/chart/test_write_page_margins.rb +1 -1
  55. data/test/chart/test_write_page_setup.rb +1 -1
  56. data/test/chart/test_write_plot_vis_only.rb +1 -1
  57. data/test/chart/test_write_pt.rb +1 -1
  58. data/test/chart/test_write_pt_count.rb +1 -1
  59. data/test/chart/test_write_series_formula.rb +1 -1
  60. data/test/chart/test_write_style.rb +1 -1
  61. data/test/chart/test_write_symbol.rb +1 -1
  62. data/test/chart/test_write_tick_lbl_pos.rb +1 -1
  63. data/test/chart/test_write_v.rb +1 -1
  64. data/test/chartsheet/test_chartsheet01.rb +1 -1
  65. data/test/drawing/test_drawing_chart_01.rb +1 -1
  66. data/test/drawing/test_drawing_image_01.rb +1 -1
  67. data/test/drawing/test_drawing_shape_01.rb +1 -1
  68. data/test/drawing/test_drawing_shape_02.rb +1 -1
  69. data/test/drawing/test_drawing_shape_03.rb +1 -1
  70. data/test/drawing/test_drawing_shape_04.rb +1 -1
  71. data/test/drawing/test_drawing_shape_05.rb +1 -1
  72. data/test/drawing/test_drawing_shape_06.rb +1 -1
  73. data/test/drawing/test_drawing_shape_07.rb +1 -1
  74. data/test/drawing/test_write_a_graphic_frame_locks.rb +1 -1
  75. data/test/drawing/test_write_c_chart.rb +1 -1
  76. data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +1 -1
  77. data/test/drawing/test_write_c_nv_pr.rb +1 -1
  78. data/test/drawing/test_write_col.rb +1 -1
  79. data/test/drawing/test_write_col_off.rb +1 -1
  80. data/test/drawing/test_write_ext.rb +1 -1
  81. data/test/drawing/test_write_pos.rb +1 -1
  82. data/test/drawing/test_write_row.rb +1 -1
  83. data/test/drawing/test_write_row_off.rb +1 -1
  84. data/test/drawing/test_write_xfrm_extension.rb +1 -1
  85. data/test/drawing/test_write_xfrm_offset.rb +1 -1
  86. data/test/helper.rb +2 -2
  87. data/test/package/app/test_app01.rb +1 -1
  88. data/test/package/app/test_app02.rb +1 -1
  89. data/test/package/app/test_app03.rb +1 -1
  90. data/test/package/comments/test_write_text_t.rb +1 -1
  91. data/test/package/content_types/test_content_types.rb +1 -1
  92. data/test/package/content_types/test_write_default.rb +1 -1
  93. data/test/package/content_types/test_write_override.rb +1 -1
  94. data/test/package/core/test_core01.rb +1 -1
  95. data/test/package/core/test_core02.rb +1 -1
  96. data/test/package/relationships/test_relationships.rb +1 -1
  97. data/test/package/relationships/test_sheet_rels.rb +1 -1
  98. data/test/package/shared_strings/test_shared_strings01.rb +1 -1
  99. data/test/package/shared_strings/test_shared_strings02.rb +1 -1
  100. data/test/package/shared_strings/test_write_si.rb +1 -7
  101. data/test/package/styles/test_styles_01.rb +1 -1
  102. data/test/package/styles/test_styles_02.rb +1 -1
  103. data/test/package/styles/test_styles_03.rb +1 -1
  104. data/test/package/styles/test_styles_04.rb +1 -1
  105. data/test/package/styles/test_styles_05.rb +1 -1
  106. data/test/package/styles/test_styles_06.rb +1 -1
  107. data/test/package/styles/test_styles_07.rb +1 -1
  108. data/test/package/styles/test_styles_08.rb +1 -1
  109. data/test/package/styles/test_styles_09.rb +1 -1
  110. data/test/package/table/test_table01.rb +3 -3
  111. data/test/package/table/test_table02.rb +2 -2
  112. data/test/package/table/test_table03.rb +2 -2
  113. data/test/package/table/test_table04.rb +2 -2
  114. data/test/package/table/test_table05.rb +2 -2
  115. data/test/package/table/test_table06.rb +2 -2
  116. data/test/package/table/test_table07.rb +2 -2
  117. data/test/package/table/test_table08.rb +2 -2
  118. data/test/package/table/test_table09.rb +2 -2
  119. data/test/package/table/test_table10.rb +2 -2
  120. data/test/package/table/test_table11.rb +2 -2
  121. data/test/package/table/test_table12.rb +2 -2
  122. data/test/package/table/test_table13.rb +1 -1
  123. data/test/package/table/test_write_auto_filter.rb +1 -1
  124. data/test/package/table/test_write_table_column.rb +1 -1
  125. data/test/package/table/test_write_table_style_info.rb +1 -1
  126. data/test/package/vml/test_write_auto_fill.rb +1 -1
  127. data/test/package/vml/test_write_div.rb +1 -1
  128. data/test/package/vml/test_write_idmap.rb +1 -1
  129. data/test/package/vml/test_write_path.rb +1 -1
  130. data/test/package/vml/test_write_shapelayout.rb +1 -1
  131. data/test/package/vml/test_write_shapetype.rb +1 -1
  132. data/test/package/vml/test_write_stroke.rb +1 -1
  133. data/test/regression/disabled_test_vml04.rb +1 -1
  134. data/test/regression/images/red_208.png +0 -0
  135. data/test/regression/test_array_formula01.rb +1 -1
  136. data/test/regression/test_array_formula02.rb +1 -1
  137. data/test/regression/test_autofilter00.rb +1 -1
  138. data/test/regression/test_autofilter01.rb +1 -1
  139. data/test/regression/test_autofilter02.rb +1 -1
  140. data/test/regression/test_autofilter03.rb +1 -1
  141. data/test/regression/test_autofilter04.rb +1 -1
  142. data/test/regression/test_autofilter05.rb +1 -1
  143. data/test/regression/test_autofilter06.rb +1 -1
  144. data/test/regression/test_autofilter07.rb +1 -1
  145. data/test/regression/test_button01.rb +1 -1
  146. data/test/regression/test_button02.rb +1 -1
  147. data/test/regression/test_button03.rb +1 -1
  148. data/test/regression/test_button04.rb +1 -1
  149. data/test/regression/test_button05.rb +1 -1
  150. data/test/regression/test_button06.rb +1 -1
  151. data/test/regression/test_button07.rb +1 -1
  152. data/test/regression/test_button08.rb +1 -1
  153. data/test/regression/test_button13.rb +1 -1
  154. data/test/regression/test_button14.rb +1 -1
  155. data/test/regression/test_chart_area01.rb +1 -1
  156. data/test/regression/test_chart_area02.rb +1 -1
  157. data/test/regression/test_chart_area03.rb +1 -1
  158. data/test/regression/test_chart_area04.rb +1 -1
  159. data/test/regression/test_chart_axis01.rb +1 -1
  160. data/test/regression/test_chart_axis02.rb +1 -1
  161. data/test/regression/test_chart_axis03.rb +1 -1
  162. data/test/regression/test_chart_axis04.rb +1 -1
  163. data/test/regression/test_chart_axis05.rb +1 -1
  164. data/test/regression/test_chart_axis06.rb +1 -1
  165. data/test/regression/test_chart_axis07.rb +1 -1
  166. data/test/regression/test_chart_axis08.rb +1 -1
  167. data/test/regression/test_chart_axis09.rb +1 -1
  168. data/test/regression/test_chart_axis10.rb +1 -1
  169. data/test/regression/test_chart_axis11.rb +1 -1
  170. data/test/regression/test_chart_axis12.rb +1 -1
  171. data/test/regression/test_chart_axis13.rb +1 -1
  172. data/test/regression/test_chart_axis14.rb +1 -1
  173. data/test/regression/test_chart_axis15.rb +1 -1
  174. data/test/regression/test_chart_axis16.rb +1 -1
  175. data/test/regression/test_chart_axis17.rb +1 -1
  176. data/test/regression/test_chart_axis18.rb +1 -1
  177. data/test/regression/test_chart_axis19.rb +1 -1
  178. data/test/regression/test_chart_axis20.rb +1 -1
  179. data/test/regression/test_chart_axis21.rb +1 -1
  180. data/test/regression/test_chart_axis22.rb +1 -1
  181. data/test/regression/test_chart_axis23.rb +1 -1
  182. data/test/regression/test_chart_axis24.rb +1 -1
  183. data/test/regression/test_chart_axis25.rb +1 -1
  184. data/test/regression/test_chart_axis26.rb +1 -1
  185. data/test/regression/test_chart_axis27.rb +1 -1
  186. data/test/regression/test_chart_axis28.rb +1 -1
  187. data/test/regression/test_chart_axis29.rb +1 -1
  188. data/test/regression/test_chart_axis30.rb +1 -1
  189. data/test/regression/test_chart_axis31.rb +1 -1
  190. data/test/regression/test_chart_axis32.rb +1 -1
  191. data/test/regression/test_chart_axis33.rb +1 -1
  192. data/test/regression/test_chart_axis34.rb +1 -1
  193. data/test/regression/test_chart_axis35.rb +1 -1
  194. data/test/regression/test_chart_axis36.rb +1 -1
  195. data/test/regression/test_chart_axis37.rb +1 -1
  196. data/test/regression/test_chart_axis38.rb +1 -1
  197. data/test/regression/test_chart_axis39.rb +1 -1
  198. data/test/regression/test_chart_axis40.rb +44 -0
  199. data/test/regression/test_chart_bar01.rb +1 -1
  200. data/test/regression/test_chart_bar02.rb +1 -1
  201. data/test/regression/test_chart_bar03.rb +1 -1
  202. data/test/regression/test_chart_bar04.rb +1 -1
  203. data/test/regression/test_chart_bar05.rb +1 -1
  204. data/test/regression/test_chart_bar06.rb +1 -1
  205. data/test/regression/test_chart_bar07.rb +1 -1
  206. data/test/regression/test_chart_bar08.rb +1 -1
  207. data/test/regression/test_chart_bar09.rb +1 -1
  208. data/test/regression/test_chart_bar10.rb +1 -1
  209. data/test/regression/test_chart_bar11.rb +1 -1
  210. data/test/regression/test_chart_bar12.rb +1 -1
  211. data/test/regression/test_chart_bar13.rb +1 -1
  212. data/test/regression/test_chart_bar14.rb +1 -1
  213. data/test/regression/test_chart_bar15.rb +1 -1
  214. data/test/regression/test_chart_bar16.rb +1 -1
  215. data/test/regression/test_chart_bar17.rb +1 -1
  216. data/test/regression/test_chart_bar18.rb +1 -1
  217. data/test/regression/test_chart_bar19.rb +1 -1
  218. data/test/regression/test_chart_bar20.rb +1 -1
  219. data/test/regression/test_chart_bar21.rb +1 -1
  220. data/test/regression/test_chart_bar22.rb +1 -1
  221. data/test/regression/test_chart_bar23.rb +1 -1
  222. data/test/regression/test_chart_bar24.rb +1 -1
  223. data/test/regression/test_chart_blank01.rb +1 -1
  224. data/test/regression/test_chart_blank02.rb +1 -1
  225. data/test/regression/test_chart_blank03.rb +1 -1
  226. data/test/regression/test_chart_blank04.rb +1 -1
  227. data/test/regression/test_chart_blank05.rb +1 -1
  228. data/test/regression/test_chart_blank06.rb +1 -1
  229. data/test/regression/test_chart_chartarea01.rb +1 -1
  230. data/test/regression/test_chart_chartarea02.rb +1 -1
  231. data/test/regression/test_chart_chartarea03.rb +1 -1
  232. data/test/regression/test_chart_chartarea04.rb +1 -1
  233. data/test/regression/test_chart_chartarea05.rb +1 -1
  234. data/test/regression/test_chart_clustered01.rb +1 -1
  235. data/test/regression/test_chart_column01.rb +1 -1
  236. data/test/regression/test_chart_column02.rb +1 -1
  237. data/test/regression/test_chart_column03.rb +1 -1
  238. data/test/regression/test_chart_column04.rb +1 -1
  239. data/test/regression/test_chart_column05.rb +1 -1
  240. data/test/regression/test_chart_column06.rb +1 -1
  241. data/test/regression/test_chart_column07.rb +1 -1
  242. data/test/regression/test_chart_column08.rb +1 -1
  243. data/test/regression/test_chart_column09.rb +1 -1
  244. data/test/regression/test_chart_column10.rb +1 -1
  245. data/test/regression/test_chart_column11.rb +1 -1
  246. data/test/regression/test_chart_column12.rb +1 -1
  247. data/test/regression/test_chart_combined01.rb +1 -1
  248. data/test/regression/test_chart_combined02.rb +1 -1
  249. data/test/regression/test_chart_combined03.rb +1 -1
  250. data/test/regression/test_chart_combined04.rb +1 -1
  251. data/test/regression/test_chart_combined05.rb +1 -1
  252. data/test/regression/test_chart_combined06.rb +1 -1
  253. data/test/regression/test_chart_combined07.rb +1 -1
  254. data/test/regression/test_chart_combined08.rb +1 -1
  255. data/test/regression/test_chart_combined09.rb +50 -0
  256. data/test/regression/test_chart_crossing01.rb +1 -1
  257. data/test/regression/test_chart_crossing02.rb +1 -1
  258. data/test/regression/test_chart_crossing03.rb +1 -1
  259. data/test/regression/test_chart_crossing04.rb +1 -1
  260. data/test/regression/test_chart_data_labels01.rb +1 -1
  261. data/test/regression/test_chart_data_labels02.rb +1 -1
  262. data/test/regression/test_chart_data_labels03.rb +1 -1
  263. data/test/regression/test_chart_data_labels04.rb +1 -1
  264. data/test/regression/test_chart_data_labels05.rb +1 -1
  265. data/test/regression/test_chart_data_labels06.rb +1 -1
  266. data/test/regression/test_chart_data_labels07.rb +1 -1
  267. data/test/regression/test_chart_data_labels08.rb +1 -1
  268. data/test/regression/test_chart_data_labels09.rb +1 -1
  269. data/test/regression/test_chart_data_labels10.rb +1 -1
  270. data/test/regression/test_chart_data_labels11.rb +1 -1
  271. data/test/regression/test_chart_data_labels12.rb +1 -1
  272. data/test/regression/test_chart_data_labels13.rb +1 -1
  273. data/test/regression/test_chart_data_labels14.rb +1 -1
  274. data/test/regression/test_chart_data_labels15.rb +1 -1
  275. data/test/regression/test_chart_data_labels16.rb +1 -1
  276. data/test/regression/test_chart_data_labels17.rb +1 -1
  277. data/test/regression/test_chart_data_labels18.rb +1 -1
  278. data/test/regression/test_chart_data_labels19.rb +1 -1
  279. data/test/regression/test_chart_data_labels20.rb +1 -1
  280. data/test/regression/test_chart_data_labels21.rb +1 -1
  281. data/test/regression/test_chart_data_labels22.rb +1 -1
  282. data/test/regression/test_chart_data_labels23.rb +1 -1
  283. data/test/regression/test_chart_data_labels24.rb +1 -1
  284. data/test/regression/test_chart_date01.rb +1 -1
  285. data/test/regression/test_chart_date02.rb +1 -1
  286. data/test/regression/test_chart_date03.rb +1 -1
  287. data/test/regression/test_chart_date04.rb +1 -1
  288. data/test/regression/test_chart_date05.rb +1 -1
  289. data/test/regression/test_chart_display_units01.rb +1 -1
  290. data/test/regression/test_chart_display_units02.rb +1 -1
  291. data/test/regression/test_chart_display_units03.rb +1 -1
  292. data/test/regression/test_chart_display_units04.rb +1 -1
  293. data/test/regression/test_chart_display_units05.rb +1 -1
  294. data/test/regression/test_chart_display_units06.rb +1 -1
  295. data/test/regression/test_chart_display_units07.rb +1 -1
  296. data/test/regression/test_chart_display_units08.rb +1 -1
  297. data/test/regression/test_chart_display_units09.rb +1 -1
  298. data/test/regression/test_chart_display_units10.rb +1 -1
  299. data/test/regression/test_chart_display_units11.rb +1 -1
  300. data/test/regression/test_chart_display_units12.rb +1 -1
  301. data/test/regression/test_chart_doughnut01.rb +1 -1
  302. data/test/regression/test_chart_doughnut02.rb +1 -1
  303. data/test/regression/test_chart_doughnut03.rb +1 -1
  304. data/test/regression/test_chart_doughnut04.rb +1 -1
  305. data/test/regression/test_chart_doughnut05.rb +1 -1
  306. data/test/regression/test_chart_doughnut06.rb +1 -1
  307. data/test/regression/test_chart_drop_lines01.rb +1 -1
  308. data/test/regression/test_chart_drop_lines02.rb +1 -1
  309. data/test/regression/test_chart_drop_lines03.rb +1 -1
  310. data/test/regression/test_chart_drop_lines04.rb +1 -1
  311. data/test/regression/test_chart_errorbars01.rb +1 -1
  312. data/test/regression/test_chart_errorbars02.rb +1 -1
  313. data/test/regression/test_chart_errorbars03.rb +1 -1
  314. data/test/regression/test_chart_errorbars04.rb +1 -1
  315. data/test/regression/test_chart_errorbars05.rb +1 -1
  316. data/test/regression/test_chart_errorbars06.rb +1 -1
  317. data/test/regression/test_chart_errorbars07.rb +1 -1
  318. data/test/regression/test_chart_errorbars08.rb +1 -1
  319. data/test/regression/test_chart_errorbars09.rb +1 -1
  320. data/test/regression/test_chart_errorbars10.rb +1 -1
  321. data/test/regression/test_chart_font01.rb +1 -1
  322. data/test/regression/test_chart_font02.rb +1 -1
  323. data/test/regression/test_chart_font03.rb +1 -1
  324. data/test/regression/test_chart_font04.rb +1 -1
  325. data/test/regression/test_chart_font05.rb +1 -1
  326. data/test/regression/test_chart_font06.rb +1 -1
  327. data/test/regression/test_chart_font07.rb +1 -1
  328. data/test/regression/test_chart_font08.rb +1 -1
  329. data/test/regression/test_chart_font09.rb +1 -1
  330. data/test/regression/test_chart_format01.rb +1 -1
  331. data/test/regression/test_chart_format02.rb +1 -1
  332. data/test/regression/test_chart_format03.rb +1 -1
  333. data/test/regression/test_chart_format04.rb +1 -1
  334. data/test/regression/test_chart_format05.rb +1 -1
  335. data/test/regression/test_chart_format06.rb +1 -1
  336. data/test/regression/test_chart_format07.rb +1 -1
  337. data/test/regression/test_chart_format08.rb +1 -1
  338. data/test/regression/test_chart_format09.rb +1 -1
  339. data/test/regression/test_chart_format10.rb +1 -1
  340. data/test/regression/test_chart_format11.rb +1 -1
  341. data/test/regression/test_chart_format12.rb +1 -1
  342. data/test/regression/test_chart_format13.rb +1 -1
  343. data/test/regression/test_chart_format14.rb +1 -1
  344. data/test/regression/test_chart_format15.rb +1 -1
  345. data/test/regression/test_chart_format16.rb +1 -1
  346. data/test/regression/test_chart_format17.rb +1 -1
  347. data/test/regression/test_chart_format18.rb +1 -1
  348. data/test/regression/test_chart_format19.rb +1 -1
  349. data/test/regression/test_chart_format20.rb +1 -1
  350. data/test/regression/test_chart_gap01.rb +1 -1
  351. data/test/regression/test_chart_gap02.rb +1 -1
  352. data/test/regression/test_chart_gap03.rb +1 -1
  353. data/test/regression/test_chart_gap04.rb +1 -1
  354. data/test/regression/test_chart_gap05.rb +1 -1
  355. data/test/regression/test_chart_gradient01.rb +1 -1
  356. data/test/regression/test_chart_gradient02.rb +1 -1
  357. data/test/regression/test_chart_gradient03.rb +1 -1
  358. data/test/regression/test_chart_gradient04.rb +1 -1
  359. data/test/regression/test_chart_gradient05.rb +1 -1
  360. data/test/regression/test_chart_gradient06.rb +1 -1
  361. data/test/regression/test_chart_gradient07.rb +1 -1
  362. data/test/regression/test_chart_gradient08.rb +1 -1
  363. data/test/regression/test_chart_gradient09.rb +1 -1
  364. data/test/regression/test_chart_gradient10.rb +1 -1
  365. data/test/regression/test_chart_gradient11.rb +1 -1
  366. data/test/regression/test_chart_gradient12.rb +1 -1
  367. data/test/regression/test_chart_gradient13.rb +1 -1
  368. data/test/regression/test_chart_gridlines01.rb +1 -1
  369. data/test/regression/test_chart_gridlines02.rb +1 -1
  370. data/test/regression/test_chart_gridlines03.rb +1 -1
  371. data/test/regression/test_chart_gridlines04.rb +1 -1
  372. data/test/regression/test_chart_gridlines05.rb +1 -1
  373. data/test/regression/test_chart_gridlines06.rb +1 -1
  374. data/test/regression/test_chart_gridlines07.rb +1 -1
  375. data/test/regression/test_chart_gridlines08.rb +1 -1
  376. data/test/regression/test_chart_gridlines09.rb +1 -1
  377. data/test/regression/test_chart_layout01.rb +1 -1
  378. data/test/regression/test_chart_layout02.rb +1 -1
  379. data/test/regression/test_chart_layout03.rb +1 -1
  380. data/test/regression/test_chart_layout04.rb +1 -1
  381. data/test/regression/test_chart_layout05.rb +1 -1
  382. data/test/regression/test_chart_layout06.rb +1 -1
  383. data/test/regression/test_chart_layout07.rb +1 -1
  384. data/test/regression/test_chart_layout08.rb +1 -1
  385. data/test/regression/test_chart_legend01.rb +1 -1
  386. data/test/regression/test_chart_legend02.rb +1 -1
  387. data/test/regression/test_chart_line01.rb +1 -1
  388. data/test/regression/test_chart_line02.rb +1 -1
  389. data/test/regression/test_chart_line03.rb +1 -1
  390. data/test/regression/test_chart_line04.rb +1 -1
  391. data/test/regression/test_chart_name01.rb +1 -1
  392. data/test/regression/test_chart_name02.rb +1 -1
  393. data/test/regression/test_chart_name03.rb +1 -1
  394. data/test/regression/test_chart_order01.rb +1 -1
  395. data/test/regression/test_chart_order02.rb +1 -1
  396. data/test/regression/test_chart_order03.rb +1 -1
  397. data/test/regression/test_chart_pattern01.rb +49 -0
  398. data/test/regression/test_chart_pattern02.rb +106 -0
  399. data/test/regression/test_chart_pattern03.rb +105 -0
  400. data/test/regression/test_chart_pattern04.rb +105 -0
  401. data/test/regression/test_chart_pattern05.rb +105 -0
  402. data/test/regression/test_chart_pattern06.rb +105 -0
  403. data/test/regression/test_chart_pattern07.rb +105 -0
  404. data/test/regression/test_chart_pattern08.rb +105 -0
  405. data/test/regression/test_chart_pattern09.rb +57 -0
  406. data/test/regression/test_chart_pattern10.rb +57 -0
  407. data/test/regression/test_chart_pie01.rb +1 -1
  408. data/test/regression/test_chart_pie02.rb +1 -1
  409. data/test/regression/test_chart_pie03.rb +1 -1
  410. data/test/regression/test_chart_pie04.rb +1 -1
  411. data/test/regression/test_chart_pie05.rb +1 -1
  412. data/test/regression/test_chart_points01.rb +1 -1
  413. data/test/regression/test_chart_points02.rb +1 -1
  414. data/test/regression/test_chart_points03.rb +1 -1
  415. data/test/regression/test_chart_points04.rb +1 -1
  416. data/test/regression/test_chart_points05.rb +1 -1
  417. data/test/regression/test_chart_points06.rb +1 -1
  418. data/test/regression/test_chart_radar01.rb +1 -1
  419. data/test/regression/test_chart_radar02.rb +1 -1
  420. data/test/regression/test_chart_radar03.rb +1 -1
  421. data/test/regression/test_chart_scatter01.rb +1 -1
  422. data/test/regression/test_chart_scatter02.rb +1 -1
  423. data/test/regression/test_chart_scatter03.rb +1 -1
  424. data/test/regression/test_chart_scatter04.rb +1 -1
  425. data/test/regression/test_chart_scatter05.rb +1 -1
  426. data/test/regression/test_chart_scatter06.rb +1 -1
  427. data/test/regression/test_chart_scatter07.rb +1 -1
  428. data/test/regression/test_chart_scatter08.rb +1 -1
  429. data/test/regression/test_chart_scatter09.rb +1 -1
  430. data/test/regression/test_chart_scatter10.rb +1 -1
  431. data/test/regression/test_chart_scatter11.rb +1 -1
  432. data/test/regression/test_chart_scatter12.rb +1 -1
  433. data/test/regression/test_chart_scatter13.rb +1 -1
  434. data/test/regression/test_chart_scatter14.rb +1 -1
  435. data/test/regression/test_chart_scatter15.rb +1 -1
  436. data/test/regression/test_chart_size01.rb +1 -1
  437. data/test/regression/test_chart_size02.rb +1 -1
  438. data/test/regression/test_chart_size03.rb +1 -1
  439. data/test/regression/test_chart_size04.rb +1 -1
  440. data/test/regression/test_chart_size05.rb +1 -1
  441. data/test/regression/test_chart_sparse01.rb +1 -1
  442. data/test/regression/test_chart_stock01.rb +1 -1
  443. data/test/regression/test_chart_stock02.rb +1 -1
  444. data/test/regression/test_chart_str01.rb +1 -1
  445. data/test/regression/test_chart_str02.rb +1 -1
  446. data/test/regression/test_chart_table01.rb +1 -1
  447. data/test/regression/test_chart_table02.rb +1 -1
  448. data/test/regression/test_chart_title01.rb +1 -1
  449. data/test/regression/test_chart_title02.rb +1 -1
  450. data/test/regression/test_chartsheet01.rb +1 -1
  451. data/test/regression/test_chartsheet02.rb +1 -1
  452. data/test/regression/test_chartsheet03.rb +1 -1
  453. data/test/regression/test_chartsheet04.rb +1 -1
  454. data/test/regression/test_chartsheet05.rb +1 -1
  455. data/test/regression/test_chartsheet06.rb +1 -1
  456. data/test/regression/test_chartsheet07.rb +1 -1
  457. data/test/regression/test_chartsheet08.rb +1 -1
  458. data/test/regression/test_chartsheet09.rb +1 -1
  459. data/test/regression/test_comment01.rb +1 -1
  460. data/test/regression/test_comment02.rb +1 -1
  461. data/test/regression/test_comment03.rb +1 -1
  462. data/test/regression/test_comment04.rb +1 -1
  463. data/test/regression/test_comment06.rb +1 -1
  464. data/test/regression/test_comment07.rb +1 -1
  465. data/test/regression/test_comment08.rb +1 -1
  466. data/test/regression/test_comment09.rb +1 -1
  467. data/test/regression/test_comment10.rb +1 -1
  468. data/test/regression/test_comment11.rb +1 -1
  469. data/test/regression/test_comment12.rb +1 -1
  470. data/test/regression/test_cond_format01.rb +1 -1
  471. data/test/regression/test_cond_format02.rb +1 -1
  472. data/test/regression/test_cond_format03.rb +1 -1
  473. data/test/regression/test_cond_format04.rb +1 -1
  474. data/test/regression/test_cond_format05.rb +1 -1
  475. data/test/regression/test_cond_format06.rb +1 -1
  476. data/test/regression/test_cond_format07.rb +1 -1
  477. data/test/regression/test_cond_format08.rb +1 -1
  478. data/test/regression/test_cond_format10.rb +1 -1
  479. data/test/regression/test_cond_format11.rb +1 -1
  480. data/test/regression/test_cond_format12.rb +1 -1
  481. data/test/regression/test_cond_format13.rb +1 -1
  482. data/test/regression/test_custom_colors01.rb +1 -1
  483. data/test/regression/test_data_validation01.rb +1 -1
  484. data/test/regression/test_data_validation02.rb +1 -1
  485. data/test/regression/test_data_validation03.rb +1 -1
  486. data/test/regression/test_data_validation04.rb +2 -2
  487. data/test/regression/test_data_validation05.rb +2 -2
  488. data/test/regression/test_data_validation08.rb +24 -0
  489. data/test/regression/test_date_1904_01.rb +1 -1
  490. data/test/regression/test_date_1904_02.rb +1 -1
  491. data/test/regression/test_date_examples01.rb +1 -1
  492. data/test/regression/test_default_format01.rb +1 -1
  493. data/test/regression/test_default_row01.rb +1 -1
  494. data/test/regression/test_default_row02.rb +1 -1
  495. data/test/regression/test_default_row03.rb +1 -1
  496. data/test/regression/test_default_row04.rb +1 -1
  497. data/test/regression/test_default_row05.rb +32 -0
  498. data/test/regression/test_defined_name01.rb +1 -1
  499. data/test/regression/test_defined_name02.rb +1 -1
  500. data/test/regression/test_defined_name03.rb +1 -1
  501. data/test/regression/test_defined_name04.rb +15 -15
  502. data/test/regression/test_escapes01.rb +1 -1
  503. data/test/regression/test_escapes02.rb +1 -1
  504. data/test/regression/test_escapes03.rb +1 -1
  505. data/test/regression/test_escapes04.rb +1 -1
  506. data/test/regression/test_escapes05.rb +1 -1
  507. data/test/regression/test_escapes06.rb +1 -1
  508. data/test/regression/test_escapes07.rb +1 -1
  509. data/test/regression/test_escapes08.rb +1 -1
  510. data/test/regression/test_excel2003_style01.rb +1 -1
  511. data/test/regression/test_excel2003_style02.rb +1 -1
  512. data/test/regression/test_excel2003_style03.rb +1 -1
  513. data/test/regression/test_excel2003_style04.rb +1 -1
  514. data/test/regression/test_excel2003_style05.rb +1 -1
  515. data/test/regression/test_excel2003_style06.rb +1 -1
  516. data/test/regression/test_excel2003_style07.rb +1 -1
  517. data/test/regression/test_excel2003_style08.rb +1 -1
  518. data/test/regression/test_firstsheet01.rb +1 -1
  519. data/test/regression/test_fit_to_pages01.rb +1 -1
  520. data/test/regression/test_fit_to_pages02.rb +1 -1
  521. data/test/regression/test_fit_to_pages03.rb +1 -1
  522. data/test/regression/test_fit_to_pages04.rb +1 -1
  523. data/test/regression/test_fit_to_pages05.rb +1 -1
  524. data/test/regression/test_format01.rb +1 -1
  525. data/test/regression/test_format02.rb +1 -1
  526. data/test/regression/test_format03.rb +1 -1
  527. data/test/regression/test_format04.rb +1 -1
  528. data/test/regression/test_format05.rb +1 -1
  529. data/test/regression/test_format11.rb +1 -1
  530. data/test/regression/test_format12.rb +1 -1
  531. data/test/regression/test_format13.rb +31 -0
  532. data/test/regression/test_formula_results01.rb +1 -1
  533. data/test/regression/test_gridlines01.rb +1 -1
  534. data/test/regression/test_header01.rb +1 -1
  535. data/test/regression/test_header02.rb +1 -1
  536. data/test/regression/test_header03.rb +1 -1
  537. data/test/regression/test_header_image01.rb +1 -1
  538. data/test/regression/test_header_image02.rb +1 -1
  539. data/test/regression/test_header_image03.rb +1 -1
  540. data/test/regression/test_header_image04.rb +1 -1
  541. data/test/regression/test_header_image05.rb +1 -1
  542. data/test/regression/test_header_image06.rb +1 -1
  543. data/test/regression/test_header_image07.rb +1 -1
  544. data/test/regression/test_header_image08.rb +1 -1
  545. data/test/regression/test_header_image09.rb +1 -1
  546. data/test/regression/test_header_image10.rb +1 -1
  547. data/test/regression/test_header_image11.rb +1 -1
  548. data/test/regression/test_header_image12.rb +1 -1
  549. data/test/regression/test_header_image13.rb +1 -1
  550. data/test/regression/test_header_image14.rb +1 -1
  551. data/test/regression/test_hide01.rb +1 -1
  552. data/test/regression/test_hyperlink01.rb +1 -1
  553. data/test/regression/test_hyperlink02.rb +1 -1
  554. data/test/regression/test_hyperlink03.rb +1 -1
  555. data/test/regression/test_hyperlink04.rb +1 -1
  556. data/test/regression/test_hyperlink05.rb +1 -1
  557. data/test/regression/test_hyperlink06.rb +1 -1
  558. data/test/regression/test_hyperlink07.rb +1 -1
  559. data/test/regression/test_hyperlink08.rb +1 -1
  560. data/test/regression/test_hyperlink09.rb +1 -1
  561. data/test/regression/test_hyperlink10.rb +1 -1
  562. data/test/regression/test_hyperlink11.rb +1 -1
  563. data/test/regression/test_hyperlink12.rb +1 -1
  564. data/test/regression/test_hyperlink13.rb +1 -1
  565. data/test/regression/test_hyperlink14.rb +1 -1
  566. data/test/regression/test_hyperlink15.rb +1 -1
  567. data/test/regression/test_hyperlink16.rb +1 -1
  568. data/test/regression/test_hyperlink17.rb +1 -1
  569. data/test/regression/test_hyperlink18.rb +1 -1
  570. data/test/regression/test_hyperlink20.rb +1 -1
  571. data/test/regression/test_hyperlink21.rb +1 -1
  572. data/test/regression/test_hyperlink22.rb +24 -0
  573. data/test/regression/test_hyperlink23.rb +24 -0
  574. data/test/regression/test_hyperlink24.rb +24 -0
  575. data/test/regression/test_image01.rb +1 -1
  576. data/test/regression/test_image02.rb +1 -1
  577. data/test/regression/test_image03.rb +1 -1
  578. data/test/regression/test_image04.rb +1 -1
  579. data/test/regression/test_image05.rb +1 -1
  580. data/test/regression/test_image06.rb +1 -1
  581. data/test/regression/test_image07.rb +1 -1
  582. data/test/regression/test_image08.rb +1 -1
  583. data/test/regression/test_image09.rb +1 -1
  584. data/test/regression/test_image10.rb +1 -1
  585. data/test/regression/test_image11.rb +1 -1
  586. data/test/regression/test_image12.rb +1 -1
  587. data/test/regression/test_image13.rb +1 -1
  588. data/test/regression/test_image14.rb +1 -1
  589. data/test/regression/test_image15.rb +1 -1
  590. data/test/regression/test_image16.rb +1 -1
  591. data/test/regression/test_image17.rb +1 -1
  592. data/test/regression/test_image18.rb +1 -1
  593. data/test/regression/test_image19.rb +1 -1
  594. data/test/regression/test_image22.rb +1 -1
  595. data/test/regression/test_image23.rb +1 -1
  596. data/test/regression/test_image24.rb +1 -1
  597. data/test/regression/test_image25.rb +1 -1
  598. data/test/regression/test_image26.rb +1 -1
  599. data/test/regression/test_image27.rb +1 -1
  600. data/test/regression/test_image28.rb +27 -0
  601. data/test/regression/test_image29.rb +27 -0
  602. data/test/regression/test_image30.rb +27 -0
  603. data/test/regression/test_image31.rb +30 -0
  604. data/test/regression/test_image32.rb +28 -0
  605. data/test/regression/test_image33.rb +32 -0
  606. data/test/regression/test_landscape01.rb +1 -1
  607. data/test/regression/test_macro01.rb +1 -1
  608. data/test/regression/test_merge_cells01.rb +1 -1
  609. data/test/regression/test_merge_range01.rb +1 -1
  610. data/test/regression/test_merge_range02.rb +1 -1
  611. data/test/regression/test_merge_range03.rb +1 -1
  612. data/test/regression/test_merge_range04.rb +1 -1
  613. data/test/regression/test_merge_range05.rb +1 -1
  614. data/test/regression/test_outline01.rb +1 -1
  615. data/test/regression/test_outline02.rb +1 -1
  616. data/test/regression/test_outline03.rb +1 -1
  617. data/test/regression/test_outline04.rb +1 -1
  618. data/test/regression/test_outline05.rb +1 -1
  619. data/test/regression/test_outline06.rb +1 -1
  620. data/test/regression/test_page_breaks01.rb +1 -1
  621. data/test/regression/test_page_breaks02.rb +1 -1
  622. data/test/regression/test_page_breaks03.rb +1 -1
  623. data/test/regression/test_page_breaks04.rb +1 -1
  624. data/test/regression/test_page_breaks05.rb +1 -1
  625. data/test/regression/test_page_breaks06.rb +1 -1
  626. data/test/regression/test_page_view01.rb +1 -1
  627. data/test/regression/test_panes01.rb +1 -1
  628. data/test/regression/test_print_across01.rb +1 -1
  629. data/test/regression/test_print_area01.rb +1 -1
  630. data/test/regression/test_print_area02.rb +1 -1
  631. data/test/regression/test_print_area03.rb +1 -1
  632. data/test/regression/test_print_area04.rb +1 -1
  633. data/test/regression/test_print_area05.rb +1 -1
  634. data/test/regression/test_print_area06.rb +1 -1
  635. data/test/regression/test_print_area07.rb +1 -1
  636. data/test/regression/test_print_options01.rb +1 -1
  637. data/test/regression/test_print_options02.rb +1 -1
  638. data/test/regression/test_print_options03.rb +1 -1
  639. data/test/regression/test_print_options04.rb +1 -1
  640. data/test/regression/test_print_options05.rb +1 -1
  641. data/test/regression/test_print_options06.rb +1 -1
  642. data/test/regression/test_print_options07.rb +1 -1
  643. data/test/regression/test_print_scale01.rb +1 -1
  644. data/test/regression/test_print_scale02.rb +1 -1
  645. data/test/regression/test_properties01.rb +1 -1
  646. data/test/regression/test_properties02.rb +28 -0
  647. data/test/regression/test_protect01.rb +1 -1
  648. data/test/regression/test_protect02.rb +1 -1
  649. data/test/regression/test_protect03.rb +1 -1
  650. data/test/regression/test_quote_name01.rb +1 -1
  651. data/test/regression/test_quote_name03.rb +1 -1
  652. data/test/regression/test_quote_name04.rb +1 -1
  653. data/test/regression/test_repeat01.rb +1 -1
  654. data/test/regression/test_repeat02.rb +1 -1
  655. data/test/regression/test_repeat03.rb +1 -1
  656. data/test/regression/test_repeat04.rb +1 -1
  657. data/test/regression/test_repeat05.rb +1 -1
  658. data/test/regression/test_rich_string01.rb +1 -1
  659. data/test/regression/test_rich_string02.rb +1 -1
  660. data/test/regression/test_rich_string03.rb +1 -1
  661. data/test/regression/test_rich_string04.rb +1 -1
  662. data/test/regression/test_rich_string05.rb +1 -1
  663. data/test/regression/test_rich_string06.rb +1 -1
  664. data/test/regression/test_rich_string07.rb +1 -1
  665. data/test/regression/test_rich_string08.rb +1 -1
  666. data/test/regression/test_rich_string09.rb +1 -1
  667. data/test/regression/test_rich_string10.rb +1 -1
  668. data/test/regression/test_rich_string11.rb +1 -1
  669. data/test/regression/test_rich_string12.rb +1 -1
  670. data/test/regression/test_row_col_format01.rb +1 -1
  671. data/test/regression/test_row_col_format02.rb +1 -1
  672. data/test/regression/test_row_col_format03.rb +1 -1
  673. data/test/regression/test_row_col_format04.rb +1 -1
  674. data/test/regression/test_row_col_format05.rb +1 -1
  675. data/test/regression/test_row_col_format06.rb +1 -1
  676. data/test/regression/test_row_col_format07.rb +1 -1
  677. data/test/regression/test_row_col_format08.rb +1 -1
  678. data/test/regression/test_row_col_format09.rb +1 -1
  679. data/test/regression/test_row_col_format10.rb +1 -1
  680. data/test/regression/test_row_col_format11.rb +1 -1
  681. data/test/regression/test_row_col_format12.rb +1 -1
  682. data/test/regression/test_row_col_format13.rb +1 -1
  683. data/test/regression/test_row_col_format14.rb +1 -1
  684. data/test/regression/test_selection01.rb +1 -1
  685. data/test/regression/test_selection02.rb +1 -1
  686. data/test/regression/test_set_column01.rb +1 -1
  687. data/test/regression/test_set_column02.rb +1 -1
  688. data/test/regression/test_set_column03.rb +1 -1
  689. data/test/regression/test_set_column04.rb +1 -1
  690. data/test/regression/test_set_column05.rb +1 -1
  691. data/test/regression/test_set_column06.rb +1 -1
  692. data/test/regression/test_set_column07.rb +1 -1
  693. data/test/regression/test_set_column08.rb +1 -1
  694. data/test/regression/test_set_column09.rb +1 -1
  695. data/test/regression/test_set_print_scale01.rb +1 -1
  696. data/test/regression/test_set_start_page01.rb +1 -1
  697. data/test/regression/test_set_start_page02.rb +1 -1
  698. data/test/regression/test_set_start_page03.rb +1 -1
  699. data/test/regression/test_shape01.rb +1 -1
  700. data/test/regression/test_shape02.rb +1 -1
  701. data/test/regression/test_shape03.rb +1 -1
  702. data/test/regression/test_shape04.rb +1 -1
  703. data/test/regression/test_shape_connect01.rb +1 -1
  704. data/test/regression/test_shape_connect02.rb +1 -1
  705. data/test/regression/test_shape_connect03.rb +1 -1
  706. data/test/regression/test_shape_connect04.rb +1 -1
  707. data/test/regression/test_shape_scale01.rb +1 -1
  708. data/test/regression/test_shape_stencil01.rb +1 -1
  709. data/test/regression/test_shared_strings01.rb +1 -1
  710. data/test/regression/test_shared_strings02.rb +1 -1
  711. data/test/regression/test_simple01.rb +1 -1
  712. data/test/regression/test_simple02.rb +1 -1
  713. data/test/regression/test_simple03.rb +1 -1
  714. data/test/regression/test_simple04.rb +1 -1
  715. data/test/regression/test_simple05.rb +1 -1
  716. data/test/regression/test_tab_color01.rb +1 -1
  717. data/test/regression/test_table01.rb +1 -1
  718. data/test/regression/test_table02.rb +1 -1
  719. data/test/regression/test_table03.rb +1 -1
  720. data/test/regression/test_table04.rb +1 -1
  721. data/test/regression/test_table05.rb +1 -1
  722. data/test/regression/test_table06.rb +1 -1
  723. data/test/regression/test_table07.rb +1 -1
  724. data/test/regression/test_table08.rb +1 -1
  725. data/test/regression/test_table09.rb +1 -1
  726. data/test/regression/test_table10.rb +1 -1
  727. data/test/regression/test_table11.rb +1 -1
  728. data/test/regression/test_table12.rb +1 -1
  729. data/test/regression/test_table13.rb +1 -1
  730. data/test/regression/test_table14.rb +1 -1
  731. data/test/regression/test_table15.rb +1 -1
  732. data/test/regression/test_table16.rb +1 -1
  733. data/test/regression/test_table17.rb +1 -1
  734. data/test/regression/test_tutorial01.rb +1 -1
  735. data/test/regression/test_tutorial02.rb +1 -1
  736. data/test/regression/test_tutorial03.rb +1 -1
  737. data/test/regression/test_update_range_format_with_params.rb +42 -0
  738. data/test/regression/test_urls_as_strings.rb +1 -1
  739. data/test/regression/test_utf8_01.rb +1 -1
  740. data/test/regression/test_utf8_03.rb +1 -1
  741. data/test/regression/test_utf8_04.rb +1 -1
  742. data/test/regression/test_utf8_05.rb +1 -1
  743. data/test/regression/test_utf8_06.rb +1 -1
  744. data/test/regression/test_utf8_07.rb +1 -1
  745. data/test/regression/test_utf8_08.rb +1 -1
  746. data/test/regression/test_utf8_09.rb +1 -1
  747. data/test/regression/test_utf8_10.rb +1 -1
  748. data/test/regression/test_vml01.rb +1 -1
  749. data/test/regression/test_vml02.rb +1 -1
  750. data/test/regression/test_vml03.rb +1 -1
  751. data/test/regression/xlsx_files/chart_axis40.xlsx +0 -0
  752. data/test/regression/xlsx_files/chart_combined09.xlsx +0 -0
  753. data/test/regression/xlsx_files/chart_pattern01.xlsx +0 -0
  754. data/test/regression/xlsx_files/chart_pattern02.xlsx +0 -0
  755. data/test/regression/xlsx_files/chart_pattern03.xlsx +0 -0
  756. data/test/regression/xlsx_files/chart_pattern04.xlsx +0 -0
  757. data/test/regression/xlsx_files/chart_pattern05.xlsx +0 -0
  758. data/test/regression/xlsx_files/chart_pattern06.xlsx +0 -0
  759. data/test/regression/xlsx_files/chart_pattern07.xlsx +0 -0
  760. data/test/regression/xlsx_files/chart_pattern08.xlsx +0 -0
  761. data/test/regression/xlsx_files/chart_pattern09.xlsx +0 -0
  762. data/test/regression/xlsx_files/chart_pattern10.xlsx +0 -0
  763. data/test/regression/xlsx_files/data_validation08.xlsx +0 -0
  764. data/test/regression/xlsx_files/default_row05.xlsx +0 -0
  765. data/test/regression/xlsx_files/format13.xlsx +0 -0
  766. data/test/regression/xlsx_files/hyperlink22.xlsx +0 -0
  767. data/test/regression/xlsx_files/hyperlink23.xlsx +0 -0
  768. data/test/regression/xlsx_files/hyperlink24.xlsx +0 -0
  769. data/test/regression/xlsx_files/image28.xlsx +0 -0
  770. data/test/regression/xlsx_files/image29.xlsx +0 -0
  771. data/test/regression/xlsx_files/image30.xlsx +0 -0
  772. data/test/regression/xlsx_files/image31.xlsx +0 -0
  773. data/test/regression/xlsx_files/image32.xlsx +0 -0
  774. data/test/regression/xlsx_files/image33.xlsx +0 -0
  775. data/test/regression/xlsx_files/properties02.xlsx +0 -0
  776. data/test/regression/xlsx_files/table18.xlsx +0 -0
  777. data/test/regression/xlsx_files/table19.xlsx +0 -0
  778. data/test/regression/xlsx_files/update_range_format_with_params.xlsx +0 -0
  779. data/test/run_test.rb +9 -0
  780. data/test/test_delete_files.rb +3 -3
  781. data/test/test_example_match.rb +1 -1
  782. data/test/test_option_hash_for_workbook.rb +1 -1
  783. data/test/test_xml_writer_simple.rb +1 -1
  784. data/test/workbook/test_define_name.rb +1 -1
  785. data/test/workbook/test_get_chart_range.rb +3 -5
  786. data/test/workbook/test_sort_defined_names.rb +1 -1
  787. data/test/workbook/test_workbook_01.rb +1 -1
  788. data/test/workbook/test_workbook_02.rb +1 -1
  789. data/test/workbook/test_workbook_03.rb +1 -1
  790. data/test/workbook/test_write_calc_pr.rb +1 -1
  791. data/test/workbook/test_write_defined_name.rb +1 -1
  792. data/test/workbook/test_write_defined_names.rb +1 -1
  793. data/test/worksheet/test_calculate_spans.rb +1 -1
  794. data/test/worksheet/test_cond_format_01.rb +1 -1
  795. data/test/worksheet/test_cond_format_02.rb +1 -1
  796. data/test/worksheet/test_cond_format_03.rb +1 -1
  797. data/test/worksheet/test_cond_format_04.rb +1 -1
  798. data/test/worksheet/test_cond_format_05.rb +1 -1
  799. data/test/worksheet/test_cond_format_06.rb +1 -1
  800. data/test/worksheet/test_cond_format_07.rb +1 -1
  801. data/test/worksheet/test_cond_format_08.rb +1 -1
  802. data/test/worksheet/test_cond_format_09.rb +1 -1
  803. data/test/worksheet/test_cond_format_10.rb +1 -1
  804. data/test/worksheet/test_cond_format_11.rb +1 -1
  805. data/test/worksheet/test_cond_format_12.rb +1 -1
  806. data/test/worksheet/test_cond_format_13.rb +1 -1
  807. data/test/worksheet/test_cond_format_14.rb +1 -1
  808. data/test/worksheet/test_cond_format_15.rb +1 -1
  809. data/test/worksheet/test_cond_format_16.rb +1 -1
  810. data/test/worksheet/test_cond_format_17.rb +1 -1
  811. data/test/worksheet/test_cond_format_18.rb +1 -1
  812. data/test/worksheet/test_cond_format_19.rb +1 -1
  813. data/test/worksheet/test_cond_format_20.rb +1 -1
  814. data/test/worksheet/test_cond_format_21.rb +90 -0
  815. data/test/worksheet/test_convert_date_time_01.rb +1 -1
  816. data/test/worksheet/test_convert_date_time_02.rb +1 -1
  817. data/test/worksheet/test_convert_date_time_03.rb +1 -1
  818. data/test/worksheet/test_convert_date_time_04.rb +1 -1
  819. data/test/worksheet/test_extract_filter_tokens.rb +1 -1
  820. data/test/worksheet/test_parse_filter_expression.rb +1 -1
  821. data/test/worksheet/test_position_object.rb +1 -1
  822. data/test/worksheet/test_repeat_formula.rb +1 -1
  823. data/test/worksheet/test_sparkline_01.rb +1 -1
  824. data/test/worksheet/test_sparkline_02.rb +1 -1
  825. data/test/worksheet/test_sparkline_03.rb +1 -1
  826. data/test/worksheet/test_sparkline_04.rb +1 -1
  827. data/test/worksheet/test_sparkline_05.rb +1 -1
  828. data/test/worksheet/test_sparkline_06.rb +1 -1
  829. data/test/worksheet/test_sparkline_07.rb +1 -1
  830. data/test/worksheet/test_sparkline_08.rb +1 -1
  831. data/test/worksheet/test_sparkline_09.rb +1 -1
  832. data/test/worksheet/test_sparkline_10.rb +1 -1
  833. data/test/worksheet/test_sparkline_11.rb +1 -1
  834. data/test/worksheet/test_sparkline_12.rb +94 -0
  835. data/test/worksheet/test_update_format_methods.rb +91 -0
  836. data/test/worksheet/test_worksheet_01.rb +1 -1
  837. data/test/worksheet/test_worksheet_02.rb +1 -1
  838. data/test/worksheet/test_worksheet_03.rb +1 -1
  839. data/test/worksheet/test_worksheet_04.rb +1 -1
  840. data/test/worksheet/test_write_array_formula_01.rb +1 -8
  841. data/test/worksheet/test_write_autofilter.rb +1 -1
  842. data/test/worksheet/test_write_brk.rb +1 -1
  843. data/test/worksheet/test_write_cell.rb +1 -1
  844. data/test/worksheet/test_write_cell_value.rb +1 -1
  845. data/test/worksheet/test_write_col_breaks.rb +1 -1
  846. data/test/worksheet/test_write_col_info.rb +1 -1
  847. data/test/worksheet/test_write_conditional_formatting.rb +1 -1
  848. data/test/worksheet/test_write_custom_filter.rb +1 -1
  849. data/test/worksheet/test_write_custom_filters.rb +1 -1
  850. data/test/worksheet/test_write_data_validation_01.rb +1 -1
  851. data/test/worksheet/test_write_data_validation_02.rb +15 -2
  852. data/test/worksheet/test_write_dimension.rb +1 -1
  853. data/test/worksheet/test_write_filter.rb +1 -1
  854. data/test/worksheet/test_write_filter_column.rb +1 -1
  855. data/test/worksheet/test_write_filters.rb +1 -1
  856. data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +1 -1
  857. data/test/worksheet/test_write_header_footer.rb +1 -1
  858. data/test/worksheet/test_write_hyperlink.rb +1 -1
  859. data/test/worksheet/test_write_legacy_drawing.rb +1 -1
  860. data/test/worksheet/test_write_merge_cell.rb +1 -1
  861. data/test/worksheet/test_write_merge_cells.rb +1 -1
  862. data/test/worksheet/test_write_methods.rb +68 -177
  863. data/test/worksheet/test_write_page_margins.rb +1 -1
  864. data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
  865. data/test/worksheet/test_write_page_setup.rb +1 -1
  866. data/test/worksheet/test_write_pane.rb +1 -1
  867. data/test/worksheet/test_write_phonetic_pr.rb +1 -1
  868. data/test/worksheet/test_write_print_options.rb +1 -1
  869. data/test/worksheet/test_write_row_breaks.rb +1 -1
  870. data/test/worksheet/test_write_row_element.rb +1 -1
  871. data/test/worksheet/test_write_selection.rb +1 -1
  872. data/test/worksheet/test_write_sheet_calc_pr.rb +1 -1
  873. data/test/worksheet/test_write_sheet_data.rb +1 -1
  874. data/test/worksheet/test_write_sheet_format_pr.rb +1 -1
  875. data/test/worksheet/test_write_sheet_pr.rb +1 -1
  876. data/test/worksheet/test_write_sheet_protection.rb +1 -1
  877. data/test/worksheet/test_write_sheet_view.rb +1 -1
  878. data/test/worksheet/test_write_sheet_view1.rb +1 -1
  879. data/test/worksheet/test_write_sheet_view2.rb +1 -1
  880. data/test/worksheet/test_write_sheet_view3.rb +1 -1
  881. data/test/worksheet/test_write_sheet_view4.rb +1 -1
  882. data/test/worksheet/test_write_sheet_view5.rb +1 -1
  883. data/test/worksheet/test_write_sheet_view6.rb +1 -1
  884. data/test/worksheet/test_write_sheet_view7.rb +1 -1
  885. data/test/worksheet/test_write_sheet_view8.rb +1 -1
  886. data/test/worksheet/test_write_sheet_view9.rb +1 -1
  887. data/test/worksheet/test_write_tab_color.rb +1 -1
  888. data/test/worksheet/test_write_worksheet_attributes.rb +1 -1
  889. data/write_xlsx.gemspec +3 -3
  890. metadata +124 -13
  891. data/test/test_col_name.rb +0 -13
  892. data/test/workbook/test_workbook_new.rb +0 -18
  893. data/test/worksheet/test_write_multiline_string_with_url.rb +0 -30
  894. data/test/worksheet/test_write_url.rb +0 -19
@@ -14,7 +14,7 @@ class Axis < Caption
14
14
  attr_reader :display_units_visible, :display_units
15
15
  attr_reader :log_base, :crossing, :position_axis, :label_position, :visible
16
16
  attr_reader :num_format_linked, :num_font, :layout, :interval_unit
17
- attr_reader :major_gridlines, :minor_gridlines, :reverse
17
+ attr_reader :interval_tick, :major_gridlines, :minor_gridlines, :reverse
18
18
  attr_reader :line, :fill, :text_axis
19
19
  #
20
20
  # Convert user defined axis values into axis instance.
@@ -27,7 +27,7 @@ def merge_with_hash(params) # :nodoc:
27
27
  :reverse, :min, :max, :minor_unit, :major_unit, :minor_unit_type,
28
28
  :major_unit_type, :log_base, :crossing, :position_axis,
29
29
  :label_position, :num_format, :num_format_linked, :interval_unit,
30
- :major_tick_mark, :line, :fill
30
+ :interval_tick, :major_tick_mark, :line, :fill
31
31
  ].each { |val| instance_variable_set("@#{val}", args[val]) }
32
32
  @visible = args[:visible] || 1
33
33
 
@@ -8,22 +8,30 @@ class Chartline
8
8
  include Writexlsx::Utility
9
9
  include Writexlsx::Gradient
10
10
 
11
- attr_reader :line, :fill, :type
11
+ attr_reader :line, :fill, :type, :gradient, :pattern
12
12
 
13
13
  def initialize(params)
14
14
  @line = params[:line]
15
15
  @fill = params[:fill]
16
+ @pattern = params[:pattern]
17
+ @gradient = params[:gradient]
16
18
  # Set the line properties for the marker..
17
19
  @line = line_properties(@line)
18
20
  # Allow 'border' as a synonym for 'line'.
19
21
  @line = line_properties(params[:border]) if params[:border]
20
-
21
- # Set the gradient fill properties for the series.
22
- @gradient = gradient_properties(params[:gradient])
23
-
24
22
  # Set the fill properties for the marker.
25
23
  @fill = fill_properties(@fill)
24
+ # Set the pattern properties for the series.
25
+ @pattern = pattern_properties(@pattern)
26
+ # Set the gradient fill properties for the series.
27
+ @gradient = gradient_properties(@gradient)
28
+ # Pattern fill overrides solid fill.
26
29
  @fill = nil if ptrue?(@gradient)
30
+ # Gradient fill overrides solid and pattern fills.
31
+ if ptrue?(@gradient)
32
+ @pattern = nil
33
+ @fill = nil
34
+ end
27
35
  end
28
36
 
29
37
  def line_defined?
@@ -170,7 +178,7 @@ class Series
170
178
  include Writexlsx::Gradient
171
179
 
172
180
  attr_reader :values, :categories, :name, :name_formula, :name_id
173
- attr_reader :cat_data_id, :val_data_id, :fill, :gradient
181
+ attr_reader :cat_data_id, :val_data_id, :fill, :pattern, :gradient
174
182
  attr_reader :trendline, :smooth, :labels, :invert_if_negative
175
183
  attr_reader :x2_axis, :y2_axis, :error_bars, :points
176
184
  attr_accessor :line, :marker
@@ -184,13 +192,21 @@ def initialize(chart, params = {})
184
192
 
185
193
  set_data_ids(params)
186
194
 
187
- @line = line_properties(params[:border] || params[:line])
188
- @fill = fill_properties(params[:fill])
189
-
195
+ @line = line_properties(params[:border] || params[:line])
196
+ @fill = fill_properties(params[:fill])
197
+ @pattern = pattern_properties(params[:pattern])
190
198
  @gradient = gradient_properties(params[:gradient])
191
- @fill = nil if ptrue?(@gradient)
199
+ # Pattern fill overrides solid fill.
200
+ @fill = nil if ptrue?(@pattern)
201
+ # Gradient fill overrides solid and patter fills.
202
+ if ptrue?(@gradient)
203
+ @pattern = nil
204
+ @fill = nil
205
+ end
192
206
 
207
+ # Set the marker properties for the series.
193
208
  @marker = Marker.new(params[:marker]) if params[:marker]
209
+ # Set the trendline properties for the series.
194
210
  @trendline = Trendline.new(params[:trendline]) if params[:trendline]
195
211
  @error_bars = errorbars(params[:x_error_bars], params[:y_error_bars])
196
212
  @points = params[:points].collect { |p| p ? Point.new(p) : p } if params[:points]
@@ -506,7 +506,7 @@ def self.color(color_code)
506
506
  def set_align(location)
507
507
  return unless location # No default
508
508
 
509
- location.downcase!
509
+ location = location.downcase
510
510
 
511
511
  set_text_h_align(1) if location == 'left'
512
512
  set_text_h_align(2) if location == 'centre'
@@ -582,7 +582,7 @@ def set_border_color(color)
582
582
  def set_rotation(rotation)
583
583
  if rotation == 270
584
584
  rotation = 255
585
- elsif rotation >= -90 || rotation <= 90
585
+ elsif rotation >= -90 && rotation <= 90
586
586
  rotation = -rotation + 90 if rotation < 0
587
587
  else
588
588
  raise "Rotation #{rotation} outside range: -90 <= angle <= 90"
@@ -844,6 +844,10 @@ def write_font_family_scheme(writer)
844
844
  writer.empty_tag('family', [ ['val', @font_family] ])
845
845
  end
846
846
 
847
+ if ptrue?(@font_charset)
848
+ writer.empty_tag('charset', [ ['val', @font_charset] ])
849
+ end
850
+
847
851
  if @font == 'Calibri' && !ptrue?(@hyperlink)
848
852
  writer.empty_tag('scheme', [ ['val', @font_scheme] ])
849
853
  end
@@ -32,6 +32,7 @@ def assemble_xml_file
32
32
  write_company
33
33
  write_links_up_to_date
34
34
  write_shared_doc
35
+ write_hyperlink_base
35
36
  write_hyperlinks_changed
36
37
  write_app_version
37
38
  end
@@ -220,6 +221,17 @@ def write_shared_doc
220
221
  @writer.data_element('SharedDoc', data)
221
222
  end
222
223
 
224
+ #
225
+ # Write the <HyperlinkBase> element.
226
+ #
227
+ def write_hyperlink_base
228
+ data = @properties[:hyperlink_base]
229
+
230
+ return unless data
231
+
232
+ @writer.data_element('HyperlinkBase', data)
233
+ end
234
+
223
235
  #
224
236
  # Write the <HyperlinksChanged> element.
225
237
  #
@@ -41,11 +41,13 @@ def initialize(workbook, worksheet, row, col, string, options = {})
41
41
  def backgrount_color(color)
42
42
  color_id = Format.color(color)
43
43
 
44
- if color_id == 0
44
+ if color_id.to_s =~ /^#[0-9A-F]{6}/i
45
+ @color = color_id.to_s
46
+ elsif color_id == 0
45
47
  @color = '#ffffe1'
46
48
  else
47
49
  rgb = @workbook.palette[color_id - 8]
48
- @color = "##{rgb_color(rgb)} [#{color_id}]\n"
50
+ @color = "##{rgb_color(rgb)} [#{color_id}]"
49
51
  end
50
52
  end
51
53
 
@@ -71,6 +71,7 @@ def attributes
71
71
  attr << ['type' , type]
72
72
  attr << ['dxfId', format] if format
73
73
  attr << ['priority', priority]
74
+ attr << ['stopIfTrue', 1] if stop_if_true
74
75
  attr
75
76
  end
76
77
 
@@ -86,6 +87,10 @@ def priority
86
87
  @param[:priority]
87
88
  end
88
89
 
90
+ def stop_if_true
91
+ @param[:stop_if_true]
92
+ end
93
+
89
94
  def criteria
90
95
  @param[:criteria]
91
96
  end
@@ -306,7 +311,7 @@ def range_start_cell_for_conditional_formatting(*args) # :nodoc:
306
311
 
307
312
  def row_col_param_for_conditional_formatting(*args)
308
313
  # Check for a cell reference in A1 notation and substitute row and column
309
- if args[0] =~ /^\D/
314
+ if args[0].to_s =~ /^\D/
310
315
  # Check for a user defined multiple range like B3:K6,B8:K11.
311
316
  user_range = args[0].sub(/^=/, '').gsub(/\s*,\s*/, ' ').gsub(/\$/, '') if args[0] =~ /,/
312
317
  end
@@ -383,7 +388,7 @@ def check_conditional_formatting_parameters(param) # :nodoc:
383
388
  end
384
389
 
385
390
  def convert_date_time_if_required(val)
386
- if val =~ /T/
391
+ if val.to_s =~ /T/
387
392
  date_time = convert_date_time(val)
388
393
  raise "Invalid date/time value '#{val}' in conditional_formatting()" unless date_time
389
394
  date_time
@@ -401,6 +406,7 @@ def valid_parameter_for_conditional_formatting
401
406
  :value,
402
407
  :minimum,
403
408
  :maximum,
409
+ :stop_if_true,
404
410
  :min_type,
405
411
  :mid_type,
406
412
  :max_type,
@@ -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/utility'
4
5
 
@@ -8,11 +9,13 @@ class SharedStrings
8
9
 
9
10
  include Writexlsx::Utility
10
11
 
12
+ PRESERVE_SPACE_ATTRIBUTES = ['xml:space', 'preserve'].freeze
13
+
11
14
  def initialize
12
15
  @writer = Package::XMLWriterSimple.new
13
16
  @strings = [] # string table
14
17
  @strings_index = {} # string table index
15
- @count = {} # count
18
+ @count = 0 # count
16
19
  end
17
20
 
18
21
  def index(string, params = {})
@@ -21,18 +24,18 @@ def index(string, params = {})
21
24
  end
22
25
 
23
26
  def add(string)
24
- str = string.dup
25
- if @count[str]
26
- @count[str] += 1
27
- else
27
+ unless @strings_index[string]
28
+ # Only first time the string will be append to list
29
+ # next time we only check and not #dup it
30
+ str = string.dup.freeze
28
31
  @strings << str
29
32
  @strings_index[str] = @strings.size - 1
30
- @count[str] = 1
31
33
  end
34
+ @count += 1
32
35
  end
33
36
 
34
37
  def string(index)
35
- @strings[index].dup
38
+ @strings[index]
36
39
  end
37
40
 
38
41
  def empty?
@@ -79,7 +82,6 @@ def write_sst_strings
79
82
  # Write the <si> element.
80
83
  #
81
84
  def write_si(string)
82
- string = string.dup
83
85
  attributes = []
84
86
 
85
87
  # Excel escapes control characters with _xHHHH_ and also escapes any
@@ -102,7 +104,7 @@ def write_si(string)
102
104
  end
103
105
 
104
106
  # Add attribute to preserve leading or trailing whitespace.
105
- attributes << ['xml:space', 'preserve'] if string =~ /\A\s|\s\Z/
107
+ attributes << PRESERVE_SPACE_ATTRIBUTES if string =~ /\A\s|\s\Z/
106
108
 
107
109
  # Write any rich strings without further tags.
108
110
  if string =~ %r{^<r>} && string =~ %r{</r>$}
@@ -122,7 +124,7 @@ def add_c2_c3(string)
122
124
  end
123
125
 
124
126
  def total_count
125
- @count.values.inject(0) { |sum, count| sum += count }
127
+ @count
126
128
  end
127
129
 
128
130
  def unique_count
@@ -49,7 +49,7 @@ def set_style_properties(xf_formats, palette, font_count, num_format_count, bord
49
49
  # based on the default or user defined values in the Workbook palette.
50
50
  #
51
51
  def palette_color(index)
52
- if index =~ /^#([0-9A-F]{6})$/i
52
+ if index.to_s =~ /^#([0-9A-F]{6})$/i
53
53
  "FF#{$1.upcase}"
54
54
  else
55
55
  "FF#{super(index)}"
@@ -10,7 +10,7 @@ class Table
10
10
 
11
11
  class ColumnData
12
12
  attr_reader :id
13
- attr_accessor :name, :format, :formula
13
+ attr_accessor :name, :format, :formula, :name_format
14
14
  attr_accessor :total_string, :total_function
15
15
 
16
16
  def initialize(id, param = {})
@@ -20,6 +20,7 @@ def initialize(id, param = {})
20
20
  @total_function = ''
21
21
  @formula = ''
22
22
  @format = nil
23
+ @name_format = nil
23
24
  @user_data = param[id-1] if param
24
25
  end
25
26
  end
@@ -93,10 +94,14 @@ def overrite_the_defaults_with_any_use_defined_values(col_id, col_data, col_num)
93
94
  if user_data[:header] && !user_data[:header].empty?
94
95
  col_data.name = user_data[:header]
95
96
  end
97
+
98
+ # Get the header format if defined.
99
+ col_data.name_format = user_data[:header_format]
100
+
96
101
  # Handle the column formula.
97
102
  handle_the_column_formula(
98
- col_data, col_num, user_data[:formula], user_data[:format]
99
- )
103
+ col_data, col_num, user_data[:formula], user_data[:format]
104
+ )
100
105
 
101
106
  # Handle the function for the total row.
102
107
  if user_data[:total_function]
@@ -123,7 +128,9 @@ def overrite_the_defaults_with_any_use_defined_values(col_id, col_data, col_num)
123
128
 
124
129
  def write_the_column_headers_to_the_worksheet(col_num, col_data)
125
130
  if @param[:header_row] != 0
126
- @worksheet.write_string(@row1, col_num, col_data.name)
131
+ @worksheet.write_string(
132
+ @row1, col_num, col_data.name, col_data.name_format
133
+ )
127
134
  end
128
135
  end
129
136
 
@@ -268,7 +275,26 @@ def set_the_table_style
268
275
  end
269
276
 
270
277
  def set_the_table_name
271
- @name = @param[:name] if @param[:name]
278
+ if @param[:name]
279
+ name = @param[:name]
280
+
281
+ # Raise if the name contains invalid chars as defined by Excel help.
282
+ if name !~ /^[\w\\][\w\\.]*$/ || name =~ /^\d/
283
+ raise "Invalid character in name '#{name} used in add_table()"
284
+ end
285
+
286
+ # Raise if the name looks like a cell name.
287
+ if name =~ /^[a-zA-Z][a-zA-Z]?[a-dA-D]?[0-9]+$/
288
+ ralse "Invalid name '#{name}' looks like a cell name in add_table()"
289
+ end
290
+
291
+ # Raise if the name looks like a R1C1.
292
+ if name =~ /^[rcRC]$/ || name =~ /^[rcRC]\d+[rcRC]\d+$/
293
+ raise "Invalid name '#{name}' like a RC cell ref in add_table()"
294
+ end
295
+
296
+ @name = @param[:name]
297
+ end
272
298
  end
273
299
 
274
300
  def set_the_table_and_autofilter_ranges
@@ -118,17 +118,18 @@ def key_vals(attribute)
118
118
  end
119
119
 
120
120
  def escape_attributes(str = '')
121
- return str if !(str =~ /["&<>]/)
121
+ return str if !(str.to_s =~ /["&<>\n]/)
122
122
 
123
123
  str.
124
124
  gsub(/&/, "&amp;").
125
125
  gsub(/"/, "&quot;").
126
126
  gsub(/</, "&lt;").
127
- gsub(/>/, "&gt;")
127
+ gsub(/>/, "&gt;").
128
+ gsub(/\n/, "&#xA;")
128
129
  end
129
130
 
130
131
  def escape_data(str = '')
131
- if str =~ /[&<>]/
132
+ if str.to_s =~ /[&<>]/
132
133
  str.gsub(/&/, '&amp;').
133
134
  gsub(/</, '&lt;').
134
135
  gsub(/>/, '&gt;')
@@ -244,7 +244,7 @@ def put_deprecate_message(method)
244
244
 
245
245
  # Check for a cell reference in A1 notation and substitute row and column
246
246
  def row_col_notation(args) # :nodoc:
247
- if args[0] =~ /^\D/
247
+ if args[0].to_s =~ /^\D/
248
248
  substitute_cellref(*args)
249
249
  else
250
250
  args
@@ -543,6 +543,91 @@ def fill_properties(fill) # :nodoc:
543
543
  line_fill_properties(fill)
544
544
  end
545
545
 
546
+ #
547
+ # Convert user defined pattern properties to the structure required internally.
548
+ #
549
+ def pattern_properties(args) # :nodoc:
550
+ pattern = {}
551
+
552
+ return nil unless args
553
+
554
+ # Check the pattern type is present.
555
+ return nil unless args.has_key?(:pattern)
556
+
557
+ # Check the foreground color is present.
558
+ retuen nil unless args.has_key?(:fg_color)
559
+
560
+ types = {
561
+ 'percent_5' => 'pct5',
562
+ 'percent_10' => 'pct10',
563
+ 'percent_20' => 'pct20',
564
+ 'percent_25' => 'pct25',
565
+ 'percent_30' => 'pct30',
566
+ 'percent_40' => 'pct40',
567
+
568
+ 'percent_50' => 'pct50',
569
+ 'percent_60' => 'pct60',
570
+ 'percent_70' => 'pct70',
571
+ 'percent_75' => 'pct75',
572
+ 'percent_80' => 'pct80',
573
+ 'percent_90' => 'pct90',
574
+
575
+ 'light_downward_diagonal' => 'ltDnDiag',
576
+ 'light_upward_diagonal' => 'ltUpDiag',
577
+ 'dark_downward_diagonal' => 'dkDnDiag',
578
+ 'dark_upward_diagonal' => 'dkUpDiag',
579
+ 'wide_downward_diagonal' => 'wdDnDiag',
580
+ 'wide_upward_diagonal' => 'wdUpDiag',
581
+
582
+ 'light_vertical' => 'ltVert',
583
+ 'light_horizontal' => 'ltHorz',
584
+ 'narrow_vertical' => 'narVert',
585
+ 'narrow_horizontal' => 'narHorz',
586
+ 'dark_vertical' => 'dkVert',
587
+ 'dark_horizontal' => 'dkHorz',
588
+
589
+ 'dashed_downward_diagonal' => 'dashDnDiag',
590
+ 'dashed_upward_diagonal' => 'dashUpDiag',
591
+ 'dashed_horizontal' => 'dashHorz',
592
+ 'dashed_vertical' => 'dashVert',
593
+ 'small_confetti' => 'smConfetti',
594
+ 'large_confetti' => 'lgConfetti',
595
+
596
+ 'zigzag' => 'zigZag',
597
+ 'wave' => 'wave',
598
+ 'diagonal_brick' => 'diagBrick',
599
+ 'horizontal_brick' => 'horzBrick',
600
+ 'weave' => 'weave',
601
+ 'plaid' => 'plaid',
602
+
603
+ 'divot' => 'divot',
604
+ 'dotted_grid' => 'dotGrid',
605
+ 'dotted_diamond' => 'dotDmnd',
606
+ 'shingle' => 'shingle',
607
+ 'trellis' => 'trellis',
608
+ 'sphere' => 'sphere',
609
+
610
+ 'small_grid' => 'smGrid',
611
+ 'large_grid' => 'lgGrid',
612
+ 'small_check' => 'smCheck',
613
+ 'large_check' => 'lgCheck',
614
+ 'outlined_diamond' => 'openDmnd',
615
+ 'solid_diamond' => 'solidDmnd'
616
+ }
617
+
618
+ # Check for valid types.
619
+ if types[args[:pattern]]
620
+ pattern[:pattern] = types[args[:pattern]]
621
+ else
622
+ raise "Unknown pattern type '#{args[:pattern]}'"
623
+ end
624
+
625
+ pattern[:bg_color] = args[:bg_color] || '#FFFFFF'
626
+ pattern[:fg_color] = args[:fg_color]
627
+
628
+ pattern
629
+ end
630
+
546
631
  def line_fill_properties(params)
547
632
  return { :_defined => 0 } unless params
548
633
  ret = params.dup