squib 0.18.0 → 0.19.0a
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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +39 -39
- data/.github/ISSUE_TEMPLATE/feature_request.md +22 -22
- data/.github/ISSUE_TEMPLATE/help-wanted.md +13 -13
- data/.github/ISSUE_TEMPLATE/release-todo.md +45 -33
- data/.github/PULL_REQUEST_TEMPLATE.md +13 -13
- data/.github/workflows/tests.yml +22 -22
- data/.gitignore +41 -41
- data/.vscode/settings.json +4 -3
- data/CHANGELOG.md +460 -460
- data/CONTRIBUTING.md +40 -40
- data/Dockerfile +27 -27
- data/Gemfile +2 -2
- data/Guardfile +8 -8
- data/LICENSE.txt +22 -22
- data/README.md +139 -139
- data/Rakefile +51 -51
- data/bin/squib +5 -5
- data/lib/squib/api/settings.rb +21 -21
- data/lib/squib/args/arg_loader.rb +138 -138
- data/lib/squib/args/box.rb +59 -59
- data/lib/squib/args/card_range.rb +34 -34
- data/lib/squib/args/color_validator.rb +7 -7
- data/lib/squib/args/coords.rb +49 -49
- data/lib/squib/args/csv_opts.rb +22 -22
- data/lib/squib/args/dir_validator.rb +11 -11
- data/lib/squib/args/draw.rb +93 -93
- data/lib/squib/args/drop_shadow.rb +39 -39
- data/lib/squib/args/embed_adjust.rb +22 -22
- data/lib/squib/args/embed_key.rb +12 -12
- data/lib/squib/args/hand_special.rb +37 -37
- data/lib/squib/args/import.rb +67 -67
- data/lib/squib/args/input_file.rb +55 -55
- data/lib/squib/args/paint.rb +43 -43
- data/lib/squib/args/paragraph.rb +118 -118
- data/lib/squib/args/save_batch.rb +65 -65
- data/lib/squib/args/scale_box.rb +57 -57
- data/lib/squib/args/sheet.rb +165 -165
- data/lib/squib/args/showcase_special.rb +41 -41
- data/lib/squib/args/sprue_file.rb +44 -44
- data/lib/squib/args/svg_special.rb +37 -37
- data/lib/squib/args/transform.rb +55 -55
- data/lib/squib/args/typographer.rb +115 -115
- data/lib/squib/args/unit_conversion.rb +27 -27
- data/lib/squib/args/xywh_shorthands.rb +50 -50
- data/lib/squib/builtin/layouts/economy.yml +85 -85
- data/lib/squib/builtin/layouts/fantasy.yml +101 -101
- data/lib/squib/builtin/layouts/hand.yml +62 -62
- data/lib/squib/builtin/layouts/party.yml +94 -94
- data/lib/squib/builtin/layouts/playing-card.yml +35 -35
- data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
- data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
- data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
- data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
- data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
- data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
- data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
- data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
- data/lib/squib/builtin/projects/advanced/config.yml +49 -49
- data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
- data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
- data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
- data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
- data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
- data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
- data/lib/squib/builtin/projects/basic/.gitignore +4 -4
- data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
- data/lib/squib/builtin/projects/basic/Gemfile +3 -3
- data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
- data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
- data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
- data/lib/squib/builtin/projects/basic/RULES.md +21 -21
- data/lib/squib/builtin/projects/basic/Rakefile +7 -7
- data/lib/squib/builtin/projects/basic/config.yml +50 -50
- data/lib/squib/builtin/projects/basic/deck.rb +6 -6
- data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
- data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
- data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
- data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
- data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
- data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
- data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
- data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
- data/lib/squib/card.rb +75 -75
- data/lib/squib/commands/cli.rb +39 -39
- data/lib/squib/commands/data/template_option.rb +109 -109
- data/lib/squib/commands/make_sprue.rb +277 -277
- data/lib/squib/commands/new.rb +77 -77
- data/lib/squib/conf.rb +149 -149
- data/lib/squib/constants.rb +17 -17
- data/lib/squib/deck.rb +138 -138
- data/lib/squib/dsl/background.rb +35 -35
- data/lib/squib/dsl/circle.rb +39 -39
- data/lib/squib/dsl/csv.rb +42 -42
- data/lib/squib/dsl/curve.rb +35 -35
- data/lib/squib/dsl/cut_zone.rb +47 -47
- data/lib/squib/dsl/ellipse.rb +37 -37
- data/lib/squib/dsl/grid.rb +35 -35
- data/lib/squib/dsl/groups.rb +54 -54
- data/lib/squib/dsl/hand.rb +42 -42
- data/lib/squib/dsl/line.rb +35 -35
- data/lib/squib/dsl/png.rb +57 -57
- data/lib/squib/dsl/polygon.rb +36 -36
- data/lib/squib/dsl/rect.rb +37 -37
- data/lib/squib/dsl/safe_zone.rb +48 -48
- data/lib/squib/dsl/save.rb +21 -21
- data/lib/squib/dsl/save_pdf.rb +50 -50
- data/lib/squib/dsl/save_png.rb +48 -48
- data/lib/squib/dsl/save_sheet.rb +53 -53
- data/lib/squib/dsl/showcase.rb +43 -43
- data/lib/squib/dsl/star.rb +37 -37
- data/lib/squib/dsl/svg.rb +63 -63
- data/lib/squib/dsl/text.rb +54 -54
- data/lib/squib/dsl/text_embed.rb +79 -79
- data/lib/squib/dsl/triangle.rb +35 -35
- data/lib/squib/dsl/units.rb +37 -37
- data/lib/squib/dsl/xlsx.rb +40 -40
- data/lib/squib/dsl/yaml.rb +40 -40
- data/lib/squib/errors_warnings/warn_unexpected_params.rb +14 -14
- data/lib/squib/graphics/background.rb +14 -14
- data/lib/squib/graphics/cairo_context_wrapper.rb +115 -115
- data/lib/squib/graphics/embedding_utils.rb +28 -28
- data/lib/squib/graphics/gradient_regex.rb +47 -47
- data/lib/squib/graphics/hand.rb +42 -42
- data/lib/squib/graphics/image.rb +123 -123
- data/lib/squib/graphics/save_doc.rb +77 -77
- data/lib/squib/graphics/save_images.rb +91 -91
- data/lib/squib/graphics/save_pdf.rb +90 -90
- data/lib/squib/graphics/save_sprue.rb +231 -231
- data/lib/squib/graphics/shapes.rb +143 -143
- data/lib/squib/graphics/showcase.rb +85 -85
- data/lib/squib/graphics/text.rb +202 -202
- data/lib/squib/import/csv_importer.rb +45 -45
- data/lib/squib/import/data_frame.rb +108 -108
- data/lib/squib/import/quantity_exploder.rb +17 -17
- data/lib/squib/import/xlsx_importer.rb +28 -28
- data/lib/squib/import/yaml_importer.rb +30 -30
- data/lib/squib/layout_parser.rb +155 -155
- data/lib/squib/progress.rb +38 -38
- data/lib/squib/sample_helpers.rb +34 -34
- data/lib/squib/sprues/crop_line.rb +28 -28
- data/lib/squib/sprues/crop_line_dash.rb +35 -35
- data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
- data/lib/squib/sprues/sprue.rb +208 -208
- data/lib/squib/sprues/sprue_schema.rb +51 -51
- data/lib/squib/system_fonts.rb +16 -16
- data/lib/squib/version.rb +11 -11
- data/lib/squib.rb +35 -35
- data/samples/autoscale_font/_autoscale_font.rb +98 -98
- data/samples/backend/_backend.rb +26 -26
- data/samples/basic.rb +19 -19
- data/samples/build_groups/build_groups.rb +36 -36
- data/samples/colors/_colors.rb +44 -44
- data/samples/colors/_gradients.rb +34 -34
- data/samples/colors/_switch_color.rb +33 -33
- data/samples/config/config_text_markup.rb +20 -20
- data/samples/config/custom_config.rb +18 -18
- data/samples/data/_csv.rb +33 -33
- data/samples/data/_excel.rb +55 -55
- data/samples/data/_yaml.rb +12 -12
- data/samples/hello_world.rb +6 -6
- data/samples/images/_cairo_access.rb +39 -39
- data/samples/images/_images.rb +104 -104
- data/samples/images/_more_load_images.rb +102 -102
- data/samples/images/_placeholders.rb +48 -48
- data/samples/intro/01_hello.rb +8 -8
- data/samples/intro/02_options.rb +14 -14
- data/samples/intro/03_layout.rb +11 -11
- data/samples/intro/04_arrays.rb +15 -15
- data/samples/intro/05_excel.rb +14 -14
- data/samples/layouts/builtin_layouts.rb +97 -97
- data/samples/layouts/layouts.rb +71 -71
- data/samples/project/src/characters.rb +8 -8
- data/samples/project/src/skills.rb +7 -7
- data/samples/proofs/_tgc_proofs.rb +16 -16
- data/samples/ranges/_ranges.rb +64 -64
- data/samples/saves/_hand.rb +23 -23
- data/samples/saves/_portrait_landscape.rb +23 -23
- data/samples/saves/_save_filenames.rb +28 -28
- data/samples/saves/_save_pdf.rb +29 -29
- data/samples/saves/_saves.rb +75 -75
- data/samples/saves/_showcase.rb +25 -25
- data/samples/shadows/_shadow.rb +71 -71
- data/samples/shapes/_draw_shapes.rb +60 -60
- data/samples/shapes/_proofs.rb +22 -22
- data/samples/sprues/_advanced_sprues.rb +25 -25
- data/samples/sprues/_builtin_sprues.rb +22 -22
- data/samples/sprues/_fold_sheet.rb +30 -30
- data/samples/sprues/_hex_tiles.rb +15 -15
- data/samples/sprues/_mints.rb +11 -11
- data/samples/sprues/_negative_coords.rb +6 -6
- data/samples/sprues/_sprue_example.rb +11 -11
- data/samples/system_font_debug/_list_fonts.rb +14 -14
- data/samples/text/_embed_text.rb +128 -128
- data/samples/text/_text.rb +52 -52
- data/samples/text/_text_options.rb +103 -103
- data/samples/text/bug134.rb +14 -14
- data/samples/units/_cells.rb +50 -50
- data/samples/units/_shorthands.rb +48 -48
- data/samples/units/_units.rb +39 -39
- data/squib.gemspec +58 -58
- metadata +21 -21
data/lib/squib/args/draw.rb
CHANGED
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
require 'cairo'
|
|
2
|
-
require_relative 'arg_loader'
|
|
3
|
-
require_relative 'color_validator'
|
|
4
|
-
|
|
5
|
-
module Squib::Args
|
|
6
|
-
|
|
7
|
-
module_function def extract_draw(opts, deck, dsl_method_defaults = {})
|
|
8
|
-
Draw.new(deck.custom_colors, dsl_method_defaults).extract!(opts, deck)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
class Draw
|
|
12
|
-
include ArgLoader
|
|
13
|
-
include ColorValidator
|
|
14
|
-
|
|
15
|
-
def initialize(custom_colors, dsl_method_defaults = {})
|
|
16
|
-
@custom_colors = custom_colors
|
|
17
|
-
@dsl_method_defaults = dsl_method_defaults
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def self.parameters
|
|
21
|
-
{ color: :black,
|
|
22
|
-
fill_color: '#0000',
|
|
23
|
-
stroke_color: :black,
|
|
24
|
-
stroke_width: 2.0,
|
|
25
|
-
stroke_strategy: :fill_first,
|
|
26
|
-
join: :miter,
|
|
27
|
-
cap: 'butt',
|
|
28
|
-
dash: ''
|
|
29
|
-
}
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.expanding_parameters
|
|
33
|
-
parameters.keys # all of them are expandable
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def self.params_with_units
|
|
37
|
-
[:stroke_width]
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def validate_join(arg, _i)
|
|
41
|
-
case arg.to_s.strip.downcase
|
|
42
|
-
when 'miter'
|
|
43
|
-
Cairo::LINE_JOIN_MITER
|
|
44
|
-
when 'round'
|
|
45
|
-
Cairo::LINE_JOIN_ROUND
|
|
46
|
-
when 'bevel'
|
|
47
|
-
Cairo::LINE_JOIN_BEVEL
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def validate_cap(arg, _i)
|
|
52
|
-
case arg.to_s.strip.downcase
|
|
53
|
-
when 'butt'
|
|
54
|
-
Cairo::LINE_CAP_BUTT
|
|
55
|
-
when 'round'
|
|
56
|
-
Cairo::LINE_CAP_ROUND
|
|
57
|
-
when 'square'
|
|
58
|
-
Cairo::LINE_CAP_SQUARE
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def validate_dash(arg, _i)
|
|
63
|
-
arg.to_s.split.collect do |x|
|
|
64
|
-
UnitConversion.parse(x, @dpi, @cell_px).to_f
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def validate_fill_color(arg, _i)
|
|
69
|
-
colorify(arg, @custom_colors)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def validate_stroke_color(arg, _i)
|
|
73
|
-
colorify(arg, @custom_colors)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def validate_color(arg, _i)
|
|
77
|
-
colorify(arg, @custom_colors)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def validate_stroke_strategy(arg, _i)
|
|
81
|
-
case arg.to_s.downcase.strip
|
|
82
|
-
when 'fill_first'
|
|
83
|
-
:fill_first
|
|
84
|
-
when 'stroke_first'
|
|
85
|
-
:stroke_first
|
|
86
|
-
else
|
|
87
|
-
raise "Only 'stroke_first' or 'fill_first' allowed"
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
end
|
|
1
|
+
require 'cairo'
|
|
2
|
+
require_relative 'arg_loader'
|
|
3
|
+
require_relative 'color_validator'
|
|
4
|
+
|
|
5
|
+
module Squib::Args
|
|
6
|
+
|
|
7
|
+
module_function def extract_draw(opts, deck, dsl_method_defaults = {})
|
|
8
|
+
Draw.new(deck.custom_colors, dsl_method_defaults).extract!(opts, deck)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Draw
|
|
12
|
+
include ArgLoader
|
|
13
|
+
include ColorValidator
|
|
14
|
+
|
|
15
|
+
def initialize(custom_colors, dsl_method_defaults = {})
|
|
16
|
+
@custom_colors = custom_colors
|
|
17
|
+
@dsl_method_defaults = dsl_method_defaults
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.parameters
|
|
21
|
+
{ color: :black,
|
|
22
|
+
fill_color: '#0000',
|
|
23
|
+
stroke_color: :black,
|
|
24
|
+
stroke_width: 2.0,
|
|
25
|
+
stroke_strategy: :fill_first,
|
|
26
|
+
join: :miter,
|
|
27
|
+
cap: 'butt',
|
|
28
|
+
dash: ''
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.expanding_parameters
|
|
33
|
+
parameters.keys # all of them are expandable
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.params_with_units
|
|
37
|
+
[:stroke_width]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def validate_join(arg, _i)
|
|
41
|
+
case arg.to_s.strip.downcase
|
|
42
|
+
when 'miter'
|
|
43
|
+
Cairo::LINE_JOIN_MITER
|
|
44
|
+
when 'round'
|
|
45
|
+
Cairo::LINE_JOIN_ROUND
|
|
46
|
+
when 'bevel'
|
|
47
|
+
Cairo::LINE_JOIN_BEVEL
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def validate_cap(arg, _i)
|
|
52
|
+
case arg.to_s.strip.downcase
|
|
53
|
+
when 'butt'
|
|
54
|
+
Cairo::LINE_CAP_BUTT
|
|
55
|
+
when 'round'
|
|
56
|
+
Cairo::LINE_CAP_ROUND
|
|
57
|
+
when 'square'
|
|
58
|
+
Cairo::LINE_CAP_SQUARE
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def validate_dash(arg, _i)
|
|
63
|
+
arg.to_s.split.collect do |x|
|
|
64
|
+
UnitConversion.parse(x, @dpi, @cell_px).to_f
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def validate_fill_color(arg, _i)
|
|
69
|
+
colorify(arg, @custom_colors)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def validate_stroke_color(arg, _i)
|
|
73
|
+
colorify(arg, @custom_colors)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def validate_color(arg, _i)
|
|
77
|
+
colorify(arg, @custom_colors)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def validate_stroke_strategy(arg, _i)
|
|
81
|
+
case arg.to_s.downcase.strip
|
|
82
|
+
when 'fill_first'
|
|
83
|
+
:fill_first
|
|
84
|
+
when 'stroke_first'
|
|
85
|
+
:stroke_first
|
|
86
|
+
else
|
|
87
|
+
raise "Only 'stroke_first' or 'fill_first' allowed"
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
require_relative 'color_validator'
|
|
2
|
-
|
|
3
|
-
module Squib::Args
|
|
4
|
-
module_function def extract_drop_shadow(opts, deck)
|
|
5
|
-
DropShadow.new(deck.custom_colors).extract! opts, deck
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
class DropShadow
|
|
9
|
-
include ArgLoader
|
|
10
|
-
include ColorValidator
|
|
11
|
-
|
|
12
|
-
def initialize(custom_colors)
|
|
13
|
-
@custom_colors = custom_colors
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def self.parameters
|
|
17
|
-
{
|
|
18
|
-
shadow_color: :black,
|
|
19
|
-
shadow_offset_x: 3,
|
|
20
|
-
shadow_offset_y: 3,
|
|
21
|
-
shadow_radius: nil,
|
|
22
|
-
shadow_trim: 0,
|
|
23
|
-
}
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.expanding_parameters
|
|
27
|
-
self.parameters.keys # all of them
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def self.params_with_units
|
|
31
|
-
[:shadow_offset_x, :shadow_offset_y, :shadow_radius, :shadow_trim]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def validate_shadow_color(arg, _i)
|
|
35
|
-
colorify(arg, @custom_colors)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
end
|
|
1
|
+
require_relative 'color_validator'
|
|
2
|
+
|
|
3
|
+
module Squib::Args
|
|
4
|
+
module_function def extract_drop_shadow(opts, deck)
|
|
5
|
+
DropShadow.new(deck.custom_colors).extract! opts, deck
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class DropShadow
|
|
9
|
+
include ArgLoader
|
|
10
|
+
include ColorValidator
|
|
11
|
+
|
|
12
|
+
def initialize(custom_colors)
|
|
13
|
+
@custom_colors = custom_colors
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.parameters
|
|
17
|
+
{
|
|
18
|
+
shadow_color: :black,
|
|
19
|
+
shadow_offset_x: 3,
|
|
20
|
+
shadow_offset_y: 3,
|
|
21
|
+
shadow_radius: nil,
|
|
22
|
+
shadow_trim: 0,
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.expanding_parameters
|
|
27
|
+
self.parameters.keys # all of them
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.params_with_units
|
|
31
|
+
[:shadow_offset_x, :shadow_offset_y, :shadow_radius, :shadow_trim]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def validate_shadow_color(arg, _i)
|
|
35
|
+
colorify(arg, @custom_colors)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
require_relative 'arg_loader'
|
|
2
|
-
|
|
3
|
-
module Squib::Args
|
|
4
|
-
|
|
5
|
-
class EmbedAdjust
|
|
6
|
-
include ArgLoader
|
|
7
|
-
|
|
8
|
-
def self.parameters
|
|
9
|
-
{ dx: 0, dy: 0 }
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def self.expanding_parameters
|
|
13
|
-
parameters.keys # all of them
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def self.params_with_units
|
|
17
|
-
parameters.keys # all of them
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
end
|
|
1
|
+
require_relative 'arg_loader'
|
|
2
|
+
|
|
3
|
+
module Squib::Args
|
|
4
|
+
|
|
5
|
+
class EmbedAdjust
|
|
6
|
+
include ArgLoader
|
|
7
|
+
|
|
8
|
+
def self.parameters
|
|
9
|
+
{ dx: 0, dy: 0 }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.expanding_parameters
|
|
13
|
+
parameters.keys # all of them
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.params_with_units
|
|
17
|
+
parameters.keys # all of them
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
data/lib/squib/args/embed_key.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require_relative 'arg_loader'
|
|
2
|
-
|
|
3
|
-
module Squib::Args
|
|
4
|
-
class EmbedKey
|
|
5
|
-
|
|
6
|
-
# Validate the embed lookup key
|
|
7
|
-
def validate_key(str)
|
|
8
|
-
str.to_s
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
end
|
|
1
|
+
require_relative 'arg_loader'
|
|
2
|
+
|
|
3
|
+
module Squib::Args
|
|
4
|
+
class EmbedKey
|
|
5
|
+
|
|
6
|
+
# Validate the embed lookup key
|
|
7
|
+
def validate_key(str)
|
|
8
|
+
str.to_s
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
require 'cairo'
|
|
2
|
-
|
|
3
|
-
module Squib::Args
|
|
4
|
-
module_function def extract_hand_special(opts, deck)
|
|
5
|
-
HandSpecial.new(deck.height).extract! opts, deck
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
class HandSpecial
|
|
9
|
-
include ArgLoader
|
|
10
|
-
|
|
11
|
-
def initialize(card_height)
|
|
12
|
-
@card_height = card_height
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def self.parameters
|
|
16
|
-
{
|
|
17
|
-
angle_range: (Math::PI / -4.0)..(Math::PI / 4),
|
|
18
|
-
radius: :auto
|
|
19
|
-
}
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def self.expanding_parameters
|
|
23
|
-
[] # none of them
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.params_with_units
|
|
27
|
-
[ :radius ]
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def validate_radius(arg)
|
|
31
|
-
return 0.3 * @card_height if arg.to_s.downcase.strip == 'auto'
|
|
32
|
-
arg
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
1
|
+
require 'cairo'
|
|
2
|
+
|
|
3
|
+
module Squib::Args
|
|
4
|
+
module_function def extract_hand_special(opts, deck)
|
|
5
|
+
HandSpecial.new(deck.height).extract! opts, deck
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class HandSpecial
|
|
9
|
+
include ArgLoader
|
|
10
|
+
|
|
11
|
+
def initialize(card_height)
|
|
12
|
+
@card_height = card_height
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.parameters
|
|
16
|
+
{
|
|
17
|
+
angle_range: (Math::PI / -4.0)..(Math::PI / 4),
|
|
18
|
+
radius: :auto
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.expanding_parameters
|
|
23
|
+
[] # none of them
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.params_with_units
|
|
27
|
+
[ :radius ]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def validate_radius(arg)
|
|
31
|
+
return 0.3 * @card_height if arg.to_s.downcase.strip == 'auto'
|
|
32
|
+
arg
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
data/lib/squib/args/import.rb
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
module Squib::Args
|
|
2
|
-
module_function def extract_import(opts)
|
|
3
|
-
# note how we don't use ArgLoader here because it's way more complex than
|
|
4
|
-
# what we need here. Don't need layouts or singleton expansion, so...
|
|
5
|
-
# ...let's just do it ourselves.
|
|
6
|
-
Import.parameters.each { |p, value| opts[p] = value unless opts.key? p }
|
|
7
|
-
return Import.new.load! opts
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
class Import
|
|
11
|
-
|
|
12
|
-
def self.parameters
|
|
13
|
-
{
|
|
14
|
-
data: nil,
|
|
15
|
-
explode: 'qty',
|
|
16
|
-
file: nil,
|
|
17
|
-
sheet: 0,
|
|
18
|
-
strip: true,
|
|
19
|
-
}
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
attr_accessor *(self.parameters.keys)
|
|
23
|
-
|
|
24
|
-
def self.expanding_parameters
|
|
25
|
-
[] # none of them
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def self.params_with_units
|
|
29
|
-
[] # none of them
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def load!(opts)
|
|
33
|
-
@strip = validate_strip opts[:strip]
|
|
34
|
-
@explode = validate_explode opts[:explode]
|
|
35
|
-
@file = validate_file opts[:file]
|
|
36
|
-
@data = validate_data opts[:data]
|
|
37
|
-
@sheet = opts[:sheet]
|
|
38
|
-
return self
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def validate_strip(arg)
|
|
42
|
-
raise 'Strip must be true or false' unless arg == true || arg == false
|
|
43
|
-
arg
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def validate_explode(arg)
|
|
47
|
-
arg.to_s
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def validate_file(arg)
|
|
51
|
-
return nil if arg.nil?
|
|
52
|
-
raise "File #{File.expand_path(arg)} does not exist!" unless File.
|
|
53
|
-
File.expand_path(arg)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def strip?
|
|
57
|
-
strip
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def validate_data(arg)
|
|
61
|
-
return nil if arg.nil?
|
|
62
|
-
arg.to_s
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
end
|
|
1
|
+
module Squib::Args
|
|
2
|
+
module_function def extract_import(opts)
|
|
3
|
+
# note how we don't use ArgLoader here because it's way more complex than
|
|
4
|
+
# what we need here. Don't need layouts or singleton expansion, so...
|
|
5
|
+
# ...let's just do it ourselves.
|
|
6
|
+
Import.parameters.each { |p, value| opts[p] = value unless opts.key? p }
|
|
7
|
+
return Import.new.load! opts
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class Import
|
|
11
|
+
|
|
12
|
+
def self.parameters
|
|
13
|
+
{
|
|
14
|
+
data: nil,
|
|
15
|
+
explode: 'qty',
|
|
16
|
+
file: nil,
|
|
17
|
+
sheet: 0,
|
|
18
|
+
strip: true,
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attr_accessor *(self.parameters.keys)
|
|
23
|
+
|
|
24
|
+
def self.expanding_parameters
|
|
25
|
+
[] # none of them
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.params_with_units
|
|
29
|
+
[] # none of them
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def load!(opts)
|
|
33
|
+
@strip = validate_strip opts[:strip]
|
|
34
|
+
@explode = validate_explode opts[:explode]
|
|
35
|
+
@file = validate_file opts[:file]
|
|
36
|
+
@data = validate_data opts[:data]
|
|
37
|
+
@sheet = opts[:sheet]
|
|
38
|
+
return self
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def validate_strip(arg)
|
|
42
|
+
raise 'Strip must be true or false' unless arg == true || arg == false
|
|
43
|
+
arg
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def validate_explode(arg)
|
|
47
|
+
arg.to_s
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def validate_file(arg)
|
|
51
|
+
return nil if arg.nil?
|
|
52
|
+
raise "File #{File.expand_path(arg)} does not exist!" unless File.exist?(arg)
|
|
53
|
+
File.expand_path(arg)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def strip?
|
|
57
|
+
strip
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def validate_data(arg)
|
|
61
|
+
return nil if arg.nil?
|
|
62
|
+
arg.to_s
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
require_relative 'arg_loader'
|
|
2
|
-
|
|
3
|
-
module Squib::Args
|
|
4
|
-
module_function def extract_input_file(opts, deck, dsl_method_default = {})
|
|
5
|
-
InputFile.new(dsl_method_default).extract!(opts, deck)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
class InputFile
|
|
9
|
-
include ArgLoader
|
|
10
|
-
|
|
11
|
-
def initialize(dsl_method_default = {})
|
|
12
|
-
@dsl_method_default = dsl_method_default
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def self.parameters
|
|
16
|
-
{
|
|
17
|
-
file: nil,
|
|
18
|
-
placeholder: nil
|
|
19
|
-
}
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def self.expanding_parameters
|
|
23
|
-
parameters.keys # all of them
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.params_with_units
|
|
27
|
-
[] # none of them
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def validate_file(arg, i)
|
|
31
|
-
return nil if arg.nil?
|
|
32
|
-
return File.expand_path(arg) if File.
|
|
33
|
-
return File.expand_path(placeholder[i]) if File.
|
|
34
|
-
|
|
35
|
-
case deck_conf.img_missing.to_sym
|
|
36
|
-
when :error
|
|
37
|
-
raise "File #{File.expand_path(arg)} does not exist!"
|
|
38
|
-
when :warn
|
|
39
|
-
Squib.logger.warn "File #{File.expand_path(arg)} does not exist!"
|
|
40
|
-
end
|
|
41
|
-
return nil # the silent option - as if nil in the first place
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def validate_placeholder(arg, _i)
|
|
45
|
-
# What if they specify placeholder, but it doesn't exist?
|
|
46
|
-
# ...always warn... that's probably a mistake they made
|
|
47
|
-
unless arg.nil? || File.
|
|
48
|
-
msg = "Image placeholder #{File.expand_path(arg)} does not exist!"
|
|
49
|
-
Squib.logger.warn msg
|
|
50
|
-
return nil
|
|
51
|
-
end
|
|
52
|
-
return arg
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
1
|
+
require_relative 'arg_loader'
|
|
2
|
+
|
|
3
|
+
module Squib::Args
|
|
4
|
+
module_function def extract_input_file(opts, deck, dsl_method_default = {})
|
|
5
|
+
InputFile.new(dsl_method_default).extract!(opts, deck)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class InputFile
|
|
9
|
+
include ArgLoader
|
|
10
|
+
|
|
11
|
+
def initialize(dsl_method_default = {})
|
|
12
|
+
@dsl_method_default = dsl_method_default
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.parameters
|
|
16
|
+
{
|
|
17
|
+
file: nil,
|
|
18
|
+
placeholder: nil
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.expanding_parameters
|
|
23
|
+
parameters.keys # all of them
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.params_with_units
|
|
27
|
+
[] # none of them
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def validate_file(arg, i)
|
|
31
|
+
return nil if arg.nil?
|
|
32
|
+
return File.expand_path(arg) if File.exist?(arg)
|
|
33
|
+
return File.expand_path(placeholder[i]) if File.exist?(placeholder[i].to_s)
|
|
34
|
+
|
|
35
|
+
case deck_conf.img_missing.to_sym
|
|
36
|
+
when :error
|
|
37
|
+
raise "File #{File.expand_path(arg)} does not exist!"
|
|
38
|
+
when :warn
|
|
39
|
+
Squib.logger.warn "File #{File.expand_path(arg)} does not exist!"
|
|
40
|
+
end
|
|
41
|
+
return nil # the silent option - as if nil in the first place
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def validate_placeholder(arg, _i)
|
|
45
|
+
# What if they specify placeholder, but it doesn't exist?
|
|
46
|
+
# ...always warn... that's probably a mistake they made
|
|
47
|
+
unless arg.nil? || File.exist?(arg)
|
|
48
|
+
msg = "Image placeholder #{File.expand_path(arg)} does not exist!"
|
|
49
|
+
Squib.logger.warn msg
|
|
50
|
+
return nil
|
|
51
|
+
end
|
|
52
|
+
return arg
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|