squib 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -2
  3. data/CHANGELOG.md +16 -1
  4. data/appveyor.yml +2 -3
  5. data/lib/squib/args/sheet.rb +66 -34
  6. data/lib/squib/graphics/save_pdf.rb +1 -1
  7. data/lib/squib/import/data_frame.rb +7 -7
  8. data/lib/squib/version.rb +1 -1
  9. data/samples/autoscale_font/_autoscale_font.rb +1 -1
  10. data/samples/build_groups/build_groups.rb +3 -3
  11. data/samples/colors/_colors.rb +1 -0
  12. data/samples/{config_text_markup.rb → config/config_text_markup.rb} +0 -0
  13. data/samples/{custom_config.rb → config/custom_config.rb} +0 -0
  14. data/samples/{cairo_access.rb → images/_cairo_access.rb} +0 -0
  15. data/samples/images/_images.rb +1 -1
  16. data/samples/{unicode.rb → images/_unicode.rb} +0 -0
  17. data/samples/intro/01_hello.rb +1 -2
  18. data/samples/intro/02_options.rb +1 -2
  19. data/samples/intro/03_layout.rb +1 -2
  20. data/samples/intro/04_arrays.rb +1 -2
  21. data/samples/intro/05_excel.rb +3 -4
  22. data/samples/{tgc_proofs.rb → proofs/_tgc_proofs.rb} +1 -4
  23. data/samples/saves/_save_pdf.rb +7 -0
  24. data/samples/{embed_text.rb → text/_embed_text.rb} +1 -0
  25. data/samples/text/_text.rb +1 -1
  26. data/samples/{text_options.rb → text/_text_options.rb} +1 -1
  27. data/samples/{bug134.rb → text/bug134.rb} +0 -0
  28. data/squib.gemspec +17 -16
  29. metadata +90 -596
  30. data/benchmarks/antialias_best.rb +0 -13
  31. data/benchmarks/antialias_best.yml +0 -1
  32. data/benchmarks/antialias_fast.rb +0 -13
  33. data/benchmarks/antialias_fast.yml +0 -1
  34. data/benchmarks/backend-svg.yml +0 -4
  35. data/benchmarks/backend_memory.rb +0 -14
  36. data/benchmarks/backend_svg.rb +0 -14
  37. data/benchmarks/shiny-purse.png +0 -0
  38. data/benchmarks/spanner.svg +0 -91
  39. data/benchmarks/tons_of_png.rb +0 -6
  40. data/benchmarks/tons_of_svg.rb +0 -7
  41. data/benchmarks/tons_of_text.rb +0 -8
  42. data/docs/Makefile +0 -216
  43. data/docs/_static/css/squibdocs.css +0 -23
  44. data/docs/args/draw.rst +0 -36
  45. data/docs/args/expansion.rst +0 -3
  46. data/docs/args/layout.rst +0 -6
  47. data/docs/args/output_dir.rst +0 -6
  48. data/docs/args/range.rst +0 -6
  49. data/docs/args/transform.rst +0 -51
  50. data/docs/args/trim.rst +0 -11
  51. data/docs/args/wh.rst +0 -12
  52. data/docs/args/xy.rst +0 -12
  53. data/docs/arrays.rst +0 -80
  54. data/docs/backends.rst +0 -20
  55. data/docs/bleed.rst +0 -13
  56. data/docs/build_groups.rst +0 -45
  57. data/docs/colors.rst +0 -90
  58. data/docs/conf.py +0 -287
  59. data/docs/config.rst +0 -135
  60. data/docs/data.rst +0 -26
  61. data/docs/dsl/background.rst +0 -20
  62. data/docs/dsl/build.rst +0 -32
  63. data/docs/dsl/build_groups.rst +0 -23
  64. data/docs/dsl/circle.rst +0 -27
  65. data/docs/dsl/cm.rst +0 -19
  66. data/docs/dsl/configure.rst +0 -18
  67. data/docs/dsl/csv.rst +0 -81
  68. data/docs/dsl/curve.rst +0 -63
  69. data/docs/dsl/data_frame.rst +0 -85
  70. data/docs/dsl/deck.rst +0 -45
  71. data/docs/dsl/disable_build.rst +0 -25
  72. data/docs/dsl/disable_build_globally.rst +0 -46
  73. data/docs/dsl/ellipse.rst +0 -23
  74. data/docs/dsl/enable_build.rst +0 -25
  75. data/docs/dsl/enable_build_globally.rst +0 -44
  76. data/docs/dsl/grid.rst +0 -31
  77. data/docs/dsl/hand.rst +0 -40
  78. data/docs/dsl/hint.rst +0 -15
  79. data/docs/dsl/inches.rst +0 -19
  80. data/docs/dsl/index.rst +0 -9
  81. data/docs/dsl/line.rst +0 -52
  82. data/docs/dsl/mm.rst +0 -19
  83. data/docs/dsl/png.rst +0 -49
  84. data/docs/dsl/polygon.rst +0 -28
  85. data/docs/dsl/rect.rst +0 -22
  86. data/docs/dsl/save.rst +0 -23
  87. data/docs/dsl/save_pdf.rst +0 -89
  88. data/docs/dsl/save_png.rst +0 -46
  89. data/docs/dsl/save_sheet.rst +0 -55
  90. data/docs/dsl/showcase.rst +0 -76
  91. data/docs/dsl/star.rst +0 -35
  92. data/docs/dsl/svg.rst +0 -119
  93. data/docs/dsl/text.rst +0 -292
  94. data/docs/dsl/triangle.rst +0 -50
  95. data/docs/dsl/use_layout.rst +0 -16
  96. data/docs/dsl/xlsx.rst +0 -56
  97. data/docs/guides/game_icons.rst +0 -126
  98. data/docs/guides/getting-started/index.rst +0 -5
  99. data/docs/guides/getting-started/part_0_learning_ruby.rst +0 -145
  100. data/docs/guides/getting-started/part_1_zero_to_game.rst +0 -217
  101. data/docs/guides/getting-started/part_2_iconography.rst +0 -228
  102. data/docs/guides/getting-started/part_3_workflows.rst +0 -46
  103. data/docs/guides/getting-started/part_4_ruby_power.rst +0 -18
  104. data/docs/guides/git.rst +0 -14
  105. data/docs/guides/guard.rst +0 -84
  106. data/docs/guides/hello_world.rst +0 -65
  107. data/docs/guides/projects.rst +0 -35
  108. data/docs/help.rst +0 -157
  109. data/docs/index.rst +0 -35
  110. data/docs/install.rst +0 -68
  111. data/docs/layouts.rst +0 -290
  112. data/docs/learning.rst +0 -12
  113. data/docs/make.bat +0 -263
  114. data/docs/parameters.rst +0 -34
  115. data/docs/server.bat +0 -1
  116. data/docs/text_feature.rst +0 -115
  117. data/docs/units.rst +0 -14
  118. data/samples/autoscale_font/.gitignore +0 -2
  119. data/samples/autoscale_font/card_00_expected.png +0 -0
  120. data/samples/backend/.gitignore +0 -1
  121. data/samples/backend/_backend-config.yml +0 -5
  122. data/samples/backend/backend_00_expected.png +0 -0
  123. data/samples/backend/backend_01_expected.png +0 -0
  124. data/samples/backend/backend_vectorized_expected.pdf +0 -0
  125. data/samples/backend/backend_vectors_00_expected.svg +0 -84
  126. data/samples/backend/backend_vectors_01_expected.svg +0 -84
  127. data/samples/backend/shiny-purse.png +0 -0
  128. data/samples/backend/showcase_expected.png +0 -0
  129. data/samples/backend/spanner.svg +0 -91
  130. data/samples/ball.png +0 -0
  131. data/samples/build_groups/.gitignore +0 -1
  132. data/samples/build_groups/Rakefile +0 -25
  133. data/samples/colors/.gitignore +0 -1
  134. data/samples/colors/color_constants_00_expected.png +0 -0
  135. data/samples/colors/colors_00_expected.png +0 -0
  136. data/samples/colors/gradient_00_expected.png +0 -0
  137. data/samples/config_disable_quotes.yml +0 -3
  138. data/samples/config_text_markup.yml +0 -9
  139. data/samples/custom-config.yml +0 -5
  140. data/samples/customconfig-imgdir/shiny-purse2.png +0 -0
  141. data/samples/customconfig-imgdir/spanner2.svg +0 -91
  142. data/samples/data/.gitignore +0 -1
  143. data/samples/data/explode_quantities.xlsx +0 -0
  144. data/samples/data/quantity_explosion.csv +0 -3
  145. data/samples/data/sample.csv +0 -3
  146. data/samples/data/sample.xlsx +0 -0
  147. data/samples/data/sample_csv_00_expected.png +0 -0
  148. data/samples/data/sample_csv_01_expected.png +0 -0
  149. data/samples/data/sample_csv_qty_00_expected.png +0 -0
  150. data/samples/data/sample_excel_00_expected.png +0 -0
  151. data/samples/data/sample_excel_01_expected.png +0 -0
  152. data/samples/data/sample_excel_02_expected.png +0 -0
  153. data/samples/data/sample_excel_resources_00_expected.png +0 -0
  154. data/samples/data/sample_excel_resources_01_expected.png +0 -0
  155. data/samples/data/sample_xlsx_qty_00_expected.png +0 -0
  156. data/samples/glass-heart.svg +0 -52
  157. data/samples/grit.png +0 -0
  158. data/samples/images/.gitignore +0 -8
  159. data/samples/images/_images_00_expected.png +0 -0
  160. data/samples/images/angler-fish.png +0 -0
  161. data/samples/images/ball.png +0 -0
  162. data/samples/images/glass-heart.svg +0 -52
  163. data/samples/images/grit.png +0 -0
  164. data/samples/images/offset.svg +0 -85
  165. data/samples/images/robot-golem.svg +0 -1
  166. data/samples/images/shiny-purse.png +0 -0
  167. data/samples/images/spanner.svg +0 -91
  168. data/samples/images/sprites.png +0 -0
  169. data/samples/images/with-alpha.png +0 -0
  170. data/samples/intro/.gitignore +0 -2
  171. data/samples/intro/auto-repair.svg +0 -1
  172. data/samples/intro/crawling.svg +0 -1
  173. data/samples/intro/data.xlsx +0 -0
  174. data/samples/intro/humans.svg +0 -1
  175. data/samples/intro/ninja-mask.svg +0 -1
  176. data/samples/intro/part1_00_expected.png +0 -0
  177. data/samples/intro/part2_00_expected.png +0 -0
  178. data/samples/intro/part3_00_expected.png +0 -0
  179. data/samples/intro/part3_layout.yml +0 -34
  180. data/samples/intro/part4_00_expected.png +0 -0
  181. data/samples/intro/part4_01_expected.png +0 -0
  182. data/samples/intro/part5_00_expected.png +0 -0
  183. data/samples/intro/part5_01_expected.png +0 -0
  184. data/samples/intro/part5_02_expected.png +0 -0
  185. data/samples/intro/part5_03_expected.png +0 -0
  186. data/samples/intro/part5_hand_expected.png +0 -0
  187. data/samples/intro/part5_showcase_expected.png +0 -0
  188. data/samples/intro/pirate-skull.svg +0 -1
  189. data/samples/intro/robot-golem.svg +0 -1
  190. data/samples/layouts/custom-layout.yml +0 -60
  191. data/samples/layouts/custom-layout2.yml +0 -15
  192. data/samples/layouts/expected_layouts_builtin_economy_00.png +0 -0
  193. data/samples/layouts/expected_layouts_builtin_fantasy_00.png +0 -0
  194. data/samples/layouts/expected_layouts_builtin_hand_00.png +0 -0
  195. data/samples/layouts/expected_layouts_builtin_playing_card_00.png +0 -0
  196. data/samples/layouts/expected_layouts_builtin_tuck_box_00.png +0 -0
  197. data/samples/layouts/shiny-purse.png +0 -0
  198. data/samples/layouts/spanner.svg +0 -91
  199. data/samples/load_images_config.yml +0 -1
  200. data/samples/offset.svg +0 -71
  201. data/samples/pokercard.png +0 -0
  202. data/samples/project/Gemfile +0 -6
  203. data/samples/project/Guardfile +0 -18
  204. data/samples/project/Rakefile +0 -25
  205. data/samples/project/bw/robot-golem.svg +0 -53
  206. data/samples/project/color/robot-golem.svg +0 -1
  207. data/samples/project/config.yml +0 -2
  208. data/samples/project/layouts/characters.yml +0 -3
  209. data/samples/project/layouts/skills.yml +0 -3
  210. data/samples/ranges/glass-heart.svg +0 -52
  211. data/samples/ranges/ranges_00_expected.png +0 -0
  212. data/samples/saves/.gitignore +0 -1
  213. data/samples/saves/hand_expected.png +0 -0
  214. data/samples/saves/hand_pretty_expected.png +0 -0
  215. data/samples/saves/save-pdf-small_expected.pdf +0 -0
  216. data/samples/saves/save-pdf_expected.pdf +0 -0
  217. data/samples/saves/save_png_00_expected.png +0 -0
  218. data/samples/saves/save_png_trimmed_00_expected.png +0 -0
  219. data/samples/saves/save_sheet_00_expected.png +0 -0
  220. data/samples/saves/save_sheet_01_expected.png +0 -0
  221. data/samples/saves/save_sheet_range_00_expected.png +0 -0
  222. data/samples/saves/save_sheet_range_01_expected.png +0 -0
  223. data/samples/saves/save_single_sheet_00_expected.png +0 -0
  224. data/samples/saves/saves_notrim_01_expected.png +0 -0
  225. data/samples/saves/showcase2_expected.png +0 -0
  226. data/samples/saves/showcase_expected.png +0 -0
  227. data/samples/saves/showcase_individual_00_expected.png +0 -0
  228. data/samples/saves/showcase_individual_01_expected.png +0 -0
  229. data/samples/saves/showcase_individual_02_expected.png +0 -0
  230. data/samples/saves/showcase_individual_03_expected.png +0 -0
  231. data/samples/saves/spanner.svg +0 -91
  232. data/samples/shapes/.gitignore +0 -1
  233. data/samples/shapes/shape_00_expected.png +0 -0
  234. data/samples/shiny-purse.png +0 -0
  235. data/samples/spanner.svg +0 -91
  236. data/samples/sprites.png +0 -0
  237. data/samples/text/.gitignore +0 -2
  238. data/samples/text/README.md +0 -1
  239. data/samples/text/_text_00_expected.png +0 -0
  240. data/samples/text/config.yml +0 -2
  241. data/samples/units/units_00_expected.png +0 -0
  242. data/samples/units/using_units.yml +0 -10
  243. data/spec/api/api_data_spec.rb +0 -172
  244. data/spec/api/api_groups_spec.rb +0 -49
  245. data/spec/api/api_settings_spec.rb +0 -38
  246. data/spec/api/api_units_spec.rb +0 -37
  247. data/spec/args/box_spec.rb +0 -127
  248. data/spec/args/draw_spec.rb +0 -101
  249. data/spec/args/embed_key_spec.rb +0 -13
  250. data/spec/args/input_file_spec.rb +0 -21
  251. data/spec/args/paint_spec.rb +0 -22
  252. data/spec/args/paragraph_spec.rb +0 -153
  253. data/spec/args/range_spec.rb +0 -41
  254. data/spec/args/save_batch_spec.rb +0 -51
  255. data/spec/args/scale_box_spec.rb +0 -71
  256. data/spec/args/sheet_spec.rb +0 -80
  257. data/spec/args/showcase_special_spec.rb +0 -15
  258. data/spec/args/transform_spec.rb +0 -25
  259. data/spec/args/typographer_spec.rb +0 -71
  260. data/spec/args/unit_conversion_spec.rb +0 -29
  261. data/spec/card_spec.rb +0 -11
  262. data/spec/commands/new_spec.rb +0 -48
  263. data/spec/conf_spec.rb +0 -47
  264. data/spec/data/conf/basic.yml +0 -1
  265. data/spec/data/conf/empty.yml +0 -1
  266. data/spec/data/conf/unrecognized.yml +0 -4
  267. data/spec/data/csv/basic.csv +0 -3
  268. data/spec/data/csv/custom_opts.csv +0 -2
  269. data/spec/data/csv/dup_cols.csv +0 -3
  270. data/spec/data/csv/newline.csv +0 -3
  271. data/spec/data/csv/qty.csv +0 -3
  272. data/spec/data/csv/qty_named.csv +0 -3
  273. data/spec/data/csv/with_spaces.csv +0 -3
  274. data/spec/data/csv/yield.csv +0 -3
  275. data/spec/data/layouts/easy-circular-extends.yml +0 -6
  276. data/spec/data/layouts/empty-rule.yml +0 -1
  277. data/spec/data/layouts/empty.yml +0 -1
  278. data/spec/data/layouts/extends-nonexists.yml +0 -3
  279. data/spec/data/layouts/extends-units-mixed.yml +0 -8
  280. data/spec/data/layouts/extends-units.yml +0 -8
  281. data/spec/data/layouts/hard-circular-extends.yml +0 -9
  282. data/spec/data/layouts/multi-extends-single-entry.yml +0 -14
  283. data/spec/data/layouts/multi-level-extends.yml +0 -10
  284. data/spec/data/layouts/multifile-a.yml +0 -4
  285. data/spec/data/layouts/multifile-b.yml +0 -4
  286. data/spec/data/layouts/multifile-extends-a.yml +0 -8
  287. data/spec/data/layouts/multifile-extends-b.yml +0 -9
  288. data/spec/data/layouts/no-extends.yml +0 -5
  289. data/spec/data/layouts/pre-extends.yml +0 -7
  290. data/spec/data/layouts/self-circular-extends.yml +0 -3
  291. data/spec/data/layouts/single-extends.yml +0 -7
  292. data/spec/data/layouts/single-level-multi-extends.yml +0 -12
  293. data/spec/data/samples/autoscale_font/_autoscale_font.rb.txt +0 -133
  294. data/spec/data/samples/basic.rb.txt +0 -248
  295. data/spec/data/samples/cairo_access.rb.txt +0 -59
  296. data/spec/data/samples/colors/_gradients.rb.txt +0 -84
  297. data/spec/data/samples/config_text_markup.rb.txt +0 -74
  298. data/spec/data/samples/custom_config.rb.txt +0 -59
  299. data/spec/data/samples/data/_csv.rb.txt +0 -231
  300. data/spec/data/samples/data/_excel.rb.txt +0 -704
  301. data/spec/data/samples/embed_text.rb.txt +0 -431
  302. data/spec/data/samples/hello_world.rb.txt +0 -38
  303. data/spec/data/samples/images/_more_load_images.rb.txt +0 -335
  304. data/spec/data/samples/layouts.rb.txt +0 -489
  305. data/spec/data/samples/ranges/_ranges.rb.txt +0 -484
  306. data/spec/data/samples/saves/_hand.rb.txt +0 -594
  307. data/spec/data/samples/saves/_portrait_landscape.rb.txt +0 -57
  308. data/spec/data/samples/saves/_save_pdf.rb.txt +0 -1601
  309. data/spec/data/samples/saves/_saves.rb.txt +0 -873
  310. data/spec/data/samples/saves/_showcase.rb.txt +0 -5942
  311. data/spec/data/samples/shapes/_draw_shapes.rb.txt +0 -757
  312. data/spec/data/samples/text_options.rb.txt +0 -1158
  313. data/spec/data/samples/tgc_proofs.rb.txt +0 -102
  314. data/spec/data/samples/units/_units.rb.txt +0 -53
  315. data/spec/data/xlsx/basic.xlsx +0 -0
  316. data/spec/data/xlsx/explode_quantities.xlsx +0 -0
  317. data/spec/data/xlsx/formulas.xlsx +0 -0
  318. data/spec/data/xlsx/whitespace.xlsx +0 -0
  319. data/spec/data/xlsx/with_macros.xlsm +0 -0
  320. data/spec/deck_spec.rb +0 -73
  321. data/spec/graphics/cairo_context_wrapper_spec.rb +0 -104
  322. data/spec/graphics/embedding_utils_spec.rb +0 -73
  323. data/spec/graphics/graphics_save_doc_spec.rb +0 -74
  324. data/spec/import/data_frame_spec.rb +0 -251
  325. data/spec/layout_parser_spec.rb +0 -226
  326. data/spec/logger_spec.rb +0 -12
  327. data/spec/samples/_diffs/gitkeep.txt +0 -0
  328. data/spec/samples/diff-with-css.example.html +0 -39
  329. data/spec/samples/expected/autoscale_00.png +0 -0
  330. data/spec/samples/expected/autoscale_01.png +0 -0
  331. data/spec/samples/expected/autoscale_02.png +0 -0
  332. data/spec/samples/expected/backend_00.png +0 -0
  333. data/spec/samples/expected/backend_00.svg +0 -78
  334. data/spec/samples/expected/backend_01.png +0 -0
  335. data/spec/samples/expected/backend_01.svg +0 -78
  336. data/spec/samples/expected/basic_00.png +0 -0
  337. data/spec/samples/expected/basic_01.png +0 -0
  338. data/spec/samples/expected/basic_02.png +0 -0
  339. data/spec/samples/expected/cairo_access_00.png +0 -0
  340. data/spec/samples/expected/cairo_access_01.png +0 -0
  341. data/spec/samples/expected/card_00.png +0 -0
  342. data/spec/samples/expected/card_01.png +0 -0
  343. data/spec/samples/expected/colors_00.png +0 -0
  344. data/spec/samples/expected/config_disable_text_00.png +0 -0
  345. data/spec/samples/expected/config_text_00.png +0 -0
  346. data/spec/samples/expected/custom-config_00.png +0 -0
  347. data/spec/samples/expected/embed_00.png +0 -0
  348. data/spec/samples/expected/embed_multisheet_00.png +0 -0
  349. data/spec/samples/expected/gitkeep.txt +0 -0
  350. data/spec/samples/expected/gradient_00.png +0 -0
  351. data/spec/samples/expected/hand.png +0 -0
  352. data/spec/samples/expected/hand_pretty.png +0 -0
  353. data/spec/samples/expected/landscape_00.png +0 -0
  354. data/spec/samples/expected/layout2_00.png +0 -0
  355. data/spec/samples/expected/layout_00.png +0 -0
  356. data/spec/samples/expected/layout_builtin_hand_00.png +0 -0
  357. data/spec/samples/expected/layout_builtin_playing_card_00.png +0 -0
  358. data/spec/samples/expected/load_images_00.png +0 -0
  359. data/spec/samples/expected/portrait_00.png +0 -0
  360. data/spec/samples/expected/ranges_00.png +0 -0
  361. data/spec/samples/expected/sample_csv_00.png +0 -0
  362. data/spec/samples/expected/sample_csv_01.png +0 -0
  363. data/spec/samples/expected/sample_excel_00.png +0 -0
  364. data/spec/samples/expected/sample_excel_01.png +0 -0
  365. data/spec/samples/expected/sample_excel_02.png +0 -0
  366. data/spec/samples/expected/save_sheet_00.png +0 -0
  367. data/spec/samples/expected/save_sheet_01.png +0 -0
  368. data/spec/samples/expected/save_sheet_range_00.png +0 -0
  369. data/spec/samples/expected/save_sheet_range_01.png +0 -0
  370. data/spec/samples/expected/save_single_sheet_00.png +0 -0
  371. data/spec/samples/expected/saves_notrim_01.png +0 -0
  372. data/spec/samples/expected/shape_00.png +0 -0
  373. data/spec/samples/expected/showcase.png +0 -0
  374. data/spec/samples/expected/showcase2.png +0 -0
  375. data/spec/samples/expected/showcase_individual_00.png +0 -0
  376. data/spec/samples/expected/showcase_individual_01.png +0 -0
  377. data/spec/samples/expected/showcase_individual_02.png +0 -0
  378. data/spec/samples/expected/showcase_individual_03.png +0 -0
  379. data/spec/samples/expected/text_00.png +0 -0
  380. data/spec/samples/expected/text_01.png +0 -0
  381. data/spec/samples/expected/text_02.png +0 -0
  382. data/spec/samples/expected/tgc_sample_00.png +0 -0
  383. data/spec/samples/expected/units_00.png +0 -0
  384. data/spec/samples/run_samples_spec.rb +0 -17
  385. data/spec/samples/samples_regression_spec.rb +0 -71
  386. data/spec/samples/sanity.html.erb +0 -28
  387. data/spec/samples/sanity.rb +0 -70
  388. data/spec/sanity/.gitignore +0 -1
  389. data/spec/sanity/sanity.html.erb +0 -42
  390. data/spec/sanity/sanity_test.rb +0 -42
  391. data/spec/sanity/tests.yml +0 -12
  392. data/spec/spec_helper.rb +0 -159
@@ -1,101 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/draw'
3
-
4
- describe Squib::Args::Draw do
5
- let(:custom_colors) { { 'foo' => 'abc' } }
6
- subject(:draw) {Squib::Args::Draw.new(custom_colors)}
7
-
8
- context 'unit conversion' do
9
-
10
- it 'converts units on stroke width' do
11
- args = { stroke_width: '2in' }
12
- draw.load!(args, expand_by: 2)
13
- expect(draw).to have_attributes(stroke_width: [600, 600])
14
- end
15
-
16
- end
17
-
18
- context 'dsl overrides' do
19
- subject(:draw) {Squib::Args::Draw.new(custom_colors, { stroke_width: 0.0 })}
20
-
21
- it 'works when specified' do
22
- draw.load!({}) # go right to defaults
23
- expect(draw.stroke_width).to eq([0.0]) # ordinarily a non-zero according
24
- end
25
-
26
- end
27
-
28
- context 'validation' do
29
-
30
- it 'converts to Cairo options' do
31
- args = { join: 'bevel', cap: 'round' }
32
- draw.load!(args)
33
- expect(draw).to have_attributes(
34
- join: [Cairo::LINE_JOIN_BEVEL],
35
- cap: [Cairo::LINE_JOIN_ROUND]
36
- )
37
- end
38
-
39
- it 'parses dash options' do
40
- args = { dash: '3 4 5' }
41
- draw.load!(args)
42
- expect(draw).to have_attributes(dash: [[3, 4, 5]])
43
- end
44
-
45
- it 'parses more complex dash options' do
46
- args = { dash: '30.5, 90, 5' }
47
- draw.load!(args)
48
- expect(draw).to have_attributes(dash: [[30.5, 90, 5]])
49
- end
50
-
51
- it 'does unit conversion on dash options' do
52
- args = { dash: '3in 4in 5in' }
53
- draw.load!(args)
54
- expect(draw).to have_attributes(dash: [[900, 1200, 1500]])
55
- end
56
-
57
- it 'converts line caps to Cairo constants' do
58
- args = { cap: :SQUARE }
59
- draw.load! args
60
- expect(draw).to have_attributes(cap: [Cairo::LINE_CAP_SQUARE])
61
- end
62
-
63
- it 'converts line join' do
64
- args = { join: 'round' }
65
- draw.load! args
66
- expect(draw).to have_attributes(join: [Cairo::LINE_JOIN_ROUND])
67
- end
68
-
69
- it 'allows fill_first stroke_strategy' do
70
- args = { stroke_strategy: :FILL_first }
71
- draw.load! args
72
- expect(draw).to have_attributes(stroke_strategy: [:fill_first])
73
- end
74
-
75
- it 'allows stroke_first stroke_strategy' do
76
- args = { stroke_strategy: ' stroke_FIRST ' }
77
- draw.load! args
78
- expect(draw).to have_attributes(stroke_strategy: [:stroke_first])
79
- end
80
-
81
- it 'disallows anything not stroke_first and fill_first' do
82
- args = { stroke_strategy: 'foo' }
83
- expect { draw.load! args }.to raise_error("Only 'stroke_first' or 'fill_first' allowed")
84
- end
85
-
86
- context 'custom colors' do
87
-
88
- it 'looks up custom colors in the config' do
89
- draw.load!({ color: 'foo' })
90
- expect(draw.color).to eq ['abc']
91
- end
92
-
93
- it 'passes on through for non-custom color' do
94
- draw = Squib::Args::Draw.new(custom_colors)
95
- draw.load!({ color: 'bar' })
96
- expect(draw.color).to eq ['bar']
97
- end
98
-
99
- end
100
- end
101
- end
@@ -1,13 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/embed_key'
3
-
4
- describe Squib::Args::EmbedKey do
5
-
6
- context '#validate_key' do
7
-
8
- it 'converts to string' do
9
- expect(subject.validate_key(2.5)).to eq ('2.5')
10
- end
11
-
12
- end
13
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/input_file'
3
-
4
- describe Squib::Args::InputFile do
5
- subject(:ifile) {Squib::Args::InputFile.new}
6
-
7
- context 'validate_file' do
8
-
9
- it 'allows a file if it exists' do
10
- args = { file: __FILE__ } # I code therefore I am.
11
- ifile.load!(args, expand_by: 1)
12
- expect(ifile).to have_attributes(file: [File.expand_path(__FILE__)])
13
- end
14
-
15
- it 'raises on non-existent file' do
16
- args = { file: 'foo.rb' }
17
- expect { ifile.load!(args, expand_by: 1) }.to raise_error("File #{File.expand_path('foo.rb')} does not exist!")
18
- end
19
-
20
- end
21
- end
@@ -1,22 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/paint'
3
-
4
- describe Squib::Args::Draw do
5
- let(:custom_colors) { { 'foo' => 'abc' } }
6
- subject(:paint) {Squib::Args::Paint.new(custom_colors)}
7
-
8
- context 'alpha' do
9
-
10
- it 'can be a float' do
11
- args = { alpha: 0.6 }
12
- paint.load!(args)
13
- expect(paint.alpha).to eq [0.6]
14
- end
15
-
16
- it 'raises exception when not a float' do
17
- args = { alpha: /6/ }
18
- expect { paint.load!(args) }.to raise_error('alpha must respond to to_f')
19
- end
20
-
21
- end
22
- end
@@ -1,153 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/paragraph'
3
- require 'squib/constants'
4
-
5
- describe Squib::Args::Paragraph do
6
- subject(:para) { Squib::Args::Paragraph.new('FooFont 32') }
7
-
8
- context 'str validator' do
9
- it 'converts everything to string' do
10
- para.load!({ str: 5 })
11
- expect(para.str).to eq ['5']
12
- end
13
- end
14
-
15
- context 'font validator' do
16
- it 'uses deck font by default' do
17
- para.load!({})
18
- expect(para.font).to eq ['FooFont 32']
19
- end
20
-
21
- it 'uses system default font when deck font is :default' do
22
- para = Squib::Args::Paragraph.new(:default)
23
- para.load!({})
24
- expect(para.font).to eq [Squib::DEFAULT_FONT]
25
- end
26
-
27
- it 'uses specified font when given' do
28
- para.load!({ font: 'MyFont 8' })
29
- expect(para.font).to eq ['MyFont 8']
30
- end
31
- end
32
-
33
- context 'align validator' do
34
- it 'converts to pango left' do
35
- para.load!({ align: :left })
36
- expect(para.align).to eq [Pango::ALIGN_LEFT]
37
- end
38
-
39
- it 'converts to pango right' do
40
- para.load!({ align: :RIGHT })
41
- expect(para.align).to eq [Pango::ALIGN_RIGHT]
42
- end
43
-
44
- it 'converts to pango center' do
45
- para.load!({ align: 'center' })
46
- expect(para.align).to eq [Pango::ALIGN_CENTER]
47
- end
48
-
49
- it 'raises an exception on anything else' do
50
- expect { para.load!({ align: 'foo' }) }.to raise_error(ArgumentError, 'align must be one of: center, left, right')
51
- end
52
- end
53
-
54
- context 'wrap validator' do
55
- it 'converts to pango wrap word' do
56
- para.load!({ wrap: 'word' })
57
- expect(para.wrap).to eq [Pango::WRAP_WORD]
58
- end
59
-
60
- it 'converts to pango wrap char' do
61
- para.load!({ wrap: 'WORD_ChAr' })
62
- expect(para.wrap).to eq [Pango::WRAP_WORD_CHAR]
63
- end
64
-
65
- it 'converts to pango wrap char on true' do
66
- para.load!({ wrap: true })
67
- expect(para.wrap).to eq [Pango::WRAP_WORD_CHAR]
68
- end
69
-
70
- it 'converts to pango wrap char with false' do
71
- para.load!({ wrap: false })
72
- expect(para.wrap).to eq [Pango::WRAP_CHAR]
73
- end
74
-
75
- it 'raises an exception on anything else' do
76
- expect { para.load!({ wrap: 'foo' }) }.to raise_error(ArgumentError, 'wrap must be one of: word, char, word_char, true, or false')
77
- end
78
- end
79
-
80
- context 'ellipsize validator' do
81
- it 'converts to pango on none and false' do
82
- para.load!({ ellipsize: 'none' })
83
- expect(para.ellipsize).to eq [Pango::Layout::ELLIPSIZE_NONE]
84
- end
85
-
86
- it 'converts to pango with start' do
87
- para.load!({ ellipsize: :StArt })
88
- expect(para.ellipsize).to eq [Pango::Layout::ELLIPSIZE_START]
89
- end
90
-
91
- it 'converts to pango middle' do
92
- para.load!({ ellipsize: 'middle' })
93
- expect(para.ellipsize).to eq [Pango::Layout::ELLIPSIZE_MIDDLE]
94
- end
95
-
96
- it 'converts to pango end' do
97
- para.load!({ ellipsize: 'END' })
98
- expect(para.ellipsize).to eq [Pango::Layout::ELLIPSIZE_END]
99
- end
100
-
101
- it 'raises an exception on anything else' do
102
- expect { para.load!({ ellipsize: 'foo' }) }.to raise_error(ArgumentError, 'ellipsize must be one of: none, start, middle, end, true, or false')
103
- end
104
- end
105
-
106
- context 'justify validator' do
107
- it 'allows nil' do
108
- para.load!({ justify: nil })
109
- expect(para.justify).to eq [nil]
110
- end
111
-
112
- it 'can be true' do
113
- para.load!({ justify: true })
114
- expect(para.justify).to eq [true]
115
- end
116
-
117
- it 'can be false' do
118
- para.load!({ justify: false })
119
- expect(para.justify).to eq [false]
120
- end
121
-
122
- it 'raises an exception on anything else' do
123
- expect { para.load!({ justify: 'false' }) }.to raise_error(ArgumentError, 'justify must be one of: nil, true, or false')
124
- end
125
- end
126
-
127
- context 'spacing validator' do
128
- it 'allows nil' do
129
- para.load!({ spacing: nil })
130
- expect(para.spacing).to eq [nil]
131
- end
132
- it 'is converted to Pango space' do
133
- para.load!({ spacing: 519 })
134
- expect(para.spacing).to eq [Pango::SCALE * 519.0]
135
- end
136
-
137
- it 'raises an exception if not a float' do
138
- expect { para.load!({ spacing: /foo/ }) }.to raise_error(ArgumentError, 'spacing must be a number or nil')
139
- end
140
- end
141
-
142
- context 'valign validator' do
143
- it 'converts top' do
144
- para.load!({ valign: :top })
145
- expect(para.valign).to eq ['top']
146
- end
147
-
148
- it 'raises an exception if not one of the three' do
149
- expect { para.load!({ valign: 'foo' }) }.to raise_error(ArgumentError, 'valign must be one of: top, middle, bottom')
150
- end
151
- end
152
-
153
- end
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/card_range'
3
-
4
- describe Squib::Args::CardRange do
5
-
6
- it 'must be within the card size range' do
7
- expect {Squib::Args::CardRange.new(2..3, deck_size: 2)}
8
- .to raise_error(ArgumentError, '2..3 is outside of deck range of 0..1')
9
- end
10
-
11
- it 'defaults to range of all cards if :all' do
12
- range = Squib::Args::CardRange.new(:all, deck_size: 5)
13
- expect(range.to_a).to eq([0, 1, 2, 3, 4])
14
- end
15
-
16
- it 'creates a range of cards for singleton' do
17
- range = Squib::Args::CardRange.new(3, deck_size: 5)
18
- expect(range.to_a).to eq([3])
19
- end
20
-
21
- it 'lets arrays pass through unchanged' do
22
- range = Squib::Args::CardRange.new([0, 2], deck_size: 5)
23
- expect(range.to_a).to eq([0, 2])
24
- end
25
-
26
- it 'raises an error on everything else' do
27
- expect { Squib::Args::CardRange.new(:foo, deck_size: 5) }
28
- .to raise_error(ArgumentError, 'foo must be Enumerable (i.e. respond_to :each).')
29
- end
30
-
31
- it 'allows anything with :to_i' do
32
- range = Squib::Args::CardRange.new(0.9, deck_size: 5)
33
- expect(range.to_a).to eq([0])
34
- end
35
-
36
- it 'allows [] as an empty range' do
37
- range = Squib::Args::CardRange.new([], deck_size: 5)
38
- expect(range.to_a).to eq([])
39
- end
40
-
41
- end
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/save_batch'
3
-
4
- describe Squib::Args::SaveBatch do
5
- subject(:save_batch) {Squib::Args::SaveBatch.new}
6
-
7
- context 'dir' do
8
- it 'is created if not exists (and warns)' do
9
- opts = { dir: 'tocreate' }
10
- Dir.chdir(output_dir) do
11
- FileUtils.rm_rf('tocreate', secure: true)
12
- expect(Squib.logger).to receive(:warn).with("Dir 'tocreate' does not exist, creating it.").once
13
- save_batch.load! opts
14
- expect(save_batch).to have_attributes({ dir: ['tocreate'] })
15
- expect(Dir.exists? 'tocreate').to be true
16
- end
17
- end
18
- end
19
-
20
- context 'rotate' do
21
- it 'does nothing by default' do
22
- opts = {}
23
- save_batch.load! opts
24
- expect(save_batch[0]).to have_attributes({ rotate: false, angle: 0 })
25
- end
26
-
27
- it 'rotates by pi/2 with true' do
28
- opts = { rotate: true }
29
- save_batch.load! opts
30
- expect(save_batch[0]).to have_attributes({ rotate: true, angle: Math::PI / 2 })
31
- end
32
-
33
- it 'rotates by pi/2' do
34
- opts = { rotate: :clockwise }
35
- save_batch.load! opts
36
- expect(save_batch[0]).to have_attributes({ rotate: true, angle: Math::PI / 2 })
37
- end
38
-
39
- it 'rotates by pi/2 with counterclockwise' do
40
- opts = { rotate: :counterclockwise }
41
- save_batch.load! opts
42
- expect(save_batch[0]).to have_attributes({ rotate: true, angle: 3 * Math::PI / 2 })
43
- end
44
-
45
- it 'raises error on a number' do
46
- opts = { rotate: 5.0 }
47
- expect { save_batch.load!(opts) }.to raise_error('invalid option to rotate: only [true, false, :clockwise, :counterclockwise]')
48
- end
49
- end
50
-
51
- end
@@ -1,71 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/args/scale_box'
3
-
4
- describe Squib::Args::ScaleBox do
5
- subject(:box) { Squib::Args::ScaleBox.new({}) }
6
-
7
- context 'unit conversion' do
8
- it 'converts units on all args' do
9
- args = { x: ['1in', '2in'], y: 300, width: '1in', height: '1in' }
10
- box.load!(args, expand_by: 2)
11
- expect(box).to have_attributes(
12
- x: [300, 600],
13
- y: [300, 300],
14
- width: [300, 300],
15
- height: [300, 300],
16
- )
17
- end
18
- end
19
-
20
- context 'validation' do
21
- it 'replaces with deck width and height' do
22
- args = { width: :deck, height: :deck }
23
- deck = OpenStruct.new(width: 123, height: 456)
24
- box = Squib::Args::Box.new(deck)
25
- box.load!(args, expand_by: 1)
26
- expect(box).to have_attributes(width: [123], height: [456])
27
- end
28
-
29
- it 'allows :native' do
30
- args = { width: :native, height: :native }
31
- box.load!(args, expand_by: 1)
32
- expect(box).to have_attributes(width: [:native], height: [:native])
33
- end
34
-
35
- it 'allows native to be a string' do
36
- args = { width: 'native' }
37
- box.load!(args, expand_by: 1)
38
- expect(box).to have_attributes(width: [:native], height: [:native])
39
- end
40
-
41
- it 'allows :scale on width if height has to_f' do
42
- args = { width: :scale, height: 75 }
43
- box.load!(args, expand_by: 1)
44
- expect(box).to have_attributes(width: [:scale], height: [75])
45
- end
46
-
47
- it 'allows :scale on width if height has to_f' do
48
- args = { width: 75, height: :scale }
49
- box.load!(args, expand_by: 1)
50
- expect(box).to have_attributes(width: [75], height: [:scale])
51
- end
52
-
53
- it 'disallows both :scale' do
54
- args = { width: :scale, height: :scale }
55
- expect { box.load!(args, expand_by: 1) }.to raise_error('if width is :scale, height must be a number')
56
- end
57
-
58
- it 'disallows non-to_f on width' do
59
- args = { width: :foo }
60
- expect { box.load!(args, expand_by: 1) }.to raise_error('width must be a number, :scale, :native, or :deck')
61
- end
62
-
63
- it 'disallows non-to_f on height' do
64
- args = { height: :foo }
65
- expect { box.load!(args, expand_by: 1) }.to raise_error('height must be a number, :scale, :native, or :deck')
66
- end
67
-
68
- end
69
-
70
-
71
- end