squib 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3977769e38bdf72d2dd035c62648b2ffaae2085c
4
+ data.tar.gz: e9d8ad1586160caee1be3d2b497ab9c71daa56b2
5
+ SHA512:
6
+ metadata.gz: e8238d6b6e236a22a2bd164712771b9366f20e3d4d04101b0992d2517d666bd0e6cd8996c8ba24aeb56133b2d30b405ba37fd26a44f8d5b3017b1146bde63ad1
7
+ data.tar.gz: 4593d6fae7feac75dab22efa560042c7fc932f1b056d029ef53464bac21a1a2bda6a711336ef358c831de33930344251380975e66f16c73a1f1f8c1447191c0b
@@ -0,0 +1,26 @@
1
+ .DS_Store
2
+ *.gem
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ *.bundle
20
+ *.so
21
+ *.o
22
+ *.a
23
+ mkmf.log
24
+ _img
25
+ samples/_img
26
+ samples/_output/*.png
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.0
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Andy Meneely
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,55 @@
1
+ [![Gem Version](https://badge.fury.io/rb/squib.svg)](https://rubygems.org/gems/squib)
2
+ [![Build Status](https://secure.travis-ci.org/andymeneely/squib.svg?branch=master)](https://travis-ci.org/andymeneely/squib)
3
+ [![Dependency Status](https://gemnasium.com/andymeneely/squib.svg)](https://gemnasium.com/andymeneely/squib)
4
+
5
+ # Squib
6
+
7
+ Squib is a ruby DSL for prototyping card and board games. Think of it like [nanDeck](http://nandeck.it) done "the Ruby way". Start with some basic commands and generate print-ready PNGs and PDFs.
8
+
9
+ Squib is currently pre-release alpha.
10
+
11
+ ```ruby
12
+ require 'squib'
13
+
14
+ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
15
+ background color: [1.0,1.0,1.0]
16
+ data = xlsx file: 'sample.xlsx'
17
+
18
+ rect x: 15, y: 15, width: 795, height: 1095, x_radius: 50, y_radius: 50
19
+
20
+ text str: data['name'], x: 250, y: 55, font: 'Arial 54'
21
+ text str: data['level'], x: 65, y: 40, font: 'Arial 72'
22
+
23
+ png file: 'icon.png', x: 665, y: 30
24
+
25
+ save format: :png
26
+ end
27
+ ```
28
+
29
+ ## Installation
30
+
31
+ Add this line to your application's Gemfile:
32
+
33
+ gem 'squib'
34
+
35
+ And then execute:
36
+
37
+ $ bundle
38
+
39
+ Or install it yourself as:
40
+
41
+ $ gem install squib
42
+
43
+ Note: Squib is based on the `cairo` and `pango` extensions, which require at least Ruby 2.0
44
+
45
+ ## API
46
+
47
+ API docs to be written. See the `samples` directory.
48
+
49
+ ## Contributing
50
+
51
+ 1. Fork it ( https://github.com/[my-github-username]/squib/fork )
52
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
53
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
54
+ 4. Push to the branch (`git push origin my-new-feature`)
55
+ 5. Create a new Pull Request
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+ require 'squib'
@@ -0,0 +1,2 @@
1
+ require 'squib/deck'
2
+ require 'squib/card'
@@ -0,0 +1,12 @@
1
+ module Squib
2
+ class Deck
3
+ #module API
4
+
5
+ def background(range: :all, color: '#000000')
6
+ range = rangeify(range)
7
+ range.each { |i| @cards[i].background(color) }
8
+ end
9
+
10
+ #end
11
+ end
12
+ end
@@ -0,0 +1,29 @@
1
+ require 'roo'
2
+
3
+ module Squib
4
+ class Deck
5
+
6
+ def csv(file: 'deck.csv', header: true)
7
+ raise 'Not implemented!'
8
+ end
9
+
10
+ def xlsx(file: 'deck.xlsx', sheet: 0)
11
+ s = Roo::Excelx.new(file)
12
+ s.default_sheet = s.sheets.first
13
+ data = {}
14
+ s.first_column.upto(s.last_column) do |col|
15
+ header = s.cell(s.first_row,col).to_s
16
+ data[header] = []
17
+ (s.first_row+1).upto(s.last_row) do |row|
18
+ cell = s.cell(row,col)
19
+ # Roo hack for avoiding unnecessary .0's on whole integers
20
+ cell = s.excelx_value(row,col) if s.excelx_type(row,col) == [:numeric_or_formula, "General"]
21
+ data[header] << cell
22
+ end#row
23
+ end#col
24
+ data
25
+ end#xlsx
26
+
27
+ end
28
+ end
29
+
@@ -0,0 +1,11 @@
1
+ module Squib
2
+ class Deck
3
+
4
+ def png(range=:all, file: nil, x: 0, y: 0)
5
+ range = rangeify(range)
6
+ file = fileify(file)
7
+ range.each{ |i| @cards[i].png(file, x, y) }
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Squib
2
+ class Deck
3
+
4
+ def save(range: :all, dir: "_output", format: :png, prefix: "card_")
5
+ format = [format].flatten
6
+ save_png(range: range, dir: dir, prefix: prefix) if format.include? :png
7
+ save_pdf if format.include? :pdf
8
+ end
9
+
10
+ def save_png(range: :all, dir: "_output", prefix: 'card_')
11
+ range = rangeify(range)
12
+ range.each { |i| @cards[i].save_png(i, dir, prefix) }
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module Squib
2
+ class Deck
3
+
4
+ def rect(range: :all, x: 0, y: 0, width: 825, height: 1125, \
5
+ x_radius: 0, y_radius: 0)
6
+ range = rangeify(range)
7
+ range.each do |i|
8
+ @cards[i].draw_rectangle(x, y, width, height, x_radius, y_radius)
9
+ end
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ module Squib
2
+ class Deck
3
+ def fontify (font)
4
+ font = 'Arial 36' if font==:use_set
5
+ font
6
+ end
7
+
8
+ def font(type: 'Arial', size: 12, **options)
9
+ raise 'Not implemented!'
10
+ end
11
+
12
+ def set_font(type: 'Arial', size: 12, **options)
13
+ raise 'Not implemented!'
14
+ end
15
+
16
+ def text(range: :all, str: '', font: :use_set, x: 0, y: 0, **options)
17
+ range = rangeify(range)
18
+ str = [str] * @cards.size unless str.respond_to? :each
19
+ font = fontify(font)
20
+ range.each do |i|
21
+ cards[i].text(str[i], font, x, y, options)
22
+ end
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ require 'cairo'
2
+
3
+ module Squib
4
+
5
+ class Card
6
+ attr_reader :width, :height
7
+ attr_accessor :cairo_surface, :cairo_context
8
+
9
+ def initialize(width, height)
10
+ @width=width; @height=height
11
+ @cairo_surface = Cairo::ImageSurface.new(width,height)
12
+ @cairo_context = Cairo::Context.new(@cairo_surface)
13
+ end
14
+
15
+ ########################
16
+ ### BACKEND GRAPHICS ###
17
+ ########################
18
+ require 'squib/graphics/background'
19
+ require 'squib/graphics/image'
20
+ require 'squib/graphics/save_doc'
21
+ require 'squib/graphics/save_images'
22
+ require 'squib/graphics/shapes'
23
+ require 'squib/graphics/text'
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,49 @@
1
+ require 'squib/card'
2
+
3
+ module Squib
4
+ class Deck
5
+ include Enumerable
6
+ attr_reader :width, :height
7
+ attr_reader :cards
8
+
9
+ def initialize(width: 825, height: 1125, cards: 1, &block)
10
+ @width=width; @height=height
11
+ @cards = []
12
+ cards.times{ @cards << Squib::Card.new(width, height) }
13
+ if block_given?
14
+ instance_eval(&block)
15
+ end
16
+ end
17
+
18
+ def [](key)
19
+ @cards[key]
20
+ end
21
+
22
+ #For Enumerable
23
+ def each(&block)
24
+ @cards.each { |card| block.call(card) }
25
+ end
26
+
27
+ def rangeify (range)
28
+ range = 0..(@cards.size-1) if range == :all
29
+ range = range..range if range.is_a? Integer
30
+ return range
31
+ end
32
+
33
+ def fileify(file)
34
+ raise 'File #{file} does not exist!' unless File.exists? file
35
+ file
36
+ end
37
+
38
+ ##################
39
+ ### PUBLIC API ###
40
+ ##################
41
+ require 'squib/api/background'
42
+ require 'squib/api/data'
43
+ require 'squib/api/image'
44
+ require 'squib/api/save'
45
+ require 'squib/api/shapes'
46
+ require 'squib/api/text'
47
+
48
+ end
49
+ end
@@ -0,0 +1,11 @@
1
+ module Squib
2
+ class Card
3
+
4
+ def background(color)
5
+ cc = cairo_context
6
+ cc.set_source_rgb(*color)
7
+ cc.paint
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module Squib
2
+ class Card
3
+
4
+ def png(file, x, y)
5
+ cc = cairo_context
6
+ png = Cairo::ImageSurface.from_png(file)
7
+ cc.set_source(png, x, y)
8
+ cc.paint
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ module Squib
2
+ class Deck
3
+
4
+ def save_pdf
5
+ #paper is 8.5x11
6
+ # PDF points are 1/72 of an inch
7
+ raise "Not implemented yet!"
8
+ width = 8.5 * 72
9
+ height = 11 * 72
10
+ cc = Cairo::Context.new(Cairo::PDFSurface.new('_img/deck.pdf', width, height))
11
+ x = 10
12
+ y = 10
13
+ @cards.each_with_index do |card, i|
14
+ cc.move_to(x,y)
15
+ x += 825*i
16
+ cc.set_source(card.cairo_surface, 0, 300)
17
+ cc.paint
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ module Squib
2
+ class Card
3
+
4
+ def save_png(i, dir, prefix)
5
+ cairo_context.target.write_to_png("#{dir}/#{prefix}#{i}.png")
6
+ end
7
+
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Squib
2
+ class Card
3
+
4
+ def draw_rectangle(x, y, width, height, x_radius, y_radius)
5
+ cc = cairo_context
6
+ cc.set_source_rgb(0.0,0.0,0.0)
7
+ cc.rounded_rectangle(x, y, width, height, x_radius, y_radius)
8
+ cc.stroke
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,28 @@
1
+ require 'pango'
2
+
3
+ module Squib
4
+ class Card
5
+
6
+ def text(str, font, x, y, options)
7
+ cc = cairo_context
8
+ cc.set_source_color(:black) #black
9
+ cc.move_to(x,y)
10
+ layout = cc.create_pango_layout
11
+ layout.text = str.to_s
12
+ w = options[:width] ; h = options[:height]
13
+ w ||= (@width - 2*x) ; h ||= (@height - 2*y) # default centers to x,y
14
+ w *= Pango::SCALE ; h *= Pango::SCALE
15
+ layout.width=w ; layout.height=h
16
+ layout.wrap = Pango::WRAP_WORD
17
+ layout.justify = true
18
+ layout.alignment = Pango::ALIGN_LEFT
19
+ layout.font_description = Pango::FontDescription.new(font)
20
+ #Center it vertically?
21
+ #puts "Height: #{layout.extents[1].height / Pango::SCALE}"
22
+ #puts "Height: #{layout.pixel_size[1]*layout.line_count}"
23
+ cc.update_pango_layout(layout)
24
+ cc.show_pango_layout(layout)
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,3 @@
1
+ module Squib
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,25 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <style>
5
+ img{
6
+ border: 1px solid black;
7
+ }
8
+ </style>
9
+ <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
10
+ <script>
11
+ setInterval(function () {
12
+ $("#img0").attr("src", "sample_excel_0.png?"+new Date().getTime());
13
+ $("#img1").attr("src", "sample_excel_1.png?"+new Date().getTime());
14
+
15
+ }, 1000);
16
+ </script>
17
+ </head>
18
+
19
+ <body>
20
+ <h1>Cards</h1>
21
+ <img id="img0" width=300 src="sample_excel_0.png"/>
22
+ <img id="img1" width=300 src="sample_excel_1.png"/>
23
+ </body>
24
+
25
+ </html>
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ require 'squib'
3
+
4
+ data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
5
+ 'level' => [1,2,3]}
6
+ longtext = "Hello, World! What do you know about tweetle beetles? well... \nWhen tweetle beetles fight, it's called a tweetle beetle battle. And when they battle in a puddle, it's a tweetle beetle puddle battle. AND when tweetle beetles battle with paddles in a puddle, they call it a tweetle beetle puddle paddle battle. AND... When beetles battle beetles in a puddle paddle battle and the beetle battle puddle is a puddle in a bottle... ..they call this a tweetle beetle bottle puddle paddle battle muddle. AND... When beetles fight these battles in a bottle with their paddles and the bottle's on a poodle and the poodle's eating noodles... ...they call this a muddle puddle tweetle poodle beetle noodle bottle paddle battle."
7
+
8
+ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
9
+ background color: [1.0,1.0,1.0]
10
+ rect x: 15, y: 15, width: 795, height: 1095, x_radius: 50, y_radius: 50
11
+ rect x: 30, y: 30, width: 128, height: 128, x_radius: 25, y_radius: 25
12
+
13
+ text str: data['name'], x: 250, y: 55, font: 'Arial 54'
14
+ text str: data['level'], x: 65, y: 40, font: 'Arial 72'
15
+ text str: longtext, x: 100, y: 600, font: 'Arial 16'
16
+
17
+ png file: 'shiny-purse.png', x: 665, y: 30
18
+
19
+ save format: :png
20
+ end
21
+
22
+ puts "Done!"
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ require 'squib'
3
+
4
+ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
5
+ background color: [1.0,1.0,1.0]
6
+
7
+ data = xlsx file: 'sample.xlsx', sheet: 0
8
+
9
+ text str: data['Name'], x: 250, y: 55, font: 'Arial 54'
10
+ text str: data['Level'], x: 65, y: 65, font: 'Arial 72'
11
+ text str: data['Description'], x: 65, y: 600, font: 'Arial 36'
12
+
13
+ save format: :png, prefix: 'sample_excel_'
14
+ end
15
+
16
+ puts "Done!"
Binary file
Binary file
@@ -0,0 +1,48 @@
1
+ require 'squib/deck'
2
+
3
+ describe Squib::Deck do
4
+
5
+ it "initializes with default parameters" do
6
+ d = Squib::Deck.new
7
+ expect(d.width).to eq(825)
8
+ expect(d.height).to eq(1125)
9
+ expect(d.cards.size).to eq(1)
10
+ end
11
+
12
+ context "in dealing with ranges" do
13
+ it "calls text on all cards by default" do
14
+ card1 = instance_double(Squib::Card)
15
+ card2 = instance_double(Squib::Card)
16
+ expect(card1).to receive(:text).with('blah','Arial 36',0,0,{}).once
17
+ expect(card2).to receive(:text).with('blah','Arial 36',0,0,{}).once
18
+ Squib::Deck.new do
19
+ @cards = [card1, card2]
20
+ text str: 'blah'
21
+ end
22
+ end
23
+
24
+ it "calls text on some cards with an integer" do
25
+ card1 = instance_double(Squib::Card)
26
+ card2 = instance_double(Squib::Card)
27
+ expect(card2).to receive(:text).with('blah','Arial 36',0,0,{}).once
28
+ Squib::Deck.new do
29
+ @cards = [card1, card2]
30
+ text range: 1, str: 'blah'
31
+ end
32
+ end
33
+
34
+ it "calls text with ranges" do
35
+ card1 = instance_double(Squib::Card)
36
+ card2 = instance_double(Squib::Card)
37
+ card3 = instance_double(Squib::Card)
38
+ expect(card1).to receive(:text).with('blah','Arial 36',0,0,{}).once
39
+ expect(card2).to receive(:text).with('blah','Arial 36',0,0,{}).once
40
+ Squib::Deck.new do
41
+ @cards = [card1, card2, card3]
42
+ text range: 0..1, str: 'blah'
43
+ end
44
+ end
45
+ end
46
+
47
+ end#describe
48
+
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'squib/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "squib"
8
+ spec.version = Squib::VERSION
9
+ spec.authors = ["Andy Meneely"]
10
+ spec.email = ["playconfidencegames@gmail.com"]
11
+ spec.summary = %q{A Ruby API for prototyping card and other tabletop games}
12
+ spec.homepage = ""
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_runtime_dependency 'cairo', '~> 1.12.9'
21
+ spec.add_runtime_dependency 'pango', '~> 2.2.0'
22
+ spec.add_runtime_dependency 'roo', '~> 1.13.2'
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.6"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec", "~> 3.0"
27
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: squib
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andy Meneely
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cairo
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.12.9
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.12.9
27
+ - !ruby/object:Gem::Dependency
28
+ name: pango
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 2.2.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 2.2.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: roo
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.13.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.13.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ description:
98
+ email:
99
+ - playconfidencegames@gmail.com
100
+ executables:
101
+ - squib
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - .gitignore
106
+ - .travis.yml
107
+ - Gemfile
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - bin/squib
112
+ - lib/squib.rb
113
+ - lib/squib/api/background.rb
114
+ - lib/squib/api/data.rb
115
+ - lib/squib/api/image.rb
116
+ - lib/squib/api/save.rb
117
+ - lib/squib/api/shapes.rb
118
+ - lib/squib/api/text.rb
119
+ - lib/squib/card.rb
120
+ - lib/squib/deck.rb
121
+ - lib/squib/graphics/background.rb
122
+ - lib/squib/graphics/image.rb
123
+ - lib/squib/graphics/save_doc.rb
124
+ - lib/squib/graphics/save_images.rb
125
+ - lib/squib/graphics/shapes.rb
126
+ - lib/squib/graphics/text.rb
127
+ - lib/squib/version.rb
128
+ - samples/_output/watch.html
129
+ - samples/basic.rb
130
+ - samples/excel.rb
131
+ - samples/sample.xlsx
132
+ - samples/shiny-purse.png
133
+ - spec/deck_spec.rb
134
+ - squib.gemspec
135
+ homepage: ''
136
+ licenses:
137
+ - MIT
138
+ metadata: {}
139
+ post_install_message:
140
+ rdoc_options: []
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ requirements: []
154
+ rubyforge_project:
155
+ rubygems_version: 2.2.2
156
+ signing_key:
157
+ specification_version: 4
158
+ summary: A Ruby API for prototyping card and other tabletop games
159
+ test_files:
160
+ - spec/deck_spec.rb