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,102 +0,0 @@
1
- cairo: antialias=(["subpixel"])
2
- cairo: save([])
3
- cairo: set_source_color(["white"])
4
- cairo: paint([])
5
- cairo: restore([])
6
- cairo: save([])
7
- cairo: translate([38, 38])
8
- cairo: rotate([0])
9
- cairo: translate([-38, -38])
10
- cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38])
11
- cairo: set_source_color(["#0000"])
12
- cairo: fill_preserve([])
13
- cairo: set_source_color(["black"])
14
- cairo: set_line_width([2.0])
15
- cairo: set_line_join([0])
16
- cairo: set_line_cap([0])
17
- cairo: set_dash([[]])
18
- cairo: stroke([])
19
- cairo: restore([])
20
- cairo: save([])
21
- cairo: translate([75, 75])
22
- cairo: rotate([0])
23
- cairo: translate([-75, -75])
24
- cairo: rounded_rectangle([75, 75, 128, 128, 25, 25])
25
- cairo: set_source_color(["#0000"])
26
- cairo: fill_preserve([])
27
- cairo: set_source_color(["black"])
28
- cairo: set_line_width([2.0])
29
- cairo: set_line_join([0])
30
- cairo: set_line_cap([0])
31
- cairo: set_dash([[]])
32
- cairo: stroke([])
33
- cairo: restore([])
34
- cairo: save([])
35
- cairo: set_source_color(["black"])
36
- cairo: translate([220, 78])
37
- cairo: rotate([0])
38
- cairo: move_to([0, 0])
39
- pango: font_description=([MockDouble])
40
- pango: text=(["Mastermind"])
41
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
42
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
43
- pango: alignment=([#<Pango::Layout::Alignment left>])
44
- pango: justify=([false])
45
- cairo: move_to([0, 0])
46
- cairo: move_to([0, 0])
47
- cairo: show_pango_layout([MockDouble])
48
- pango: ellipsized?([])
49
- cairo: restore([])
50
- cairo: save([])
51
- cairo: set_source_color(["black"])
52
- cairo: translate([75, 85])
53
- cairo: rotate([0])
54
- cairo: move_to([0, 0])
55
- pango: font_description=([MockDouble])
56
- pango: text=(["3"])
57
- pango: width=([131072])
58
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
59
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
60
- pango: alignment=([#<Pango::Layout::Alignment center>])
61
- pango: justify=([false])
62
- cairo: move_to([0, 0])
63
- cairo: move_to([0, 0])
64
- cairo: show_pango_layout([MockDouble])
65
- pango: ellipsized?([])
66
- cairo: restore([])
67
- cairo: save([])
68
- cairo: translate([620, 75])
69
- cairo: scale([1.0, 1.0])
70
- cairo: rotate([0])
71
- cairo: transform([Matrix])
72
- cairo: translate([-620, -75])
73
- cairo: rounded_rectangle([620, 75, 128.0, 128.0, 0, 0])
74
- cairo: clip([])
75
- cairo: translate([0, 0])
76
- cairo: set_source([ImageSurface, 620, 75])
77
- cairo: paint([1.0])
78
- cairo: restore([])
79
- cairo: save([])
80
- cairo: translate([620, 218])
81
- cairo: transform([Matrix])
82
- cairo: rotate([0])
83
- cairo: scale([1.0, 1.0])
84
- cairo: rounded_rectangle([0, 0, 128.0, 128.0, 0, 0])
85
- cairo: clip([])
86
- cairo: translate([0, 0])
87
- cairo: render_rsvg_handle([RSVG::Handle, nil])
88
- cairo: restore([])
89
- cairo: save([])
90
- cairo: translate([0, 0])
91
- cairo: scale([1.0, 1.0])
92
- cairo: rotate([0])
93
- cairo: transform([Matrix])
94
- cairo: translate([0, 0])
95
- cairo: rounded_rectangle([0, 0, 825.0, 1125.0, 0, 0])
96
- cairo: clip([])
97
- cairo: translate([0, 0])
98
- cairo: set_source([ImageSurface, 0, 0])
99
- cairo: paint([0.5])
100
- cairo: restore([])
101
- surface: write_to_png(["_output/tgc_sample_00.png"])
102
- surface: finish([])
@@ -1,53 +0,0 @@
1
- cairo: antialias=(["subpixel"])
2
- cairo: save([])
3
- cairo: set_source_color(["white"])
4
- cairo: paint([])
5
- cairo: restore([])
6
- cairo: save([])
7
- cairo: translate([37.5, 37.5])
8
- cairo: rotate([0])
9
- cairo: translate([-37.5, -37.5])
10
- cairo: rounded_rectangle([37.5, 37.5, 375.0, 375.0, 0, 0])
11
- cairo: set_source_color(["#0000"])
12
- cairo: fill_preserve([])
13
- cairo: set_source_color(["black"])
14
- cairo: set_line_width([2.0])
15
- cairo: set_line_join([0])
16
- cairo: set_line_cap([0])
17
- cairo: set_dash([[5.905511805, 5.905511805]])
18
- cairo: stroke([])
19
- cairo: restore([])
20
- cairo: save([])
21
- cairo: translate([75.0, 75.0])
22
- cairo: rotate([0])
23
- cairo: translate([-75.0, -75.0])
24
- cairo: rounded_rectangle([75.0, 75.0, 300.0, 300.0, 23.62204722, 23.62204722])
25
- cairo: set_source_color(["#0000"])
26
- cairo: fill_preserve([])
27
- cairo: set_source_color(["black"])
28
- cairo: set_line_width([2.0])
29
- cairo: set_line_join([0])
30
- cairo: set_line_cap([0])
31
- cairo: set_dash([[]])
32
- cairo: stroke([])
33
- cairo: restore([])
34
- cairo: save([])
35
- cairo: set_source_color(["black"])
36
- cairo: translate([134.05511805, 166.24488195])
37
- cairo: rotate([0])
38
- cairo: move_to([0, 0])
39
- pango: font_description=([MockDouble])
40
- pango: text=(["Hello."])
41
- pango: width=([384000.0])
42
- pango: height=([307200])
43
- pango: wrap=([#<Pango::Layout::WrapMode word-char>])
44
- pango: ellipsize=([#<Pango::Layout::EllipsizeMode end>])
45
- pango: alignment=([#<Pango::Layout::Alignment left>])
46
- pango: justify=([false])
47
- cairo: move_to([0, 0])
48
- cairo: move_to([0, 0])
49
- cairo: show_pango_layout([MockDouble])
50
- pango: ellipsized?([])
51
- cairo: restore([])
52
- surface: write_to_png(["_output/units_00.png"])
53
- surface: finish([])
Binary file
Binary file
@@ -1,73 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib'
3
-
4
- describe Squib::Deck do
5
-
6
- it 'initializes with default parameters' do
7
- d = Squib::Deck.new
8
- expect(d.width).to eq(825)
9
- expect(d.height).to eq(1125)
10
- expect(d.cards.size).to eq(1)
11
- end
12
-
13
- it 'can be built with unit conversion' do
14
- d = Squib::Deck.new(width: '1in', height: '2in')
15
- expect(d.width).to eq(300)
16
- expect(d.height).to eq(600)
17
- end
18
-
19
- context 'in dealing with ranges' do
20
- it 'calls text on all cards by default' do
21
- card1 = instance_double(Squib::Card)
22
- card2 = instance_double(Squib::Card)
23
- expect(card1).to receive(:text).once
24
- expect(card2).to receive(:text).once
25
- expect(card1).to receive(:finish!).once
26
- expect(card2).to receive(:finish!).once
27
- Squib::Deck.new do
28
- @cards = [card1, card2]
29
- text str: 'blah'
30
- end
31
- end
32
-
33
- it 'calls text on some cards with an integer' do
34
- card1 = instance_double(Squib::Card)
35
- card2 = instance_double(Squib::Card)
36
- expect(card1).to receive(:finish!).once
37
- expect(card2).to receive(:text).once
38
- expect(card2).to receive(:finish!).once
39
- Squib::Deck.new do
40
- @cards = [card1, card2]
41
- text range: 1, str: 'blah'
42
- end
43
- end
44
-
45
- it 'calls text with ranges' do
46
- card1 = instance_double(Squib::Card)
47
- card2 = instance_double(Squib::Card)
48
- card3 = instance_double(Squib::Card)
49
- expect(card1).to receive(:text).once
50
- expect(card1).to receive(:finish!).once
51
- expect(card2).to receive(:text).once
52
- expect(card2).to receive(:finish!).once
53
- expect(card3).to receive(:finish!).once
54
- Squib::Deck.new do
55
- @cards = [card1, card2, card3]
56
- text range: 0..1, str: 'blah'
57
- end
58
- end
59
- end
60
-
61
- it 'loads a normal layout with no extends' do
62
- d = Squib::Deck.new(layout: layout_file('no-extends.yml'))
63
- expect(d.layout).to eq({
64
- 'frame' => {
65
- 'x' => 38,
66
- 'valign' => :middle,
67
- 'str' => 'blah',
68
- 'font' => 'Mr. Font',
69
- }
70
- })
71
- end
72
-
73
- end
@@ -1,104 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/graphics/cairo_context_wrapper'
3
-
4
- describe Squib::Graphics::CairoContextWrapper do
5
-
6
- let(:cairo) { double(Cairo::Context) }
7
- subject { Squib::Graphics::CairoContextWrapper.new(cairo) }
8
-
9
- context '#set_source_squibcolor' do
10
-
11
- it 'passes on colors as normal' do
12
- expect(cairo).to receive(:set_source_color).with('blue')
13
- subject.set_source_squibcolor('blue')
14
- end
15
-
16
- it 'passes on color symbols as normal' do
17
- expect(cairo).to receive(:set_source_color).with(:blue)
18
- subject.set_source_squibcolor(:blue)
19
- end
20
-
21
- it 'passes on color hashes' do
22
- expect(cairo).to receive(:set_source_color)
23
- .with('#aabbccdd')
24
- subject.set_source_squibcolor('#aabbccdd')
25
- end
26
-
27
- it 'raises on nil' do
28
- expect { subject.set_source_squibcolor(nil) }.to raise_error('nil is not a valid color')
29
- end
30
-
31
- context 'regex variations for linear gradients' do
32
- before(:each) do
33
- dbl = double(Cairo::LinearPattern)
34
- mtx = double(Cairo::Matrix)
35
- expect(Cairo::LinearPattern).to receive(:new).with(1, 2, 3, 4).and_return(dbl)
36
- expect(dbl).to receive(:add_color_stop).with(0.0, 'blue')
37
- expect(dbl).to receive(:add_color_stop).with(1.0, 'red')
38
- expect(cairo).to receive(:matrix).and_return(mtx)
39
- expect(dbl).to receive(:matrix=).with(mtx)
40
- expect(cairo).to receive(:set_source).with(dbl)
41
- end
42
-
43
- it('handles no decimals') { subject.set_source_squibcolor('(1,2) (3,4) blue@0 red@1') }
44
- it('handles decimals') { subject.set_source_squibcolor('(1.0,2.0) (3.0,4.0) blue@0 red@1') }
45
- it('handles no whitespace') { subject.set_source_squibcolor('(1,2)(3,4)blue@0red@1') }
46
- it('handles whitespace') { subject.set_source_squibcolor(' ( 1 , 2 ) ( 3 , 4 ) blue@0 red@1 ') }
47
- end
48
-
49
- context 'regex variations for radial gradients' do
50
- before(:each) do
51
- dbl = double(Cairo::RadialPattern)
52
- mtx = double(Cairo::Matrix)
53
- expect(Cairo::RadialPattern).to receive(:new).with(1, 2, 5, 3, 4, 6).and_return(dbl)
54
- expect(dbl).to receive(:add_color_stop).with(0.0, 'blue')
55
- expect(dbl).to receive(:add_color_stop).with(1.0, 'red')
56
- expect(cairo).to receive(:matrix).and_return(mtx)
57
- expect(dbl).to receive(:matrix=).with(mtx)
58
- expect(cairo).to receive(:set_source).with(dbl)
59
- end
60
-
61
- it('handles no decimals') { subject.set_source_squibcolor('(1,2,5) (3,4,6) blue@0 red@1') }
62
- it('handles decimals') { subject.set_source_squibcolor('(1.0,2.0,5.0) (3.0,4.0,6.0) blue@0 red@1') }
63
- it('handles no whitespace') { subject.set_source_squibcolor('(1,2,5)(3,4,6)blue@0red@1') }
64
- it('handles whitespace') { subject.set_source_squibcolor(' ( 1 , 2 , 5 ) ( 3 , 4 , 6 ) blue@0 red@1 ') }
65
- end
66
-
67
- context 'regex handles hash notation' do
68
- it 'on radial patterns' do
69
- dbl = double(Cairo::RadialPattern)
70
- mtx = double(Cairo::Matrix)
71
- expect(Cairo::RadialPattern).to receive(:new).with(1, 2, 5, 3, 4, 6).and_return(dbl)
72
- expect(dbl).to receive(:add_color_stop).with(0.0, '#def')
73
- expect(dbl).to receive(:add_color_stop).with(1.0, '#112233')
74
- expect(cairo).to receive(:matrix).and_return(mtx)
75
- expect(dbl).to receive(:matrix=).with(mtx)
76
- expect(cairo).to receive(:set_source).with(dbl)
77
- subject.set_source_squibcolor('(1,2,5) (3,4,6) #def@0 #112233@1')
78
- end
79
-
80
- it 'on linear patterns' do
81
- dbl = double(Cairo::LinearPattern)
82
- mtx = double(Cairo::Matrix)
83
- expect(Cairo::LinearPattern).to receive(:new).with(1, 2, 3, 4).and_return(dbl)
84
- expect(dbl).to receive(:add_color_stop).with(0.0, '#def')
85
- expect(dbl).to receive(:add_color_stop).with(1.0, '#112233')
86
- expect(cairo).to receive(:matrix).and_return(mtx)
87
- expect(dbl).to receive(:matrix=).with(mtx)
88
- expect(cairo).to receive(:set_source).with(dbl)
89
- subject.set_source_squibcolor('(1,2) (3,4) #def@0 #112233@1')
90
- end
91
- end
92
-
93
- end
94
-
95
- context '#flip' do
96
- it 'in the basic case' do
97
- dbl = double(Cairo::Matrix)
98
- expect(Cairo::Matrix).to receive(:new).with(-1.0, 0.0, 0.0, -1.0, 6.0, 8.0).and_return(dbl)
99
- expect(cairo).to receive(:transform).with(dbl)
100
- subject.flip(true, true, 3.0, 4.0)
101
- end
102
- end
103
-
104
- end
@@ -1,73 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib/graphics/embedding_utils'
3
-
4
- describe Squib::EmbeddingUtils do
5
-
6
- context(:indices) do
7
- it 'returns nothing when given nothing' do
8
- expect(Squib::EmbeddingUtils.indices('just some text', [])).to eq({})
9
- end
10
-
11
- it 'returns emptiness for given keys that are not in the string' do
12
- str = 'just some text'
13
- keys = [':tool:']
14
- expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
15
- ':tool:' => []
16
- })
17
- end
18
-
19
- it 'returns correctly for one key, one time' do
20
- str = 'some :tool: text'
21
- keys = [':tool:']
22
- expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
23
- ':tool:' => [5..11]
24
- })
25
- end
26
-
27
- it 'handles one key, multiple times' do
28
- str = 'some :tool: text :tool:'
29
- keys = [':tool:']
30
- expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
31
- ':tool:' => [5..11, 17..23]
32
- })
33
- end
34
-
35
- it 'handles one key, multiple times next to each other' do
36
- str = 'some :tool::tool: text'
37
- keys = [':tool:']
38
- expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
39
- ':tool:' => [5..11, 11..17]
40
- })
41
- end
42
-
43
- it 'handles multiple keys, one time each' do
44
- str = 'some :tool: heart text'
45
- keys = %w(:tool: heart)
46
- expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
47
- ':tool:' => [5..11],
48
- 'heart' => [12..17]
49
- })
50
- end
51
-
52
- it 'handles multiple keys, multiple times each' do
53
- str = ':tool:some :tool: heart text heart tool'
54
- keys = %w(:tool: heart)
55
- expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
56
- ':tool:' => [0..6, 11..17],
57
- 'heart' => [18..23, 29..34]
58
- })
59
- end
60
-
61
- it 'handles multibyte properly' do
62
- str = '💡 📷 :tool: heart text'
63
- keys = %w(:tool: heart 💡)
64
- expect(Squib::EmbeddingUtils.indices(str, keys)).to eq({
65
- ':tool:' => [10..16],
66
- 'heart' => [17..22],
67
- '💡' => [3..4]
68
- })
69
- end
70
-
71
-
72
- end
73
- end
@@ -1,74 +0,0 @@
1
- require 'spec_helper'
2
- require 'squib'
3
-
4
- describe Squib::Deck, '#save_pdf' do
5
-
6
- context 'typical inputs' do
7
- let(:cxt) { double(Cairo::Context) }
8
- let(:target) { double(Cairo::PDFSurface) }
9
-
10
- def expect_card_place(x, y)
11
- expect(cxt).to receive(:translate).with(x, y).once
12
- expect(cxt).to receive(:rectangle).once
13
- expect(cxt).to receive(:clip).once
14
- expect(cxt).to receive(:set_source) # place the card
15
- .with(instance_of(Cairo::ImageSurface), 0, 0).once
16
- expect(cxt).to receive(:paint).once # paint placed card
17
- expect(cxt).to receive(:translate).with(-x, -y).once
18
- expect(cxt).to receive(:reset_clip).once
19
- end
20
-
21
- before(:each) do
22
- allow(Cairo::PDFSurface).to receive(:new).and_return(nil) # don't create the file
23
- allow(Cairo::Context).to receive(:new).and_return(cxt)
24
- allow(cxt).to receive(:antialias=)
25
- end
26
-
27
- it 'make all the expected calls on a smoke test' do
28
- num_cards = 9
29
- deck = Squib::Deck.new(cards: 9, width: 825, height: 1125)
30
- expect(Squib.logger).to receive(:debug).at_least(:once)
31
- expect(Squib.logger).to receive(:warn).exactly(:once) # warn about making the dir
32
- expect(Dir).to receive(:mkdir) {} # don't actually make the dir
33
- expect(cxt).to receive(:scale).with(0.24, 0.24)
34
-
35
- expect_card_place(75, 75)
36
- expect_card_place(831, 75)
37
- expect_card_place(1587, 75)
38
- expect_card_place(2343, 75)
39
- expect_card_place(75, 1131)
40
- expect_card_place(831, 1131)
41
- expect_card_place(1587, 1131)
42
- expect_card_place(2343, 1131)
43
- expect(cxt).to receive(:show_page).once
44
- expect_card_place(75, 75)
45
- expect(cxt).to receive(:target).and_return(target)
46
- expect(target).to receive(:finish).once
47
-
48
- args = { file: 'foo.pdf', dir: '_out', crop_marks: false,
49
- margin: 75, gap: 5, trim: 37 }
50
- deck.save_pdf(args)
51
- end
52
-
53
- it 'only does the three cards on a limited range' do
54
- num_cards = 9
55
- args = { range: 2..4, file: 'foo.pdf', dir: '_out', margin: 75, gap: 5, trim: 37 }
56
- deck = Squib::Deck.new(cards: num_cards, width: 825, height: 1125)
57
- expect(Squib.logger).to receive(:debug).at_least(:once)
58
- expect(Squib.logger).to receive(:warn).exactly(:once) # warn about making the dir
59
- expect(Dir).to receive(:mkdir) {} # don't actually make the dir
60
- expect(cxt).to receive(:scale).with(0.24, 0.24)
61
-
62
- expect_card_place(75, 75)
63
- expect_card_place(831, 75)
64
- expect_card_place(1587, 75)
65
-
66
- expect(cxt).to receive(:target).and_return(target)
67
- expect(target).to receive(:finish).once
68
-
69
- deck.save_pdf(args)
70
- end
71
-
72
- end
73
-
74
- end