squib 0.15.3 → 0.16.0.pre.preview1
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/workflows/tests.yml +22 -0
 - data/CHANGELOG.md +22 -0
 - data/Dockerfile +18 -16
 - data/Guardfile +8 -0
 - data/README.md +3 -9
 - data/RELEASE TODO.md +1 -0
 - data/Rakefile +3 -0
 - data/lib/squib.rb +3 -1
 - data/lib/squib/args/arg_loader.rb +109 -106
 - data/lib/squib/args/box.rb +52 -48
 - data/lib/squib/args/card_range.rb +26 -24
 - data/lib/squib/args/color_validator.rb +4 -9
 - data/lib/squib/args/coords.rb +39 -25
 - data/lib/squib/args/csv_opts.rb +13 -16
 - data/lib/squib/args/dir_validator.rb +7 -12
 - data/lib/squib/args/draw.rb +69 -68
 - data/lib/squib/args/embed_adjust.rb +12 -15
 - data/lib/squib/args/embed_key.rb +6 -11
 - data/lib/squib/args/hand_special.rb +25 -25
 - data/lib/squib/args/import.rb +54 -27
 - data/lib/squib/args/input_file.rb +22 -26
 - data/lib/squib/args/paint.rb +30 -31
 - data/lib/squib/args/paragraph.rb +95 -93
 - data/lib/squib/args/save_batch.rb +50 -48
 - data/lib/squib/args/scale_box.rb +43 -39
 - data/lib/squib/args/sheet.rb +147 -149
 - data/lib/squib/args/showcase_special.rb +32 -32
 - data/lib/squib/args/sprue_file.rb +30 -30
 - data/lib/squib/args/svg_special.rb +26 -26
 - data/lib/squib/args/transform.rb +48 -54
 - data/lib/squib/args/typographer.rb +88 -92
 - data/lib/squib/args/unit_conversion.rb +6 -8
 - data/lib/squib/args/xywh_shorthands.rb +56 -0
 - data/lib/squib/builtin/projects/advanced/config.yml +4 -3
 - data/lib/squib/builtin/projects/basic/config.yml +4 -3
 - data/lib/squib/conf.rb +5 -0
 - data/lib/squib/deck.rb +34 -12
 - data/lib/squib/dsl/background.rb +35 -0
 - data/lib/squib/dsl/circle.rb +39 -0
 - data/lib/squib/dsl/csv.rb +42 -0
 - data/lib/squib/dsl/curve.rb +35 -0
 - data/lib/squib/dsl/cut_zone.rb +47 -0
 - data/lib/squib/dsl/ellipse.rb +37 -0
 - data/lib/squib/dsl/grid.rb +35 -0
 - data/lib/squib/{api → dsl}/groups.rb +0 -0
 - data/lib/squib/dsl/hand.rb +42 -0
 - data/lib/squib/dsl/line.rb +35 -0
 - data/lib/squib/dsl/png.rb +56 -0
 - data/lib/squib/dsl/polygon.rb +36 -0
 - data/lib/squib/dsl/rect.rb +37 -0
 - data/lib/squib/dsl/safe_zone.rb +48 -0
 - data/lib/squib/dsl/save.rb +21 -0
 - data/lib/squib/dsl/save_pdf.rb +50 -0
 - data/lib/squib/dsl/save_png.rb +47 -0
 - data/lib/squib/dsl/save_sheet.rb +53 -0
 - data/lib/squib/dsl/showcase.rb +43 -0
 - data/lib/squib/dsl/star.rb +37 -0
 - data/lib/squib/dsl/svg.rb +62 -0
 - data/lib/squib/dsl/text.rb +54 -0
 - data/lib/squib/dsl/text_embed.rb +78 -0
 - data/lib/squib/dsl/triangle.rb +35 -0
 - data/lib/squib/{api → dsl}/units.rb +10 -0
 - data/lib/squib/dsl/xlsx.rb +40 -0
 - data/lib/squib/dsl/yaml.rb +40 -0
 - data/lib/squib/errors_warnings/warn_unexpected_params.rb +14 -0
 - data/lib/squib/graphics/save_images.rb +3 -3
 - data/lib/squib/graphics/save_sprue.rb +14 -2
 - data/lib/squib/graphics/text.rb +37 -9
 - data/lib/squib/import/csv_importer.rb +45 -0
 - data/lib/squib/import/quantity_exploder.rb +18 -0
 - data/lib/squib/import/xlsx_importer.rb +28 -0
 - data/lib/squib/import/yaml_importer.rb +30 -0
 - data/lib/squib/layout_parser.rb +24 -7
 - data/lib/squib/sprues/crop_line.rb +6 -6
 - data/lib/squib/sprues/crop_line_dash.rb +6 -6
 - data/lib/squib/sprues/sprue.rb +16 -14
 - data/lib/squib/version.rb +1 -1
 - data/samples/autoscale_font/_autoscale_font.rb +77 -8
 - data/samples/colors/_switch_color.rb +2 -2
 - data/samples/data/_excel.rb +1 -1
 - data/samples/ranges/_ranges.rb +1 -1
 - data/samples/saves/_save_filenames.rb +4 -0
 - data/samples/saves/_save_pdf.rb +1 -1
 - data/samples/saves/_saves.rb +2 -1
 - data/samples/shapes/_draw_shapes.rb +2 -2
 - data/samples/sprues/_builtin_sprues.rb +1 -0
 - data/samples/sprues/_fold_sheet.rb +4 -1
 - data/samples/text/_text.rb +6 -1
 - data/samples/text/_text_options.rb +2 -1
 - data/samples/units/_cells.rb +51 -0
 - data/samples/units/_shorthands.rb +49 -0
 - data/samples/units/_units.rb +7 -0
 - data/squib.gemspec +11 -5
 - metadata +120 -33
 - data/.travis.yml +0 -17
 - data/appveyor.yml +0 -25
 - data/lib/squib/api/background.rb +0 -15
 - data/lib/squib/api/data.rb +0 -137
 - data/lib/squib/api/image.rb +0 -49
 - data/lib/squib/api/save.rb +0 -83
 - data/lib/squib/api/shapes.rb +0 -124
 - data/lib/squib/api/text.rb +0 -25
 - data/lib/squib/api/text_embed.rb +0 -71
 
    
        data/lib/squib/version.rb
    CHANGED
    
    
| 
         @@ -1,13 +1,79 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'squib'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            #  
     | 
| 
       4 
     | 
    
         
            -
            #  
     | 
| 
       5 
     | 
    
         
            -
            #  
     | 
| 
      
 3 
     | 
    
         
            +
            # Autoscaling font is handy for a bunch of things:
         
     | 
| 
      
 4 
     | 
    
         
            +
            #  * Picture-perfect text fitting for one-off
         
     | 
| 
      
 5 
     | 
    
         
            +
            #  * Rapid prototyping where you don't have to think about sizes
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # We've got three options...
         
     | 
| 
      
 8 
     | 
    
         
            +
            #  Option 1. Use your data <--- good for picture-perfect
         
     | 
| 
      
 9 
     | 
    
         
            +
            #  Option 2. Use ellipsize: :autoscale <--- good for rapid prototyping
         
     | 
| 
      
 10 
     | 
    
         
            +
            #  Option 3. Use map ranges in your code <--- good for picture-perfect
         
     | 
| 
      
 11 
     | 
    
         
            +
            #                                             or other weird cases
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ###########################
         
     | 
| 
      
 14 
     | 
    
         
            +
            # Option 1: Use your data #
         
     | 
| 
      
 15 
     | 
    
         
            +
            ###########################
         
     | 
| 
      
 16 
     | 
    
         
            +
            # If you want to tweak the font size per-card, you can always make font_size
         
     | 
| 
      
 17 
     | 
    
         
            +
            # a column and map it from there. This is tedious but leads to perfectly
         
     | 
| 
      
 18 
     | 
    
         
            +
            # customized results
         
     | 
| 
      
 19 
     | 
    
         
            +
            my_data = Squib.csv data: <<~CSV
         
     | 
| 
      
 20 
     | 
    
         
            +
              "Title","Font Size"
         
     | 
| 
      
 21 
     | 
    
         
            +
              "Short & Big",10
         
     | 
| 
      
 22 
     | 
    
         
            +
              "Medium Length & Size", 5
         
     | 
| 
      
 23 
     | 
    
         
            +
              "Super duper long string here, therefore a smaller font.", 4
         
     | 
| 
      
 24 
     | 
    
         
            +
            CSV
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            Squib::Deck.new(width: 300, height: 75, cards: 3) do
         
     | 
| 
      
 27 
     | 
    
         
            +
              background color: :white
         
     | 
| 
      
 28 
     | 
    
         
            +
              rect stroke_color: :black
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              text str: my_data.title, font: 'Arial',
         
     | 
| 
      
 31 
     | 
    
         
            +
                   font_size: my_data.font_size, # <-- key part
         
     | 
| 
      
 32 
     | 
    
         
            +
                   x: 10, y:10, align: :center,
         
     | 
| 
      
 33 
     | 
    
         
            +
                   width: 280, # <-- note how height does NOT need to be set
         
     | 
| 
      
 34 
     | 
    
         
            +
                   ellipsize: false,
         
     | 
| 
      
 35 
     | 
    
         
            +
                   hint: :red
         
     | 
| 
      
 36 
     | 
    
         
            +
              save_sheet columns: 3, prefix: 'autoscale_w_data_'
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            #######################################
         
     | 
| 
      
 40 
     | 
    
         
            +
            # Option 2: Use ellipsize: :autoscale #
         
     | 
| 
      
 41 
     | 
    
         
            +
            #######################################
         
     | 
| 
      
 42 
     | 
    
         
            +
            # If set the height, you can set "autoscale" and it will incrementally
         
     | 
| 
      
 43 
     | 
    
         
            +
            # downgrade the font size until the text does not ellipsize
         
     | 
| 
      
 44 
     | 
    
         
            +
            #
         
     | 
| 
      
 45 
     | 
    
         
            +
            # Great for rapid prototyping, set-it-and-forget-it
         
     | 
| 
      
 46 
     | 
    
         
            +
            #
         
     | 
| 
      
 47 
     | 
    
         
            +
            # NOTE: You MUST set the height for this to work. Otherwise, the text will
         
     | 
| 
      
 48 
     | 
    
         
            +
            #       never ellipsize and Squib doesn't know when to start autoscaling
         
     | 
| 
      
 49 
     | 
    
         
            +
            Squib::Deck.new(width: 300, height: 75, cards: 3) do
         
     | 
| 
      
 50 
     | 
    
         
            +
              background color: :white
         
     | 
| 
      
 51 
     | 
    
         
            +
              rect stroke_color: :black
         
     | 
| 
      
 52 
     | 
    
         
            +
              title = ['Short & Big',
         
     | 
| 
      
 53 
     | 
    
         
            +
                       'Medium Length & Size',
         
     | 
| 
      
 54 
     | 
    
         
            +
                       'Super duper long string here, therefore a smaller font.']
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              # Automatically scale the text down from the specified font_size to the largest size that fits
         
     | 
| 
      
 57 
     | 
    
         
            +
              text str: title, font: 'Arial',
         
     | 
| 
      
 58 
     | 
    
         
            +
                   font_size: 15, # <-- this is the MAX font size. Scale down from here
         
     | 
| 
      
 59 
     | 
    
         
            +
                   ellipsize: :autoscale, # <-- key part
         
     | 
| 
      
 60 
     | 
    
         
            +
                   height: 50, # <-- need this to be set to something
         
     | 
| 
      
 61 
     | 
    
         
            +
                   width: 280, x: 10, y: 10, align: :center, valign: :middle, hint: :red
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              save_sheet columns: 3, prefix: 'autoscale_w_ellipsize_'
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            ############################################
         
     | 
| 
      
 67 
     | 
    
         
            +
            # Option 3: Mapping to ranges in your code #
         
     | 
| 
      
 68 
     | 
    
         
            +
            ############################################
         
     | 
| 
      
 69 
     | 
    
         
            +
            # Here's an in-between option that allows you to programmatically apply font
         
     | 
| 
      
 70 
     | 
    
         
            +
            # sizes. This allows you a ton of flexibility.Probably more flexibility than
         
     | 
| 
      
 71 
     | 
    
         
            +
            # you need, frankly. But one advantage is that you don't have to set the height
         
     | 
| 
       6 
72 
     | 
    
         
             
            def autoscale(str_array)
         
     | 
| 
       7 
73 
     | 
    
         
             
              str_array.map do | str |
         
     | 
| 
       8 
74 
     | 
    
         
             
                case str.length
         
     | 
| 
       9 
75 
     | 
    
         
             
                when 0..15
         
     | 
| 
       10 
     | 
    
         
            -
                   
     | 
| 
      
 76 
     | 
    
         
            +
                  9
         
     | 
| 
       11 
77 
     | 
    
         
             
                when 16..20
         
     | 
| 
       12 
78 
     | 
    
         
             
                  6
         
     | 
| 
       13 
79 
     | 
    
         
             
                else
         
     | 
| 
         @@ -16,14 +82,17 @@ def autoscale(str_array) 
     | 
|
| 
       16 
82 
     | 
    
         
             
              end
         
     | 
| 
       17 
83 
     | 
    
         
             
            end
         
     | 
| 
       18 
84 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            Squib::Deck.new(width: 300, height:  
     | 
| 
      
 85 
     | 
    
         
            +
            Squib::Deck.new(width: 300, height: 75, cards: 3) do
         
     | 
| 
       20 
86 
     | 
    
         
             
              background color: :white
         
     | 
| 
       21 
     | 
    
         
            -
              rect
         
     | 
| 
      
 87 
     | 
    
         
            +
              rect stroke_color: :black
         
     | 
| 
       22 
88 
     | 
    
         
             
              title = ['Short & Big',
         
     | 
| 
       23 
89 
     | 
    
         
             
                       'Medium Length & Size',
         
     | 
| 
       24 
90 
     | 
    
         
             
                       'Super duper long string here, therefore a smaller font.']
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
              # Scale text based on the string length
         
     | 
| 
      
 93 
     | 
    
         
            +
              text str: title, font: 'Arial',
         
     | 
| 
      
 94 
     | 
    
         
            +
                   font_size: autoscale(title), # <-- key part
         
     | 
| 
       26 
95 
     | 
    
         
             
                   x: 10, y:10, align: :center, width: 280, ellipsize: false, hint: :red
         
     | 
| 
       27 
96 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 97 
     | 
    
         
            +
                save_sheet columns: 3, prefix: 'autoscale_w_range_'
         
     | 
| 
       29 
98 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,11 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative '../../lib/squib'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # Choose between black and white color theme for type snake
         
     | 
| 
       4 
4 
     | 
    
         
             
            #   * Allow using white snake cards with black text or
         
     | 
| 
       5 
5 
     | 
    
         
             
            #     black snake cards with white text
         
     | 
| 
       6 
6 
     | 
    
         
             
            color = 'white'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            cards = Squib.csv file: '_switch_color_data.csv' 
     | 
| 
      
 8 
     | 
    
         
            +
            cards = Squib.csv file: '_switch_color_data.csv'
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            Squib::Deck.new cards: cards['Type'].size do
         
     | 
| 
       11 
11 
     | 
    
         | 
    
        data/samples/data/_excel.rb
    CHANGED
    
    | 
         @@ -37,7 +37,7 @@ end 
     | 
|
| 
       37 
37 
     | 
    
         
             
            #     from each value. This is the default behavior in Squib, but the options
         
     | 
| 
       38 
38 
     | 
    
         
             
            #     are here just to make sure.
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
            resource_data = Squib.xlsx(file: 'sample.xlsx', sheet: 2, strip: true) do |header, value|
         
     | 
| 
      
 40 
     | 
    
         
            +
            resource_data = Squib.xlsx(file: 'sample.xlsx', explode: 'Qty', sheet: 2, strip: true) do |header, value|
         
     | 
| 
       41 
41 
     | 
    
         
             
              case header
         
     | 
| 
       42 
42 
     | 
    
         
             
              when 'Cost'
         
     | 
| 
       43 
43 
     | 
    
         
             
                "$#{value}k" # e.g. "3" becomes "$3k"
         
     | 
    
        data/samples/ranges/_ranges.rb
    CHANGED
    
    
| 
         @@ -16,6 +16,10 @@ Squib::Deck.new(width: 50, height: 50, cards: 2) do 
     | 
|
| 
       16 
16 
     | 
    
         
             
              # bar.png
         
     | 
| 
       17 
17 
     | 
    
         
             
              save_png prefix: ['foo', 'bar'], count_format: ''
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
              # foo_00_bar.png
         
     | 
| 
      
 20 
     | 
    
         
            +
              # foo_01_bar.png
         
     | 
| 
      
 21 
     | 
    
         
            +
              save_png prefix: 'foo_', suffix: '_bar'
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       19 
23 
     | 
    
         
             
              # thief.png
         
     | 
| 
       20 
24 
     | 
    
         
             
              # thug.png
         
     | 
| 
       21 
25 
     | 
    
         
             
              data = csv data: "filename\nthief\nthug"
         
     | 
    
        data/samples/saves/_save_pdf.rb
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ require 'squib' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            Squib::Deck.new(cards: 8) do
         
     | 
| 
       4 
4 
     | 
    
         
             
              background color: :gray
         
     | 
| 
       5 
5 
     | 
    
         
             
              rect x: 37.5, y: 37.5, width: 750, height: 1050,
         
     | 
| 
       6 
     | 
    
         
            -
                   x_radius: 37.5, y_radius: 37.5,  
     | 
| 
      
 6 
     | 
    
         
            +
                   x_radius: 37.5, y_radius: 37.5, stroke_width: 2.0, dash: '4 4'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
               # Tests for crop marks
         
     | 
| 
       9 
9 
     | 
    
         
             
               save_pdf file: 'crops-default.pdf', crop_marks: true
         
     | 
    
        data/samples/saves/_saves.rb
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ require 'squib' 
     | 
|
| 
       5 
5 
     | 
    
         
             
            Squib::Deck.new(width: 825, height: 1125, cards: 16) do
         
     | 
| 
       6 
6 
     | 
    
         
             
              background color: :gray
         
     | 
| 
       7 
7 
     | 
    
         
             
              rect x: 38, y: 38, width: 750, height: 1050,
         
     | 
| 
       8 
     | 
    
         
            -
                   x_radius: 38, y_radius: 38,  
     | 
| 
      
 8 
     | 
    
         
            +
                   x_radius: 38, y_radius: 38, stroke_width: 2.0, dash: '4 4'
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              text str: (1..16).to_a, x: 220, y: 78, font: 'Arial 18'
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
         @@ -45,6 +45,7 @@ Squib::Deck.new(width: 825, height: 1125, cards: 16) do 
     | 
|
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
              # Sheets can arrange left-to-right and right-to-left
         
     | 
| 
       47 
47 
     | 
    
         
             
              save_sheet prefix: 'save_sheet_rtl_',
         
     | 
| 
      
 48 
     | 
    
         
            +
                         suffix: '_with_suffix',
         
     | 
| 
       48 
49 
     | 
    
         
             
                         range: 0..1, rtl: true,
         
     | 
| 
       49 
50 
     | 
    
         
             
                         columns: 2, rows: 1,
         
     | 
| 
       50 
51 
     | 
    
         
             
                         margin: 75, gap: 5, trim: 37
         
     | 
| 
         @@ -3,8 +3,8 @@ require 'squib' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            Squib::Deck.new do
         
     | 
| 
       4 
4 
     | 
    
         
             
              background color: :white
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
              grid x: 10, y: 10, width: 50,  height: 50,  stroke_color: '#0066FF', stroke_width: 1.5 
     | 
| 
       7 
     | 
    
         
            -
              grid x: 10, y: 10, width: 200, height: 200, stroke_color: '#0066FF', stroke_width: 3 
     | 
| 
      
 6 
     | 
    
         
            +
              grid x: 10, y: 10, width: 50,  height: 50,  stroke_color: '#0066FF', stroke_width: 1.5
         
     | 
| 
      
 7 
     | 
    
         
            +
              grid x: 10, y: 10, width: 200, height: 200, stroke_color: '#0066FF', stroke_width: 3
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
              rect x: 305, y: 105, width: 200, height: 50, dash: '4 2'
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
         @@ -22,6 +22,9 @@ Squib::Deck.new(width: '2.5in', height: '3.5in', cards: 8) do 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
              text str: strings,font: 'Sans 32', align: :center, valign: :middle,
         
     | 
| 
       24 
24 
     | 
    
         
             
                   height: :deck, width: :deck
         
     | 
| 
      
 25 
     | 
    
         
            +
                   
         
     | 
| 
       25 
26 
     | 
    
         
             
              save_sheet prefix: 'foldable_',
         
     | 
| 
       26 
     | 
    
         
            -
                         sprue: 'letter_poker_foldable_8up.yml'
         
     | 
| 
      
 27 
     | 
    
         
            +
                         sprue: 'letter_poker_foldable_8up.yml' # built-in sprue
         
     | 
| 
      
 28 
     | 
    
         
            +
              save_pdf file: 'foldable.pdf',
         
     | 
| 
      
 29 
     | 
    
         
            +
                       sprue: 'letter_poker_foldable_8up.yml' # built-in sprue
         
     | 
| 
       27 
30 
     | 
    
         
             
            end
         
     | 
    
        data/samples/text/_text.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'squib'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'squib/sample_helpers'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            Squib::Deck.new(width: 1000, height:  
     | 
| 
      
 4 
     | 
    
         
            +
            Squib::Deck.new(width: 1000, height: 1450) do
         
     | 
| 
       5 
5 
     | 
    
         
             
              draw_graph_paper width, height
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              sample 'Font strings are quite expressive. Specify family, modifiers, then size. Font names with spaces in them should end with a comma to help with parsing.' do |x, y|
         
     | 
| 
         @@ -21,6 +21,11 @@ Squib::Deck.new(width: 1000, height: 1250) do 
     | 
|
| 
       21 
21 
     | 
    
         
             
                     hint: :red, width: 350, font: 'Serif bold 7'
         
     | 
| 
       22 
22 
     | 
    
         
             
              end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
      
 24 
     | 
    
         
            +
              sample 'If you specify ellipsize: :autosize, the font size will autoscale.' do |x, y|
         
     | 
| 
      
 25 
     | 
    
         
            +
                text str: 'This text doeas not fit with font size 7. It is autoscaled to the largest size that fits instead.', x: x - 50, y: y,
         
     | 
| 
      
 26 
     | 
    
         
            +
                     hint: :red, width: 350, height: 100, ellipsize: :autoscale, font: 'Serif bold 7'
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       24 
29 
     | 
    
         
             
              sample 'If you specify the width only, and turn off ellipsize, the height will auto-stretch.' do |x, y|
         
     | 
| 
       25 
30 
     | 
    
         
             
                text str: 'This has fixed width, but not fixed height.', x: x, y: y,
         
     | 
| 
       26 
31 
     | 
    
         
             
                     hint: :red, width: 300, ellipsize: false, font: 'Serif bold 8'
         
     | 
| 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'squib'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Squib::Deck.new(width: '1.5in', height: '1.5in') do
         
     | 
| 
      
 4 
     | 
    
         
            +
              background color: :white
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              # Squib has a custom unit, called "cell"
         
     | 
| 
      
 7 
     | 
    
         
            +
              # A "cell" unit defaults to 37.5px, which at 300dpi is 1/8in or 3.175mm
         
     | 
| 
      
 8 
     | 
    
         
            +
              # This is a very common multiple for layouts.
         
     | 
| 
      
 9 
     | 
    
         
            +
              # This helps us lay things out in grids without doing much math in our heads
         
     | 
| 
      
 10 
     | 
    
         
            +
              # Here's an example... with grid!
         
     | 
| 
      
 11 
     | 
    
         
            +
              grid width: '1 cell', height: '1 cell'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              # Plurals are fine or just 'c' as a unit is fine
         
     | 
| 
      
 14 
     | 
    
         
            +
              # Whitespace is pretty lenient too.
         
     | 
| 
      
 15 
     | 
    
         
            +
              rect fill_color: :blue,
         
     | 
| 
      
 16 
     | 
    
         
            +
                   x: '1 cell', y: '2 cells',
         
     | 
| 
      
 17 
     | 
    
         
            +
                   width: '1c', height: '1cell  '
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              # Technically, the "cell" is actually a "unit", so you can even combine
         
     | 
| 
      
 20 
     | 
    
         
            +
              # with xywh shorhands!!
         
     | 
| 
      
 21 
     | 
    
         
            +
              rect fill_color: :red,
         
     | 
| 
      
 22 
     | 
    
         
            +
                   x: 'middle + 0.5c', y: 'height - 1.5c',
         
     | 
| 
      
 23 
     | 
    
         
            +
                   width: '1c', height: '1c'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              # And, unlike xywh shorthands, this applies basically everywhere we support
         
     | 
| 
      
 26 
     | 
    
         
            +
              # unit conversion.
         
     | 
| 
      
 27 
     | 
    
         
            +
              circle fill_color: :green,
         
     | 
| 
      
 28 
     | 
    
         
            +
                     x: '3c', y: '2c', radius: '1c'
         
     | 
| 
      
 29 
     | 
    
         
            +
              # Decimals are fine too
         
     | 
| 
      
 30 
     | 
    
         
            +
              circle fill_color: :green,
         
     | 
| 
      
 31 
     | 
    
         
            +
                     x: '5c', y: '2c', radius: '0.5c'
         
     | 
| 
      
 32 
     | 
    
         
            +
              # Even dashes!
         
     | 
| 
      
 33 
     | 
    
         
            +
              circle fill_color: '#0000', stroke_color: :purple,
         
     | 
| 
      
 34 
     | 
    
         
            +
                     x: '1c', y: '4c', radius: '0.5c', dash: '0.25c 0.25c'
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              # We can also do stuff in layout. Check out the yml file...
         
     | 
| 
      
 37 
     | 
    
         
            +
              #  (even cleaner in Yaml since we don't need quotes!)
         
     | 
| 
      
 38 
     | 
    
         
            +
              use_layout file: 'cells.yml'
         
     | 
| 
      
 39 
     | 
    
         
            +
              rect layout: :example
         
     | 
| 
      
 40 
     | 
    
         
            +
              rect layout: :extends_example
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              save_png prefix: 'cells_'
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            # You can customize this with the cell_px configuration option
         
     | 
| 
      
 47 
     | 
    
         
            +
            Squib::Deck.new(width: 100, height: 100, config: 'cell_config.yml') do
         
     | 
| 
      
 48 
     | 
    
         
            +
              background color: :white
         
     | 
| 
      
 49 
     | 
    
         
            +
              rect x: '1c', y: '1c', width: '1c', height: '1c', fill_color: :purple
         
     | 
| 
      
 50 
     | 
    
         
            +
              save_png prefix: 'custom_cell_'
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_relative '../../lib/squib'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Lots of DSL methods have shorthands that are accepted for
         
     | 
| 
      
 4 
     | 
    
         
            +
            # x, y, width, and height parameters.
         
     | 
| 
      
 5 
     | 
    
         
            +
            Squib::Deck.new(width: '0.5in', height: '0.25in') do
         
     | 
| 
      
 6 
     | 
    
         
            +
              background color: :white
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              # middle for x and y will resolve to half the height
         
     | 
| 
      
 9 
     | 
    
         
            +
              text str: 'xymiddle', font: 'Sans Bold 3', hint: :red,
         
     | 
| 
      
 10 
     | 
    
         
            +
                   x: 'middle', y: :middle
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              # 'center' also works
         
     | 
| 
      
 13 
     | 
    
         
            +
              rect width: 30, height: 30,
         
     | 
| 
      
 14 
     | 
    
         
            +
                   x: :center, y: 'center'
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              # Applies to shapes
         
     | 
| 
      
 17 
     | 
    
         
            +
              triangle x1: 20, y1: 20,
         
     | 
| 
      
 18 
     | 
    
         
            +
                       x2: 60, y2: 20,
         
     | 
| 
      
 19 
     | 
    
         
            +
                       x3: :middle, y3: :middle
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              # We can also do width-, height-, width/, height/
         
     | 
| 
      
 22 
     | 
    
         
            +
              rect x: 20, y: 5, stroke_color: :green,
         
     | 
| 
      
 23 
     | 
    
         
            +
              width: 'width - 0.1in', height: 10
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              rect x: 10, y: 50, width: 10, height: 'height / 3',
         
     | 
| 
      
 26 
     | 
    
         
            +
                   stroke_color: :purple
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              # And middle+/-
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              rect x: 'middle + 0.1in', y: 'middle - 0.1in',
         
     | 
| 
      
 31 
     | 
    
         
            +
                   width: '0.1in', height: '0.1in', fill_color: :blue
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              # Layouts apply this too.
         
     | 
| 
      
 34 
     | 
    
         
            +
              use_layout file: 'shorthands.yml'
         
     | 
| 
      
 35 
     | 
    
         
            +
              rect layout: :example
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              # HOWEVER! Shorthands don't combine in an "extends" situation,
         
     | 
| 
      
 38 
     | 
    
         
            +
              # e.g. this won't work:
         
     | 
| 
      
 39 
     | 
    
         
            +
              # parent:
         
     | 
| 
      
 40 
     | 
    
         
            +
              #   x: middle
         
     | 
| 
      
 41 
     | 
    
         
            +
              # child:
         
     | 
| 
      
 42 
     | 
    
         
            +
              #   extends: parent
         
     | 
| 
      
 43 
     | 
    
         
            +
              #   x: += 0.5in
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              # These shorthands are not intended for every xywh parameter or
         
     | 
| 
      
 46 
     | 
    
         
            +
              # length parameter, see docs for when they do or do not apply.
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              save_png prefix: 'shorthand_'
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
    
        data/samples/units/_units.rb
    CHANGED
    
    | 
         @@ -23,10 +23,17 @@ Squib::Deck.new(width: '1.5in', height: '1.5in') do 
     | 
|
| 
       23 
23 
     | 
    
         
             
              	   width: safe_width, height: safe_height,
         
     | 
| 
       24 
24 
     | 
    
         
             
                   radius: '2 mm '
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
      
 26 
     | 
    
         
            +
              # Angles are also automatically converted to radians if you use deg
         
     | 
| 
      
 27 
     | 
    
         
            +
              svg file: '../spanner.svg',
         
     | 
| 
      
 28 
     | 
    
         
            +
                  x: 100, y: 100, width: 40, height: 40, angle: '30deg'
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
       26 
30 
     | 
    
         
             
              # We can also do stuff in layout. Check out the yml file...
         
     | 
| 
       27 
31 
     | 
    
         
             
              #  (even cleaner in Yaml since we don't need quotes!)
         
     | 
| 
       28 
32 
     | 
    
         
             
              use_layout file: 'using_units.yml'
         
     | 
| 
       29 
33 
     | 
    
         
             
              text str: 'Hello.', layout: :example
         
     | 
| 
      
 34 
     | 
    
         
            +
              svg file: '../spanner.svg', layout: :angled
         
     | 
| 
       30 
35 
     | 
    
         | 
| 
       31 
36 
     | 
    
         
             
              save prefix: 'units_', format: :png
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              # But wait... there's more! See _shorthands.rb for more fanciness with units
         
     | 
| 
       32 
39 
     | 
    
         
             
            end
         
     | 
    
        data/squib.gemspec
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       7 
7 
     | 
    
         
             
              spec.specification_version = 2 if spec.respond_to? :specification_version=
         
     | 
| 
       8 
8 
     | 
    
         
             
              spec.required_rubygems_version = Gem::Requirement.new('>= 0') if spec.respond_to? :required_rubygems_version=
         
     | 
| 
       9 
9 
     | 
    
         
             
              spec.rubygems_version = '2.2.2'
         
     | 
| 
       10 
     | 
    
         
            -
              spec.required_ruby_version = '>= 2. 
     | 
| 
      
 10 
     | 
    
         
            +
              spec.required_ruby_version = '>= 2.5.0'
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
              spec.name          = 'squib'
         
     | 
| 
       13 
13 
     | 
    
         
             
              spec.version       = Squib::VERSION
         
     | 
| 
         @@ -15,9 +15,11 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
              spec.summary       = 'A Ruby DSL for prototyping card games'
         
     | 
| 
       17 
17 
     | 
    
         
             
              spec.description   = 'Squib is a Ruby DSL for prototyping card games'
         
     | 
| 
      
 18 
     | 
    
         
            +
              spec.post_install_message   = 'Happy Squibbing!'
         
     | 
| 
       18 
19 
     | 
    
         
             
              spec.authors       = ['Andy Meneely']
         
     | 
| 
       19 
20 
     | 
    
         
             
              spec.email         = 'andy.meneely@gmail.com'
         
     | 
| 
       20 
21 
     | 
    
         
             
              spec.homepage      = 'https://github.com/andymeneely/squib'
         
     | 
| 
      
 22 
     | 
    
         
            +
              spec.requirements << 'On Windows, you need the Ruby+DevKit. See https://rubyinstaller.org/downloads'
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
       22 
24 
     | 
    
         
             
              spec.rdoc_options = ['--charset=UTF-8']
         
     | 
| 
       23 
25 
     | 
    
         
             
              spec.extra_rdoc_files = Dir['README.md', 'samples/**/*.rb']
         
     | 
| 
         @@ -33,16 +35,20 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       33 
35 
     | 
    
         
             
              spec.add_runtime_dependency 'classy_hash',           '0.2.1'
         
     | 
| 
       34 
36 
     | 
    
         
             
              spec.add_runtime_dependency 'gio2',                  '~> 3.4'
         
     | 
| 
       35 
37 
     | 
    
         
             
              spec.add_runtime_dependency 'gobject-introspection', '~> 3.4'
         
     | 
| 
       36 
     | 
    
         
            -
              spec.add_runtime_dependency 'highline',              '2.0. 
     | 
| 
       37 
     | 
    
         
            -
              spec.add_runtime_dependency 'mercenary',             '0. 
     | 
| 
       38 
     | 
    
         
            -
              spec.add_runtime_dependency 'nokogiri',              '1.10 
     | 
| 
      
 38 
     | 
    
         
            +
              spec.add_runtime_dependency 'highline',              '2.0.3'
         
     | 
| 
      
 39 
     | 
    
         
            +
              spec.add_runtime_dependency 'mercenary',             '0.4.0'
         
     | 
| 
      
 40 
     | 
    
         
            +
              spec.add_runtime_dependency 'nokogiri',              '~> 1.10'
         
     | 
| 
       39 
41 
     | 
    
         
             
              spec.add_runtime_dependency 'pango',                 '~> 3.4'
         
     | 
| 
       40 
     | 
    
         
            -
              spec.add_runtime_dependency ' 
     | 
| 
      
 42 
     | 
    
         
            +
              spec.add_runtime_dependency 'rainbow',               '~> 3.0'
         
     | 
| 
      
 43 
     | 
    
         
            +
              spec.add_runtime_dependency 'roo',                   '~> 2.8'
         
     | 
| 
       41 
44 
     | 
    
         
             
              spec.add_runtime_dependency 'rsvg2',                 '~> 3.4'
         
     | 
| 
       42 
45 
     | 
    
         
             
              spec.add_runtime_dependency 'ruby-progressbar',      '~> 1.10'
         
     | 
| 
       43 
46 
     | 
    
         | 
| 
      
 47 
     | 
    
         
            +
              spec.add_development_dependency 'activesupport'
         
     | 
| 
       44 
48 
     | 
    
         
             
              spec.add_development_dependency 'bundler'
         
     | 
| 
       45 
49 
     | 
    
         
             
              spec.add_development_dependency 'coveralls', '>= 0.8.21'
         
     | 
| 
      
 50 
     | 
    
         
            +
              spec.add_development_dependency 'guard'
         
     | 
| 
      
 51 
     | 
    
         
            +
              spec.add_development_dependency 'guard-rake'
         
     | 
| 
       46 
52 
     | 
    
         
             
              spec.add_development_dependency 'game_icons'
         
     | 
| 
       47 
53 
     | 
    
         
             
              spec.add_development_dependency 'launchy'
         
     | 
| 
       48 
54 
     | 
    
         
             
              spec.add_development_dependency 'rake'
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: squib
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.16.0.pre.preview1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andy Meneely
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-11-19 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: cairo
         
     | 
| 
         @@ -72,42 +72,42 @@ dependencies: 
     | 
|
| 
       72 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
73 
     | 
    
         
             
                - - '='
         
     | 
| 
       74 
74 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: 2.0. 
     | 
| 
      
 75 
     | 
    
         
            +
                    version: 2.0.3
         
     | 
| 
       76 
76 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       77 
77 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       78 
78 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
79 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
80 
     | 
    
         
             
                - - '='
         
     | 
| 
       81 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: 2.0. 
     | 
| 
      
 82 
     | 
    
         
            +
                    version: 2.0.3
         
     | 
| 
       83 
83 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
84 
     | 
    
         
             
              name: mercenary
         
     | 
| 
       85 
85 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
86 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
87 
     | 
    
         
             
                - - '='
         
     | 
| 
       88 
88 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 89 
     | 
    
         
            +
                    version: 0.4.0
         
     | 
| 
       90 
90 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       91 
91 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       92 
92 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
93 
     | 
    
         
             
                requirements:
         
     | 
| 
       94 
94 
     | 
    
         
             
                - - '='
         
     | 
| 
       95 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 96 
     | 
    
         
            +
                    version: 0.4.0
         
     | 
| 
       97 
97 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       98 
98 
     | 
    
         
             
              name: nokogiri
         
     | 
| 
       99 
99 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       100 
100 
     | 
    
         
             
                requirements:
         
     | 
| 
       101 
     | 
    
         
            -
                - -  
     | 
| 
      
 101 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       102 
102 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       103 
     | 
    
         
            -
                    version: 1.10 
     | 
| 
      
 103 
     | 
    
         
            +
                    version: '1.10'
         
     | 
| 
       104 
104 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       105 
105 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       106 
106 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       107 
107 
     | 
    
         
             
                requirements:
         
     | 
| 
       108 
     | 
    
         
            -
                - -  
     | 
| 
      
 108 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       109 
109 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       110 
     | 
    
         
            -
                    version: 1.10 
     | 
| 
      
 110 
     | 
    
         
            +
                    version: '1.10'
         
     | 
| 
       111 
111 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       112 
112 
     | 
    
         
             
              name: pango
         
     | 
| 
       113 
113 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -122,20 +122,34 @@ dependencies: 
     | 
|
| 
       122 
122 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       123 
123 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       124 
124 
     | 
    
         
             
                    version: '3.4'
         
     | 
| 
      
 125 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 126 
     | 
    
         
            +
              name: rainbow
         
     | 
| 
      
 127 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 128 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 129 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 130 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 131 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
      
 132 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 133 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 134 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 135 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 136 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 137 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 138 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
       125 
139 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       126 
140 
     | 
    
         
             
              name: roo
         
     | 
| 
       127 
141 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       128 
142 
     | 
    
         
             
                requirements:
         
     | 
| 
       129 
     | 
    
         
            -
                - -  
     | 
| 
      
 143 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       130 
144 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       131 
     | 
    
         
            -
                    version: 2.8 
     | 
| 
      
 145 
     | 
    
         
            +
                    version: '2.8'
         
     | 
| 
       132 
146 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       133 
147 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       134 
148 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       135 
149 
     | 
    
         
             
                requirements:
         
     | 
| 
       136 
     | 
    
         
            -
                - -  
     | 
| 
      
 150 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       137 
151 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       138 
     | 
    
         
            -
                    version: 2.8 
     | 
| 
      
 152 
     | 
    
         
            +
                    version: '2.8'
         
     | 
| 
       139 
153 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       140 
154 
     | 
    
         
             
              name: rsvg2
         
     | 
| 
       141 
155 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -164,6 +178,20 @@ dependencies: 
     | 
|
| 
       164 
178 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       165 
179 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       166 
180 
     | 
    
         
             
                    version: '1.10'
         
     | 
| 
      
 181 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 182 
     | 
    
         
            +
              name: activesupport
         
     | 
| 
      
 183 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 184 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 185 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 186 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 187 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 188 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 189 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 190 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 191 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 192 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 193 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 194 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       167 
195 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       168 
196 
     | 
    
         
             
              name: bundler
         
     | 
| 
       169 
197 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -192,6 +220,34 @@ dependencies: 
     | 
|
| 
       192 
220 
     | 
    
         
             
                - - ">="
         
     | 
| 
       193 
221 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       194 
222 
     | 
    
         
             
                    version: 0.8.21
         
     | 
| 
      
 223 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 224 
     | 
    
         
            +
              name: guard
         
     | 
| 
      
 225 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 226 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 227 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 228 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 229 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 230 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 231 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 232 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 233 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 234 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 235 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 236 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 237 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 238 
     | 
    
         
            +
              name: guard-rake
         
     | 
| 
      
 239 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 240 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 241 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 242 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 243 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 244 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 245 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 246 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 247 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 248 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 249 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 250 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       195 
251 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       196 
252 
     | 
    
         
             
              name: game_icons
         
     | 
| 
       197 
253 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -314,31 +370,24 @@ extra_rdoc_files: 
     | 
|
| 
       314 
370 
     | 
    
         
             
            - samples/text/_embed_text.rb
         
     | 
| 
       315 
371 
     | 
    
         
             
            - samples/text/_text.rb
         
     | 
| 
       316 
372 
     | 
    
         
             
            - samples/text/_text_options.rb
         
     | 
| 
      
 373 
     | 
    
         
            +
            - samples/units/_cells.rb
         
     | 
| 
      
 374 
     | 
    
         
            +
            - samples/units/_shorthands.rb
         
     | 
| 
       317 
375 
     | 
    
         
             
            - samples/units/_units.rb
         
     | 
| 
       318 
376 
     | 
    
         
             
            files:
         
     | 
| 
      
 377 
     | 
    
         
            +
            - ".github/workflows/tests.yml"
         
     | 
| 
       319 
378 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       320 
     | 
    
         
            -
            - ".travis.yml"
         
     | 
| 
       321 
379 
     | 
    
         
             
            - CHANGELOG.md
         
     | 
| 
       322 
380 
     | 
    
         
             
            - CONTRIBUTING.md
         
     | 
| 
       323 
381 
     | 
    
         
             
            - Dockerfile
         
     | 
| 
       324 
382 
     | 
    
         
             
            - Gemfile
         
     | 
| 
      
 383 
     | 
    
         
            +
            - Guardfile
         
     | 
| 
       325 
384 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       326 
385 
     | 
    
         
             
            - README.md
         
     | 
| 
       327 
386 
     | 
    
         
             
            - RELEASE TODO.md
         
     | 
| 
       328 
387 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       329 
     | 
    
         
            -
            - appveyor.yml
         
     | 
| 
       330 
388 
     | 
    
         
             
            - bin/squib
         
     | 
| 
       331 
389 
     | 
    
         
             
            - lib/squib.rb
         
     | 
| 
       332 
     | 
    
         
            -
            - lib/squib/api/background.rb
         
     | 
| 
       333 
     | 
    
         
            -
            - lib/squib/api/data.rb
         
     | 
| 
       334 
     | 
    
         
            -
            - lib/squib/api/groups.rb
         
     | 
| 
       335 
     | 
    
         
            -
            - lib/squib/api/image.rb
         
     | 
| 
       336 
     | 
    
         
            -
            - lib/squib/api/save.rb
         
     | 
| 
       337 
390 
     | 
    
         
             
            - lib/squib/api/settings.rb
         
     | 
| 
       338 
     | 
    
         
            -
            - lib/squib/api/shapes.rb
         
     | 
| 
       339 
     | 
    
         
            -
            - lib/squib/api/text.rb
         
     | 
| 
       340 
     | 
    
         
            -
            - lib/squib/api/text_embed.rb
         
     | 
| 
       341 
     | 
    
         
            -
            - lib/squib/api/units.rb
         
     | 
| 
       342 
391 
     | 
    
         
             
            - lib/squib/args/arg_loader.rb
         
     | 
| 
       343 
392 
     | 
    
         
             
            - lib/squib/args/box.rb
         
     | 
| 
       344 
393 
     | 
    
         
             
            - lib/squib/args/card_range.rb
         
     | 
| 
         @@ -363,6 +412,7 @@ files: 
     | 
|
| 
       363 
412 
     | 
    
         
             
            - lib/squib/args/transform.rb
         
     | 
| 
       364 
413 
     | 
    
         
             
            - lib/squib/args/typographer.rb
         
     | 
| 
       365 
414 
     | 
    
         
             
            - lib/squib/args/unit_conversion.rb
         
     | 
| 
      
 415 
     | 
    
         
            +
            - lib/squib/args/xywh_shorthands.rb
         
     | 
| 
       366 
416 
     | 
    
         
             
            - lib/squib/builtin/layouts/economy.yml
         
     | 
| 
       367 
417 
     | 
    
         
             
            - lib/squib/builtin/layouts/fantasy.yml
         
     | 
| 
       368 
418 
     | 
    
         
             
            - lib/squib/builtin/layouts/hand.yml
         
     | 
| 
         @@ -413,6 +463,34 @@ files: 
     | 
|
| 
       413 
463 
     | 
    
         
             
            - lib/squib/conf.rb
         
     | 
| 
       414 
464 
     | 
    
         
             
            - lib/squib/constants.rb
         
     | 
| 
       415 
465 
     | 
    
         
             
            - lib/squib/deck.rb
         
     | 
| 
      
 466 
     | 
    
         
            +
            - lib/squib/dsl/background.rb
         
     | 
| 
      
 467 
     | 
    
         
            +
            - lib/squib/dsl/circle.rb
         
     | 
| 
      
 468 
     | 
    
         
            +
            - lib/squib/dsl/csv.rb
         
     | 
| 
      
 469 
     | 
    
         
            +
            - lib/squib/dsl/curve.rb
         
     | 
| 
      
 470 
     | 
    
         
            +
            - lib/squib/dsl/cut_zone.rb
         
     | 
| 
      
 471 
     | 
    
         
            +
            - lib/squib/dsl/ellipse.rb
         
     | 
| 
      
 472 
     | 
    
         
            +
            - lib/squib/dsl/grid.rb
         
     | 
| 
      
 473 
     | 
    
         
            +
            - lib/squib/dsl/groups.rb
         
     | 
| 
      
 474 
     | 
    
         
            +
            - lib/squib/dsl/hand.rb
         
     | 
| 
      
 475 
     | 
    
         
            +
            - lib/squib/dsl/line.rb
         
     | 
| 
      
 476 
     | 
    
         
            +
            - lib/squib/dsl/png.rb
         
     | 
| 
      
 477 
     | 
    
         
            +
            - lib/squib/dsl/polygon.rb
         
     | 
| 
      
 478 
     | 
    
         
            +
            - lib/squib/dsl/rect.rb
         
     | 
| 
      
 479 
     | 
    
         
            +
            - lib/squib/dsl/safe_zone.rb
         
     | 
| 
      
 480 
     | 
    
         
            +
            - lib/squib/dsl/save.rb
         
     | 
| 
      
 481 
     | 
    
         
            +
            - lib/squib/dsl/save_pdf.rb
         
     | 
| 
      
 482 
     | 
    
         
            +
            - lib/squib/dsl/save_png.rb
         
     | 
| 
      
 483 
     | 
    
         
            +
            - lib/squib/dsl/save_sheet.rb
         
     | 
| 
      
 484 
     | 
    
         
            +
            - lib/squib/dsl/showcase.rb
         
     | 
| 
      
 485 
     | 
    
         
            +
            - lib/squib/dsl/star.rb
         
     | 
| 
      
 486 
     | 
    
         
            +
            - lib/squib/dsl/svg.rb
         
     | 
| 
      
 487 
     | 
    
         
            +
            - lib/squib/dsl/text.rb
         
     | 
| 
      
 488 
     | 
    
         
            +
            - lib/squib/dsl/text_embed.rb
         
     | 
| 
      
 489 
     | 
    
         
            +
            - lib/squib/dsl/triangle.rb
         
     | 
| 
      
 490 
     | 
    
         
            +
            - lib/squib/dsl/units.rb
         
     | 
| 
      
 491 
     | 
    
         
            +
            - lib/squib/dsl/xlsx.rb
         
     | 
| 
      
 492 
     | 
    
         
            +
            - lib/squib/dsl/yaml.rb
         
     | 
| 
      
 493 
     | 
    
         
            +
            - lib/squib/errors_warnings/warn_unexpected_params.rb
         
     | 
| 
       416 
494 
     | 
    
         
             
            - lib/squib/graphics/background.rb
         
     | 
| 
       417 
495 
     | 
    
         
             
            - lib/squib/graphics/cairo_context_wrapper.rb
         
     | 
| 
       418 
496 
     | 
    
         
             
            - lib/squib/graphics/embedding_utils.rb
         
     | 
| 
         @@ -426,7 +504,11 @@ files: 
     | 
|
| 
       426 
504 
     | 
    
         
             
            - lib/squib/graphics/shapes.rb
         
     | 
| 
       427 
505 
     | 
    
         
             
            - lib/squib/graphics/showcase.rb
         
     | 
| 
       428 
506 
     | 
    
         
             
            - lib/squib/graphics/text.rb
         
     | 
| 
      
 507 
     | 
    
         
            +
            - lib/squib/import/csv_importer.rb
         
     | 
| 
       429 
508 
     | 
    
         
             
            - lib/squib/import/data_frame.rb
         
     | 
| 
      
 509 
     | 
    
         
            +
            - lib/squib/import/quantity_exploder.rb
         
     | 
| 
      
 510 
     | 
    
         
            +
            - lib/squib/import/xlsx_importer.rb
         
     | 
| 
      
 511 
     | 
    
         
            +
            - lib/squib/import/yaml_importer.rb
         
     | 
| 
       430 
512 
     | 
    
         
             
            - lib/squib/layout_parser.rb
         
     | 
| 
       431 
513 
     | 
    
         
             
            - lib/squib/progress.rb
         
     | 
| 
       432 
514 
     | 
    
         
             
            - lib/squib/sample_helpers.rb
         
     | 
| 
         @@ -481,13 +563,15 @@ files: 
     | 
|
| 
       481 
563 
     | 
    
         
             
            - samples/text/_text.rb
         
     | 
| 
       482 
564 
     | 
    
         
             
            - samples/text/_text_options.rb
         
     | 
| 
       483 
565 
     | 
    
         
             
            - samples/text/bug134.rb
         
     | 
| 
      
 566 
     | 
    
         
            +
            - samples/units/_cells.rb
         
     | 
| 
      
 567 
     | 
    
         
            +
            - samples/units/_shorthands.rb
         
     | 
| 
       484 
568 
     | 
    
         
             
            - samples/units/_units.rb
         
     | 
| 
       485 
569 
     | 
    
         
             
            - squib.gemspec
         
     | 
| 
       486 
570 
     | 
    
         
             
            homepage: https://github.com/andymeneely/squib
         
     | 
| 
       487 
571 
     | 
    
         
             
            licenses:
         
     | 
| 
       488 
572 
     | 
    
         
             
            - MIT
         
     | 
| 
       489 
573 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       490 
     | 
    
         
            -
            post_install_message: 
         
     | 
| 
      
 574 
     | 
    
         
            +
            post_install_message: Happy Squibbing!
         
     | 
| 
       491 
575 
     | 
    
         
             
            rdoc_options:
         
     | 
| 
       492 
576 
     | 
    
         
             
            - "--charset=UTF-8"
         
     | 
| 
       493 
577 
     | 
    
         
             
            require_paths:
         
     | 
| 
         @@ -496,15 +580,16 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       496 
580 
     | 
    
         
             
              requirements:
         
     | 
| 
       497 
581 
     | 
    
         
             
              - - ">="
         
     | 
| 
       498 
582 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       499 
     | 
    
         
            -
                  version: 2. 
     | 
| 
      
 583 
     | 
    
         
            +
                  version: 2.5.0
         
     | 
| 
       500 
584 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       501 
585 
     | 
    
         
             
              requirements:
         
     | 
| 
       502 
     | 
    
         
            -
              - - " 
     | 
| 
      
 586 
     | 
    
         
            +
              - - ">"
         
     | 
| 
       503 
587 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       504 
     | 
    
         
            -
                  version:  
     | 
| 
       505 
     | 
    
         
            -
            requirements: 
     | 
| 
       506 
     | 
    
         
            -
             
     | 
| 
       507 
     | 
    
         
            -
             
     | 
| 
      
 588 
     | 
    
         
            +
                  version: 1.3.1
         
     | 
| 
      
 589 
     | 
    
         
            +
            requirements:
         
     | 
| 
      
 590 
     | 
    
         
            +
            - On Windows, you need the Ruby+DevKit. See https://rubyinstaller.org/downloads
         
     | 
| 
      
 591 
     | 
    
         
            +
            rubygems_version: 3.1.4
         
     | 
| 
      
 592 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       508 
593 
     | 
    
         
             
            specification_version: 2
         
     | 
| 
       509 
594 
     | 
    
         
             
            summary: A Ruby DSL for prototyping card games
         
     | 
| 
       510 
595 
     | 
    
         
             
            test_files:
         
     | 
| 
         @@ -553,4 +638,6 @@ test_files: 
     | 
|
| 
       553 
638 
     | 
    
         
             
            - samples/text/_text.rb
         
     | 
| 
       554 
639 
     | 
    
         
             
            - samples/text/_text_options.rb
         
     | 
| 
       555 
640 
     | 
    
         
             
            - samples/text/bug134.rb
         
     | 
| 
      
 641 
     | 
    
         
            +
            - samples/units/_cells.rb
         
     | 
| 
      
 642 
     | 
    
         
            +
            - samples/units/_shorthands.rb
         
     | 
| 
       556 
643 
     | 
    
         
             
            - samples/units/_units.rb
         
     |