squib 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/CHANGELOG.md +16 -1
- data/appveyor.yml +2 -3
- data/lib/squib/args/sheet.rb +66 -34
- data/lib/squib/graphics/save_pdf.rb +1 -1
- data/lib/squib/import/data_frame.rb +7 -7
- data/lib/squib/version.rb +1 -1
- data/samples/autoscale_font/_autoscale_font.rb +1 -1
- data/samples/build_groups/build_groups.rb +3 -3
- data/samples/colors/_colors.rb +1 -0
- data/samples/{config_text_markup.rb → config/config_text_markup.rb} +0 -0
- data/samples/{custom_config.rb → config/custom_config.rb} +0 -0
- data/samples/{cairo_access.rb → images/_cairo_access.rb} +0 -0
- data/samples/images/_images.rb +1 -1
- data/samples/{unicode.rb → images/_unicode.rb} +0 -0
- data/samples/intro/01_hello.rb +1 -2
- data/samples/intro/02_options.rb +1 -2
- data/samples/intro/03_layout.rb +1 -2
- data/samples/intro/04_arrays.rb +1 -2
- data/samples/intro/05_excel.rb +3 -4
- data/samples/{tgc_proofs.rb → proofs/_tgc_proofs.rb} +1 -4
- data/samples/saves/_save_pdf.rb +7 -0
- data/samples/{embed_text.rb → text/_embed_text.rb} +1 -0
- data/samples/text/_text.rb +1 -1
- data/samples/{text_options.rb → text/_text_options.rb} +1 -1
- data/samples/{bug134.rb → text/bug134.rb} +0 -0
- data/squib.gemspec +17 -16
- metadata +90 -596
- data/benchmarks/antialias_best.rb +0 -13
- data/benchmarks/antialias_best.yml +0 -1
- data/benchmarks/antialias_fast.rb +0 -13
- data/benchmarks/antialias_fast.yml +0 -1
- data/benchmarks/backend-svg.yml +0 -4
- data/benchmarks/backend_memory.rb +0 -14
- data/benchmarks/backend_svg.rb +0 -14
- data/benchmarks/shiny-purse.png +0 -0
- data/benchmarks/spanner.svg +0 -91
- data/benchmarks/tons_of_png.rb +0 -6
- data/benchmarks/tons_of_svg.rb +0 -7
- data/benchmarks/tons_of_text.rb +0 -8
- data/docs/Makefile +0 -216
- data/docs/_static/css/squibdocs.css +0 -23
- data/docs/args/draw.rst +0 -36
- data/docs/args/expansion.rst +0 -3
- data/docs/args/layout.rst +0 -6
- data/docs/args/output_dir.rst +0 -6
- data/docs/args/range.rst +0 -6
- data/docs/args/transform.rst +0 -51
- data/docs/args/trim.rst +0 -11
- data/docs/args/wh.rst +0 -12
- data/docs/args/xy.rst +0 -12
- data/docs/arrays.rst +0 -80
- data/docs/backends.rst +0 -20
- data/docs/bleed.rst +0 -13
- data/docs/build_groups.rst +0 -45
- data/docs/colors.rst +0 -90
- data/docs/conf.py +0 -287
- data/docs/config.rst +0 -135
- data/docs/data.rst +0 -26
- data/docs/dsl/background.rst +0 -20
- data/docs/dsl/build.rst +0 -32
- data/docs/dsl/build_groups.rst +0 -23
- data/docs/dsl/circle.rst +0 -27
- data/docs/dsl/cm.rst +0 -19
- data/docs/dsl/configure.rst +0 -18
- data/docs/dsl/csv.rst +0 -81
- data/docs/dsl/curve.rst +0 -63
- data/docs/dsl/data_frame.rst +0 -85
- data/docs/dsl/deck.rst +0 -45
- data/docs/dsl/disable_build.rst +0 -25
- data/docs/dsl/disable_build_globally.rst +0 -46
- data/docs/dsl/ellipse.rst +0 -23
- data/docs/dsl/enable_build.rst +0 -25
- data/docs/dsl/enable_build_globally.rst +0 -44
- data/docs/dsl/grid.rst +0 -31
- data/docs/dsl/hand.rst +0 -40
- data/docs/dsl/hint.rst +0 -15
- data/docs/dsl/inches.rst +0 -19
- data/docs/dsl/index.rst +0 -9
- data/docs/dsl/line.rst +0 -52
- data/docs/dsl/mm.rst +0 -19
- data/docs/dsl/png.rst +0 -49
- data/docs/dsl/polygon.rst +0 -28
- data/docs/dsl/rect.rst +0 -22
- data/docs/dsl/save.rst +0 -23
- data/docs/dsl/save_pdf.rst +0 -89
- data/docs/dsl/save_png.rst +0 -46
- data/docs/dsl/save_sheet.rst +0 -55
- data/docs/dsl/showcase.rst +0 -76
- data/docs/dsl/star.rst +0 -35
- data/docs/dsl/svg.rst +0 -119
- data/docs/dsl/text.rst +0 -292
- data/docs/dsl/triangle.rst +0 -50
- data/docs/dsl/use_layout.rst +0 -16
- data/docs/dsl/xlsx.rst +0 -56
- data/docs/guides/game_icons.rst +0 -126
- data/docs/guides/getting-started/index.rst +0 -5
- data/docs/guides/getting-started/part_0_learning_ruby.rst +0 -145
- data/docs/guides/getting-started/part_1_zero_to_game.rst +0 -217
- data/docs/guides/getting-started/part_2_iconography.rst +0 -228
- data/docs/guides/getting-started/part_3_workflows.rst +0 -46
- data/docs/guides/getting-started/part_4_ruby_power.rst +0 -18
- data/docs/guides/git.rst +0 -14
- data/docs/guides/guard.rst +0 -84
- data/docs/guides/hello_world.rst +0 -65
- data/docs/guides/projects.rst +0 -35
- data/docs/help.rst +0 -157
- data/docs/index.rst +0 -35
- data/docs/install.rst +0 -68
- data/docs/layouts.rst +0 -290
- data/docs/learning.rst +0 -12
- data/docs/make.bat +0 -263
- data/docs/parameters.rst +0 -34
- data/docs/server.bat +0 -1
- data/docs/text_feature.rst +0 -115
- data/docs/units.rst +0 -14
- data/samples/autoscale_font/.gitignore +0 -2
- data/samples/autoscale_font/card_00_expected.png +0 -0
- data/samples/backend/.gitignore +0 -1
- data/samples/backend/_backend-config.yml +0 -5
- data/samples/backend/backend_00_expected.png +0 -0
- data/samples/backend/backend_01_expected.png +0 -0
- data/samples/backend/backend_vectorized_expected.pdf +0 -0
- data/samples/backend/backend_vectors_00_expected.svg +0 -84
- data/samples/backend/backend_vectors_01_expected.svg +0 -84
- data/samples/backend/shiny-purse.png +0 -0
- data/samples/backend/showcase_expected.png +0 -0
- data/samples/backend/spanner.svg +0 -91
- data/samples/ball.png +0 -0
- data/samples/build_groups/.gitignore +0 -1
- data/samples/build_groups/Rakefile +0 -25
- data/samples/colors/.gitignore +0 -1
- data/samples/colors/color_constants_00_expected.png +0 -0
- data/samples/colors/colors_00_expected.png +0 -0
- data/samples/colors/gradient_00_expected.png +0 -0
- data/samples/config_disable_quotes.yml +0 -3
- data/samples/config_text_markup.yml +0 -9
- data/samples/custom-config.yml +0 -5
- data/samples/customconfig-imgdir/shiny-purse2.png +0 -0
- data/samples/customconfig-imgdir/spanner2.svg +0 -91
- data/samples/data/.gitignore +0 -1
- data/samples/data/explode_quantities.xlsx +0 -0
- data/samples/data/quantity_explosion.csv +0 -3
- data/samples/data/sample.csv +0 -3
- data/samples/data/sample.xlsx +0 -0
- data/samples/data/sample_csv_00_expected.png +0 -0
- data/samples/data/sample_csv_01_expected.png +0 -0
- data/samples/data/sample_csv_qty_00_expected.png +0 -0
- data/samples/data/sample_excel_00_expected.png +0 -0
- data/samples/data/sample_excel_01_expected.png +0 -0
- data/samples/data/sample_excel_02_expected.png +0 -0
- data/samples/data/sample_excel_resources_00_expected.png +0 -0
- data/samples/data/sample_excel_resources_01_expected.png +0 -0
- data/samples/data/sample_xlsx_qty_00_expected.png +0 -0
- data/samples/glass-heart.svg +0 -52
- data/samples/grit.png +0 -0
- data/samples/images/.gitignore +0 -8
- data/samples/images/_images_00_expected.png +0 -0
- data/samples/images/angler-fish.png +0 -0
- data/samples/images/ball.png +0 -0
- data/samples/images/glass-heart.svg +0 -52
- data/samples/images/grit.png +0 -0
- data/samples/images/offset.svg +0 -85
- data/samples/images/robot-golem.svg +0 -1
- data/samples/images/shiny-purse.png +0 -0
- data/samples/images/spanner.svg +0 -91
- data/samples/images/sprites.png +0 -0
- data/samples/images/with-alpha.png +0 -0
- data/samples/intro/.gitignore +0 -2
- data/samples/intro/auto-repair.svg +0 -1
- data/samples/intro/crawling.svg +0 -1
- data/samples/intro/data.xlsx +0 -0
- data/samples/intro/humans.svg +0 -1
- data/samples/intro/ninja-mask.svg +0 -1
- data/samples/intro/part1_00_expected.png +0 -0
- data/samples/intro/part2_00_expected.png +0 -0
- data/samples/intro/part3_00_expected.png +0 -0
- data/samples/intro/part3_layout.yml +0 -34
- data/samples/intro/part4_00_expected.png +0 -0
- data/samples/intro/part4_01_expected.png +0 -0
- data/samples/intro/part5_00_expected.png +0 -0
- data/samples/intro/part5_01_expected.png +0 -0
- data/samples/intro/part5_02_expected.png +0 -0
- data/samples/intro/part5_03_expected.png +0 -0
- data/samples/intro/part5_hand_expected.png +0 -0
- data/samples/intro/part5_showcase_expected.png +0 -0
- data/samples/intro/pirate-skull.svg +0 -1
- data/samples/intro/robot-golem.svg +0 -1
- data/samples/layouts/custom-layout.yml +0 -60
- data/samples/layouts/custom-layout2.yml +0 -15
- data/samples/layouts/expected_layouts_builtin_economy_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_fantasy_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_hand_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_playing_card_00.png +0 -0
- data/samples/layouts/expected_layouts_builtin_tuck_box_00.png +0 -0
- data/samples/layouts/shiny-purse.png +0 -0
- data/samples/layouts/spanner.svg +0 -91
- data/samples/load_images_config.yml +0 -1
- data/samples/offset.svg +0 -71
- data/samples/pokercard.png +0 -0
- data/samples/project/Gemfile +0 -6
- data/samples/project/Guardfile +0 -18
- data/samples/project/Rakefile +0 -25
- data/samples/project/bw/robot-golem.svg +0 -53
- data/samples/project/color/robot-golem.svg +0 -1
- data/samples/project/config.yml +0 -2
- data/samples/project/layouts/characters.yml +0 -3
- data/samples/project/layouts/skills.yml +0 -3
- data/samples/ranges/glass-heart.svg +0 -52
- data/samples/ranges/ranges_00_expected.png +0 -0
- data/samples/saves/.gitignore +0 -1
- data/samples/saves/hand_expected.png +0 -0
- data/samples/saves/hand_pretty_expected.png +0 -0
- data/samples/saves/save-pdf-small_expected.pdf +0 -0
- data/samples/saves/save-pdf_expected.pdf +0 -0
- data/samples/saves/save_png_00_expected.png +0 -0
- data/samples/saves/save_png_trimmed_00_expected.png +0 -0
- data/samples/saves/save_sheet_00_expected.png +0 -0
- data/samples/saves/save_sheet_01_expected.png +0 -0
- data/samples/saves/save_sheet_range_00_expected.png +0 -0
- data/samples/saves/save_sheet_range_01_expected.png +0 -0
- data/samples/saves/save_single_sheet_00_expected.png +0 -0
- data/samples/saves/saves_notrim_01_expected.png +0 -0
- data/samples/saves/showcase2_expected.png +0 -0
- data/samples/saves/showcase_expected.png +0 -0
- data/samples/saves/showcase_individual_00_expected.png +0 -0
- data/samples/saves/showcase_individual_01_expected.png +0 -0
- data/samples/saves/showcase_individual_02_expected.png +0 -0
- data/samples/saves/showcase_individual_03_expected.png +0 -0
- data/samples/saves/spanner.svg +0 -91
- data/samples/shapes/.gitignore +0 -1
- data/samples/shapes/shape_00_expected.png +0 -0
- data/samples/shiny-purse.png +0 -0
- data/samples/spanner.svg +0 -91
- data/samples/sprites.png +0 -0
- data/samples/text/.gitignore +0 -2
- data/samples/text/README.md +0 -1
- data/samples/text/_text_00_expected.png +0 -0
- data/samples/text/config.yml +0 -2
- data/samples/units/units_00_expected.png +0 -0
- data/samples/units/using_units.yml +0 -10
- data/spec/api/api_data_spec.rb +0 -172
- data/spec/api/api_groups_spec.rb +0 -49
- data/spec/api/api_settings_spec.rb +0 -38
- data/spec/api/api_units_spec.rb +0 -37
- data/spec/args/box_spec.rb +0 -127
- data/spec/args/draw_spec.rb +0 -101
- data/spec/args/embed_key_spec.rb +0 -13
- data/spec/args/input_file_spec.rb +0 -21
- data/spec/args/paint_spec.rb +0 -22
- data/spec/args/paragraph_spec.rb +0 -153
- data/spec/args/range_spec.rb +0 -41
- data/spec/args/save_batch_spec.rb +0 -51
- data/spec/args/scale_box_spec.rb +0 -71
- data/spec/args/sheet_spec.rb +0 -80
- data/spec/args/showcase_special_spec.rb +0 -15
- data/spec/args/transform_spec.rb +0 -25
- data/spec/args/typographer_spec.rb +0 -71
- data/spec/args/unit_conversion_spec.rb +0 -29
- data/spec/card_spec.rb +0 -11
- data/spec/commands/new_spec.rb +0 -48
- data/spec/conf_spec.rb +0 -47
- data/spec/data/conf/basic.yml +0 -1
- data/spec/data/conf/empty.yml +0 -1
- data/spec/data/conf/unrecognized.yml +0 -4
- data/spec/data/csv/basic.csv +0 -3
- data/spec/data/csv/custom_opts.csv +0 -2
- data/spec/data/csv/dup_cols.csv +0 -3
- data/spec/data/csv/newline.csv +0 -3
- data/spec/data/csv/qty.csv +0 -3
- data/spec/data/csv/qty_named.csv +0 -3
- data/spec/data/csv/with_spaces.csv +0 -3
- data/spec/data/csv/yield.csv +0 -3
- data/spec/data/layouts/easy-circular-extends.yml +0 -6
- data/spec/data/layouts/empty-rule.yml +0 -1
- data/spec/data/layouts/empty.yml +0 -1
- data/spec/data/layouts/extends-nonexists.yml +0 -3
- data/spec/data/layouts/extends-units-mixed.yml +0 -8
- data/spec/data/layouts/extends-units.yml +0 -8
- data/spec/data/layouts/hard-circular-extends.yml +0 -9
- data/spec/data/layouts/multi-extends-single-entry.yml +0 -14
- data/spec/data/layouts/multi-level-extends.yml +0 -10
- data/spec/data/layouts/multifile-a.yml +0 -4
- data/spec/data/layouts/multifile-b.yml +0 -4
- data/spec/data/layouts/multifile-extends-a.yml +0 -8
- data/spec/data/layouts/multifile-extends-b.yml +0 -9
- data/spec/data/layouts/no-extends.yml +0 -5
- data/spec/data/layouts/pre-extends.yml +0 -7
- data/spec/data/layouts/self-circular-extends.yml +0 -3
- data/spec/data/layouts/single-extends.yml +0 -7
- data/spec/data/layouts/single-level-multi-extends.yml +0 -12
- data/spec/data/samples/autoscale_font/_autoscale_font.rb.txt +0 -133
- data/spec/data/samples/basic.rb.txt +0 -248
- data/spec/data/samples/cairo_access.rb.txt +0 -59
- data/spec/data/samples/colors/_gradients.rb.txt +0 -84
- data/spec/data/samples/config_text_markup.rb.txt +0 -74
- data/spec/data/samples/custom_config.rb.txt +0 -59
- data/spec/data/samples/data/_csv.rb.txt +0 -231
- data/spec/data/samples/data/_excel.rb.txt +0 -704
- data/spec/data/samples/embed_text.rb.txt +0 -431
- data/spec/data/samples/hello_world.rb.txt +0 -38
- data/spec/data/samples/images/_more_load_images.rb.txt +0 -335
- data/spec/data/samples/layouts.rb.txt +0 -489
- data/spec/data/samples/ranges/_ranges.rb.txt +0 -484
- data/spec/data/samples/saves/_hand.rb.txt +0 -594
- data/spec/data/samples/saves/_portrait_landscape.rb.txt +0 -57
- data/spec/data/samples/saves/_save_pdf.rb.txt +0 -1601
- data/spec/data/samples/saves/_saves.rb.txt +0 -873
- data/spec/data/samples/saves/_showcase.rb.txt +0 -5942
- data/spec/data/samples/shapes/_draw_shapes.rb.txt +0 -757
- data/spec/data/samples/text_options.rb.txt +0 -1158
- data/spec/data/samples/tgc_proofs.rb.txt +0 -102
- data/spec/data/samples/units/_units.rb.txt +0 -53
- data/spec/data/xlsx/basic.xlsx +0 -0
- data/spec/data/xlsx/explode_quantities.xlsx +0 -0
- data/spec/data/xlsx/formulas.xlsx +0 -0
- data/spec/data/xlsx/whitespace.xlsx +0 -0
- data/spec/data/xlsx/with_macros.xlsm +0 -0
- data/spec/deck_spec.rb +0 -73
- data/spec/graphics/cairo_context_wrapper_spec.rb +0 -104
- data/spec/graphics/embedding_utils_spec.rb +0 -73
- data/spec/graphics/graphics_save_doc_spec.rb +0 -74
- data/spec/import/data_frame_spec.rb +0 -251
- data/spec/layout_parser_spec.rb +0 -226
- data/spec/logger_spec.rb +0 -12
- data/spec/samples/_diffs/gitkeep.txt +0 -0
- data/spec/samples/diff-with-css.example.html +0 -39
- data/spec/samples/expected/autoscale_00.png +0 -0
- data/spec/samples/expected/autoscale_01.png +0 -0
- data/spec/samples/expected/autoscale_02.png +0 -0
- data/spec/samples/expected/backend_00.png +0 -0
- data/spec/samples/expected/backend_00.svg +0 -78
- data/spec/samples/expected/backend_01.png +0 -0
- data/spec/samples/expected/backend_01.svg +0 -78
- data/spec/samples/expected/basic_00.png +0 -0
- data/spec/samples/expected/basic_01.png +0 -0
- data/spec/samples/expected/basic_02.png +0 -0
- data/spec/samples/expected/cairo_access_00.png +0 -0
- data/spec/samples/expected/cairo_access_01.png +0 -0
- data/spec/samples/expected/card_00.png +0 -0
- data/spec/samples/expected/card_01.png +0 -0
- data/spec/samples/expected/colors_00.png +0 -0
- data/spec/samples/expected/config_disable_text_00.png +0 -0
- data/spec/samples/expected/config_text_00.png +0 -0
- data/spec/samples/expected/custom-config_00.png +0 -0
- data/spec/samples/expected/embed_00.png +0 -0
- data/spec/samples/expected/embed_multisheet_00.png +0 -0
- data/spec/samples/expected/gitkeep.txt +0 -0
- data/spec/samples/expected/gradient_00.png +0 -0
- data/spec/samples/expected/hand.png +0 -0
- data/spec/samples/expected/hand_pretty.png +0 -0
- data/spec/samples/expected/landscape_00.png +0 -0
- data/spec/samples/expected/layout2_00.png +0 -0
- data/spec/samples/expected/layout_00.png +0 -0
- data/spec/samples/expected/layout_builtin_hand_00.png +0 -0
- data/spec/samples/expected/layout_builtin_playing_card_00.png +0 -0
- data/spec/samples/expected/load_images_00.png +0 -0
- data/spec/samples/expected/portrait_00.png +0 -0
- data/spec/samples/expected/ranges_00.png +0 -0
- data/spec/samples/expected/sample_csv_00.png +0 -0
- data/spec/samples/expected/sample_csv_01.png +0 -0
- data/spec/samples/expected/sample_excel_00.png +0 -0
- data/spec/samples/expected/sample_excel_01.png +0 -0
- data/spec/samples/expected/sample_excel_02.png +0 -0
- data/spec/samples/expected/save_sheet_00.png +0 -0
- data/spec/samples/expected/save_sheet_01.png +0 -0
- data/spec/samples/expected/save_sheet_range_00.png +0 -0
- data/spec/samples/expected/save_sheet_range_01.png +0 -0
- data/spec/samples/expected/save_single_sheet_00.png +0 -0
- data/spec/samples/expected/saves_notrim_01.png +0 -0
- data/spec/samples/expected/shape_00.png +0 -0
- data/spec/samples/expected/showcase.png +0 -0
- data/spec/samples/expected/showcase2.png +0 -0
- data/spec/samples/expected/showcase_individual_00.png +0 -0
- data/spec/samples/expected/showcase_individual_01.png +0 -0
- data/spec/samples/expected/showcase_individual_02.png +0 -0
- data/spec/samples/expected/showcase_individual_03.png +0 -0
- data/spec/samples/expected/text_00.png +0 -0
- data/spec/samples/expected/text_01.png +0 -0
- data/spec/samples/expected/text_02.png +0 -0
- data/spec/samples/expected/tgc_sample_00.png +0 -0
- data/spec/samples/expected/units_00.png +0 -0
- data/spec/samples/run_samples_spec.rb +0 -17
- data/spec/samples/samples_regression_spec.rb +0 -71
- data/spec/samples/sanity.html.erb +0 -28
- data/spec/samples/sanity.rb +0 -70
- data/spec/sanity/.gitignore +0 -1
- data/spec/sanity/sanity.html.erb +0 -42
- data/spec/sanity/sanity_test.rb +0 -42
- data/spec/sanity/tests.yml +0 -12
- data/spec/spec_helper.rb +0 -159
data/spec/args/sheet_spec.rb
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'squib/args/sheet'
|
3
|
-
|
4
|
-
describe Squib::Args::Sheet do
|
5
|
-
|
6
|
-
context 'dsl overrides' do
|
7
|
-
subject(:sheet) { Squib::Args::Sheet.new({}, { file: 'foo' }) }
|
8
|
-
|
9
|
-
it 'works when specified' do
|
10
|
-
sheet.load!({}) # go right to defaults
|
11
|
-
expect(sheet.file).to eq('foo') # dsl method default override
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
context 'rows and colums' do
|
17
|
-
subject(:sheet) { Squib::Args::Sheet.new({}, {}, 4) }
|
18
|
-
|
19
|
-
it 'does nothing on a perfect fit' do
|
20
|
-
opts = { columns: 2, rows: 2 }
|
21
|
-
sheet.load! opts
|
22
|
-
expect(sheet).to have_attributes(columns: 2, rows: 2)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'keeps both if specified' do
|
26
|
-
opts = { columns: 1, rows: 1 }
|
27
|
-
sheet.load! opts
|
28
|
-
expect(sheet).to have_attributes(columns: 1, rows: 1)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'computes properly on non-integer' do
|
32
|
-
opts = { columns: 1, rows: :infinite }
|
33
|
-
sheet.load! opts
|
34
|
-
expect(sheet).to have_attributes(columns: 1, rows: 4)
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'computes properly on unspecified rows' do
|
38
|
-
opts = { columns: 1 }
|
39
|
-
sheet.load! opts
|
40
|
-
expect(sheet).to have_attributes(columns: 1, rows: 4)
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'computes properly on unspecified, too-big column' do
|
44
|
-
opts = {}
|
45
|
-
sheet.load! opts
|
46
|
-
expect(sheet).to have_attributes(columns: 5, rows: 1)
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'fails on a non-integer column' do
|
50
|
-
opts = { columns: :infinite }
|
51
|
-
expect { sheet.load!(opts) }.to raise_error('columns must be an integer')
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
context 'crop marks' do
|
56
|
-
subject(:sheet) { Squib::Args::Sheet.new({}, {}, 4) }
|
57
|
-
|
58
|
-
it 'computes crop marks properly' do
|
59
|
-
opts = {
|
60
|
-
width: 1000,
|
61
|
-
height: 1100,
|
62
|
-
trim: 10,
|
63
|
-
crop_margin_top: 20,
|
64
|
-
crop_margin_left: 30,
|
65
|
-
crop_margin_right: 40,
|
66
|
-
crop_margin_bottom: 50,
|
67
|
-
}
|
68
|
-
expect(sheet.load!(opts).crop_coords(3,4, 300, 400)).to eq(
|
69
|
-
[ {:x1=>43, :y1=>0, :x2=>43, :y2=>74},
|
70
|
-
{:x1=>253, :y1=>0, :x2=>253, :y2=>74},
|
71
|
-
{:x1=>43, :y1=>1100, :x2=>43, :y2=>1026},
|
72
|
-
{:x1=>253, :y1=>1100, :x2=>253, :y2=>1026},
|
73
|
-
{:x1=>0, :y1=>34, :x2=>74, :y2=>34},
|
74
|
-
{:x1=>1000, :y1=>34, :x2=>926, :y2=>34},
|
75
|
-
{:x1=>0, :y1=>344, :x2=>74, :y2=>344},
|
76
|
-
{:x1=>1000, :y1=>344, :x2=>926, :y2=>344}]
|
77
|
-
)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'squib/args/showcase_special'
|
3
|
-
|
4
|
-
describe Squib::Args::ShowcaseSpecial do
|
5
|
-
subject(:showcase_special) { Squib::Args::ShowcaseSpecial.new }
|
6
|
-
|
7
|
-
context '#face_right?' do
|
8
|
-
it 'compares face to right' do
|
9
|
-
opts = { face: 'LEFT ' }
|
10
|
-
showcase_special.load! opts
|
11
|
-
expect(showcase_special.face_right?).to be false
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
data/spec/args/transform_spec.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'squib/args/transform'
|
3
|
-
|
4
|
-
describe Squib::Args::Box do
|
5
|
-
subject(:trans) { Squib::Args::Transform.new }
|
6
|
-
let(:expected_defaults) { { x: [0], y: [0], crop_width: [:native], crop_height: [:native] } }
|
7
|
-
|
8
|
-
context 'validation' do
|
9
|
-
it 'replaces with deck width and height' do
|
10
|
-
args = { crop_width: :deck, crop_height: :deck }
|
11
|
-
deck = OpenStruct.new(width: 123, height: 456)
|
12
|
-
trans = Squib::Args::Transform.new(deck)
|
13
|
-
trans.load!(args, expand_by: 1)
|
14
|
-
expect(trans).to have_attributes(crop_width: [123], crop_height: [456])
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'has radius override x_radius and y_radius' do
|
18
|
-
args = { crop_corner_x_radius: 1, crop_corner_y_radius: 2, crop_corner_radius: 3 }
|
19
|
-
trans.load!(args, expand_by: 2)
|
20
|
-
expect(trans).to have_attributes(crop_corner_x_radius: [3, 3], crop_corner_y_radius: [3, 3])
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'squib/args/typographer'
|
3
|
-
|
4
|
-
describe Squib::Args::Typographer do
|
5
|
-
subject(:t) { Squib::Args::Typographer.new }
|
6
|
-
|
7
|
-
it 'does nothing on a non-quoted string' do
|
8
|
-
expect(t.process(%{nothing})).to eq(%{nothing})
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'left quotes at the beginning' do
|
12
|
-
expect(t.process(%{"foo})).to eq(%{\u201Cfoo})
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'left quotes in the middle of the string' do
|
16
|
-
expect(t.process(%{hello "foo})).to eq(%{hello \u201Cfoo})
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'right quotes at the end' do
|
20
|
-
expect(t.process(%{foo"})).to eq(%{foo\u201D})
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'handles the entire string quoted' do
|
24
|
-
expect(t.process(%{"foo"})).to eq(%{\u201Cfoo\u201D})
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'quotes in the middle of the string' do
|
28
|
-
expect(t.process(%{hello "foo" world})).to eq(%{hello \u201Cfoo\u201D world})
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'single left quotes at the beginning' do
|
32
|
-
expect(t.process(%{'foo})).to eq(%{\u2018foo})
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'single right quotes at the end' do
|
36
|
-
expect(t.process(%{foo'})).to eq(%{foo\u2019})
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'single quotes in the middle' do
|
40
|
-
expect(t.process(%{a 'foo' bar})).to eq(%{a \u2018foo\u2019 bar})
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'handles apostraphes' do
|
44
|
-
expect(t.process(%{can't})).to eq(%{can\u2019t})
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'single quotes inside double quotes' do
|
48
|
-
expect(t.process(%{"'I can't do that', he said"})).to eq(%{\u201C\u2018I can\u2019t do that\u2019, he said\u201D})
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'replaces the straightforward ones' do
|
52
|
-
expect(t.process(%{``hi...'' -- ---})).to eq(%{\u201Chi\u2026\u201D \u2013 \u2014})
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'does nothing on lone quotes' do
|
56
|
-
expect(t.process(%{"})).to eq(%{"})
|
57
|
-
expect(t.process(%{'})).to eq(%{'})
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'ignores stuff in <tags>' do
|
61
|
-
expect(t.process(%{<span weight="bold">"can't"</span>})).to eq(%{<span weight="bold">\u201Ccan\u2019t\u201D</span>})
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
context 'configured' do
|
66
|
-
# TODO
|
67
|
-
end
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'squib/args/unit_conversion'
|
3
|
-
|
4
|
-
describe Squib::Args::UnitConversion do
|
5
|
-
|
6
|
-
it 'does nothing on just numbers' do
|
7
|
-
expect(subject.parse(20)).to eq(20)
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'strips trailing whitespace' do
|
11
|
-
expect(subject.parse('1in ')).to eq(300)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'is ok w/internal whitesapce' do
|
15
|
-
expect(subject.parse('1 in')).to eq(300)
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'does cm' do
|
19
|
-
expect(subject.parse('1cm')).to eq(118.1102361)
|
20
|
-
expect(subject.parse('1cm ')).to eq(118.1102361)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'does mm' do
|
24
|
-
expect(subject.parse('1mm')).to eq(11.81102361)
|
25
|
-
expect(subject.parse('1mm ')).to eq(11.81102361)
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
end
|
data/spec/card_spec.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'squib/card'
|
3
|
-
|
4
|
-
describe Squib::Card do
|
5
|
-
it 'logs fatal for unknown backend' do
|
6
|
-
deck = OpenStruct.new(dir: '.', prefix: '', count_format: '%02d', backend: 'broken robots')
|
7
|
-
|
8
|
-
expect(Squib::logger).to receive(:fatal).with("Back end not recognized: 'broken robots'")
|
9
|
-
expect { Squib::Card.new(deck, 100, 100, 0) }.to raise_error SystemExit
|
10
|
-
end
|
11
|
-
end
|
data/spec/commands/new_spec.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'squib'
|
3
|
-
|
4
|
-
describe Squib::Commands::New do
|
5
|
-
|
6
|
-
describe '#process' do
|
7
|
-
before(:all) do
|
8
|
-
@old_stderr = $stderr
|
9
|
-
$stderr = StringIO.new
|
10
|
-
@oldpwd = Dir.pwd
|
11
|
-
Dir.chdir(output_dir)
|
12
|
-
end
|
13
|
-
|
14
|
-
before(:each) do
|
15
|
-
FileUtils.rm_rf('foo', secure: true)
|
16
|
-
@cmd = Squib::Commands::New.new
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'raises an error if no directory was specified' do
|
20
|
-
expect{@cmd.process([])}.to raise_error(ArgumentError, 'Please specify a path.')
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'creates a new template on an fresh directory' do
|
24
|
-
@cmd.process(['foo'])
|
25
|
-
expect(File.exists?('foo/deck.rb')).to be true
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'creates a new template on an empty directory' do
|
29
|
-
Dir.mkdir('foo')
|
30
|
-
@cmd.process(['foo'])
|
31
|
-
expect(File.exists?('foo/deck.rb')).to be true
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'does not create a new template on an empty ' do
|
35
|
-
Dir.mkdir('foo')
|
36
|
-
File.new('foo/somefile.txt', 'w+')
|
37
|
-
@cmd.process(['foo'])
|
38
|
-
$stderr.rewind
|
39
|
-
expect($stderr.string.chomp).to end_with ' exists and is not empty. Doing nothing and quitting.'
|
40
|
-
end
|
41
|
-
|
42
|
-
after(:all) do
|
43
|
-
$stderr = @old_stderr
|
44
|
-
Dir.chdir(@oldpwd)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
data/spec/conf_spec.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'squib'
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe Squib::Conf do
|
5
|
-
|
6
|
-
it 'parses the project template file just fine' do
|
7
|
-
conf = Squib::Conf.load project_template('config.yml')
|
8
|
-
expect(conf.backend).to eq(Squib::Conf::DEFAULTS['backend'])
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'parses an empty file' do
|
12
|
-
conf = Squib::Conf.load conf('empty.yml')
|
13
|
-
expect(conf.backend).to eq(Squib::Conf::DEFAULTS['backend'])
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'parses the sample custom config' do
|
17
|
-
conf = Squib::Conf.load sample_file('custom-config.yml')
|
18
|
-
expect(conf.progress_bars).to be true
|
19
|
-
expect(conf.text_hint).to eq '#FF0000'
|
20
|
-
expect(conf.custom_colors).to eq({ 'foo' => '#ccc' })
|
21
|
-
expect(conf.img_dir).to eq 'customconfig-imgdir'
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'normalizes antialias automatically' do
|
25
|
-
expect(Squib::Conf::DEFAULTS['antialias']).to eq 'best'
|
26
|
-
expect(Squib::Conf.new.antialias).to eq 'subpixel'
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'warns when the yml has an unrecognized option' do
|
30
|
-
expect(Squib::logger).to receive(:warn).with('Unrecognized configuration option(s): unicorns')
|
31
|
-
Squib::Conf.load conf('unrecognized.yml')
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'helps Andy get full coverage with a test on to_s' do
|
35
|
-
conf = Squib::Conf.load conf('empty.yml')
|
36
|
-
expect(conf.to_s).to start_with 'Conf: '
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'allows Squib.configure to override yml' do
|
40
|
-
Squib.configure img_dir: 'color'
|
41
|
-
c = Squib::Conf.load conf('basic.yml')
|
42
|
-
expect(c.img_dir).to eq 'color'
|
43
|
-
# reset our state to be nice
|
44
|
-
Squib::USER_CONFIG.clear
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
data/spec/data/conf/basic.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
img_dir: bw
|
data/spec/data/conf/empty.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# Intentionally empty
|
data/spec/data/csv/basic.csv
DELETED
data/spec/data/csv/dup_cols.csv
DELETED
data/spec/data/csv/newline.csv
DELETED
data/spec/data/csv/qty.csv
DELETED
data/spec/data/csv/qty_named.csv
DELETED
data/spec/data/csv/yield.csv
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
empty: #no rules actually set
|
data/spec/data/layouts/empty.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# testing for an empty yaml file here
|