20 changed files with 304 additions and 91 deletions
@ -0,0 +1,8 @@
|
||||
group :default do |
||||
guard 'rake', :task => 'spec' do |
||||
watch %r{.*\.xlsx$} |
||||
watch %r{.*\.rb$} |
||||
watch %r{.*\.yml$} |
||||
watch %r{.*\.rst$} |
||||
end |
||||
end |
||||
@ -1,75 +0,0 @@
|
||||
require_relative '../args/card_range' |
||||
require_relative '../args/hand_special' |
||||
require_relative '../args/save_batch' |
||||
require_relative '../args/sheet' |
||||
require_relative '../args/showcase_special' |
||||
require_relative '../args/sprue_file' |
||||
require_relative '../graphics/save_pdf' |
||||
require_relative '../graphics/save_sprue' |
||||
require_relative '../sprues/sprue' |
||||
|
||||
module Squib |
||||
class Deck |
||||
|
||||
# DSL method. See http://squib.readthedocs.io |
||||
def save(opts = {}) |
||||
save_png(opts) if Array(opts[:format]).include? :png |
||||
save_pdf(opts) if Array(opts[:format]).include? :pdf |
||||
self |
||||
end |
||||
|
||||
# DSL method. See http://squib.readthedocs.io |
||||
def save_pdf(opts = {}) |
||||
range = Args::CardRange.new(opts[:range], deck_size: size) |
||||
sheet = Args::Sheet.new({ file: 'output.pdf' }).extract!(opts, self) |
||||
sprue_file = Args::SprueFile.new.load!(opts, expand_by: size) |
||||
|
||||
if sprue_file.sprue.nil? |
||||
Graphics::SavePDF.new(self).render_pdf(range, sheet) |
||||
else |
||||
tmpl = Sprue.load sprue_file.sprue, dpi |
||||
Graphics::SaveSpruePDF. |
||||
new(self, tmpl, sheet). |
||||
render_sheet(range) |
||||
end |
||||
end |
||||
|
||||
# DSL method. See http://squib.readthedocs.io |
||||
def save_png(opts = {}) |
||||
range = Args::CardRange.new(opts[:range], deck_size: size) |
||||
batch = Args::SaveBatch.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) |
||||
@progress_bar.start("Saving PNGs to #{batch.summary}", size) do |bar| |
||||
range.each do |i| |
||||
@cards[i].save_png(batch[i]) |
||||
bar.increment |
||||
end |
||||
end |
||||
end |
||||
|
||||
# DSL method. See http://squib.readthedocs.io |
||||
def save_sheet(opts = {}) |
||||
range = Args::CardRange.new(opts[:range], deck_size: size) |
||||
batch = Args::SaveBatch.new.load!(opts, expand_by: size, layout: layout, dpi: dpi) |
||||
sheet = Args::Sheet.new({ margin: 0 }).extract! opts, self |
||||
sprue_file = Args::SprueFile.new.load!(opts, expand_by: size) |
||||
|
||||
if sprue_file.sprue.nil? |
||||
render_sheet(range, batch, sheet) |
||||
else |
||||
tmpl = Sprue.load sprue_file.sprue, dpi |
||||
Graphics::SaveSpruePNG. |
||||
new(self, tmpl, sheet). |
||||
render_sheet(range) |
||||
end |
||||
end |
||||
|
||||
# DSL method. See http://squib.readthedocs.io |
||||
def hand(opts = {}) |
||||
range = Args::CardRange.new(opts[:range], deck_size: size) |
||||
hand = Args::HandSpecial.new(height).load!(opts, expand_by: size, layout: layout, dpi: dpi) |
||||
sheet = Args::Sheet.new({ file: 'hand.png', trim_radius: 0 }).extract!(opts, self) |
||||
render_hand(range, sheet, hand) |
||||
end |
||||
|
||||
end |
||||
end |
||||
@ -0,0 +1,42 @@
|
||||
require_relative '../args/card_range' |
||||
require_relative '../args/hand_special' |
||||
require_relative '../args/sheet' |
||||
require_relative '../errors_warnings/warn_unexpected_params' |
||||
require_relative '../graphics/hand' |
||||
|
||||
module Squib |
||||
class Deck |
||||
def hand(opts = {}) |
||||
DSL::Hand.new(self, __callee__).run(opts) |
||||
end |
||||
end |
||||
|
||||
module DSL |
||||
class Hand |
||||
include WarnUnexpectedParams |
||||
attr_reader :dsl_method, :deck |
||||
|
||||
def initialize(deck, dsl_method) |
||||
@deck = deck |
||||
@dsl_method = dsl_method |
||||
@bar = deck.progress_bar |
||||
end |
||||
|
||||
def self.accepted_params |
||||
%i( |
||||
file dir range |
||||
radius angle_range margin fill_color |
||||
trim trim_radius |
||||
) |
||||
end |
||||
|
||||
def run(opts) |
||||
warn_if_unexpected opts |
||||
range = Args.extract_range opts, deck |
||||
sheet = Args.extract_sheet opts, deck, {file: 'hand.png'} |
||||
hand = Args.extract_hand_special opts, deck |
||||
deck.render_hand(range, sheet, hand) |
||||
end |
||||
end |
||||
end |
||||
end |
||||
@ -0,0 +1,21 @@
|
||||
require 'rainbow/refinement' |
||||
require_relative 'save_png' |
||||
require_relative 'save_pdf' |
||||
|
||||
module Squib |
||||
class Deck |
||||
using Rainbow # we can colorize strings now! |
||||
def save(opts = {}) |
||||
fmts = Array(opts[:format]) |
||||
warn 'Must specify format :png and/or :pdf' if fmts.empty? |
||||
opts.delete :format # not needed anymore |
||||
save_png(opts) if fmts.include? :png |
||||
save_pdf(opts) if fmts.include? :pdf |
||||
uns = fmts - [:pdf, :png ] |
||||
unless uns.empty? |
||||
warn "Unsupported format(s) #{uns} to #{'save'.cyan}()", uplevel: 1 |
||||
end |
||||
self |
||||
end |
||||
end |
||||
end |
||||
@ -0,0 +1,50 @@
|
||||
require_relative '../errors_warnings/warn_unexpected_params' |
||||
require_relative '../graphics/save_pdf' |
||||
require_relative '../graphics/save_sprue' |
||||
|
||||
|
||||
module Squib |
||||
class Deck |
||||
def save_pdf(opts = {}) |
||||
DSL::SavePDF.new(self, __callee__).run(opts) |
||||
end |
||||
end |
||||
|
||||
module DSL |
||||
class SavePDF |
||||
include WarnUnexpectedParams |
||||
attr_reader :dsl_method, :deck |
||||
|
||||
def initialize(deck, dsl_method) |
||||
@deck = deck |
||||
@dsl_method = dsl_method |
||||
@bar = deck.progress_bar |
||||
end |
||||
|
||||
def self.accepted_params |
||||
%i( |
||||
file dir sprue |
||||
width height margin gap |
||||
crop_marks crop_stroke_color crop_stroke_dash crop_stroke_width |
||||
crop_margin_bottom crop_margin_left crop_margin_right crop_margin_top |
||||
rtl trim trim_radius |
||||
range |
||||
) |
||||
end |
||||
|
||||
def run(opts) |
||||
warn_if_unexpected opts |
||||
range = Args.extract_range opts, deck |
||||
sheet = Args.extract_sheet opts, deck |
||||
sprue_file = Args.extract_sprue_file opts, deck |
||||
if sprue_file.sprue.nil? |
||||
Graphics::SavePDF.new(deck).render_pdf(range, sheet) |
||||
else |
||||
tmpl = Sprue.load sprue_file.sprue, deck.dpi |
||||
Graphics::SaveSpruePDF.new(deck, tmpl, sheet).render_sheet(range) |
||||
end |
||||
|
||||
end |
||||
end |
||||
end |
||||
end |
||||
@ -0,0 +1,46 @@
|
||||
require_relative '../errors_warnings/warn_unexpected_params' |
||||
|
||||
|
||||
module Squib |
||||
class Deck |
||||
def save_png(opts = {}) |
||||
DSL::SavePNG.new(self, __callee__).run(opts) |
||||
end |
||||
end |
||||
|
||||
module DSL |
||||
class SavePNG |
||||
include WarnUnexpectedParams |
||||
attr_reader :dsl_method, :deck |
||||
|
||||
def initialize(deck, dsl_method) |
||||
@deck = deck |
||||
@dsl_method = dsl_method |
||||
@bar = deck.progress_bar |
||||
end |
||||
|
||||
def self.accepted_params |
||||
%i( |
||||
range |
||||
dir prefix count_format |
||||
rotate trim trim_radius |
||||
) |
||||
end |
||||
|
||||
def run(opts) |
||||
warn_if_unexpected opts |
||||
Dir.chdir(deck.img_dir) do |
||||
range = Args.extract_range opts, deck |
||||
batch = Args.extract_save_batch opts, deck |
||||
@bar.start("Saving PNGs to #{batch.summary}", deck.size) do |bar| |
||||
range.each do |i| |
||||
deck.cards[i].save_png(batch[i]) |
||||
bar.increment |
||||
end |
||||
end |
||||
end |
||||
|
||||
end |
||||
end |
||||
end |
||||
end |
||||
@ -0,0 +1,53 @@
|
||||
require_relative '../args/card_range' |
||||
require_relative '../args/save_batch' |
||||
require_relative '../args/sheet' |
||||
require_relative '../args/sprue_file' |
||||
require_relative '../errors_warnings/warn_unexpected_params' |
||||
require_relative '../graphics/save_doc' |
||||
require_relative '../graphics/save_sprue' |
||||
require_relative '../sprues/sprue' |
||||
|
||||
|
||||
module Squib |
||||
class Deck |
||||
def save_sheet(opts = {}) |
||||
DSL::SaveSheet.new(self, __callee__).run(opts) |
||||
end |
||||
end |
||||
|
||||
module DSL |
||||
class SaveSheet |
||||
include WarnUnexpectedParams |
||||
attr_reader :dsl_method, :deck |
||||
|
||||
def initialize(deck, dsl_method) |
||||
@deck = deck |
||||
@dsl_method = dsl_method |
||||
end |
||||
|
||||
def self.accepted_params |
||||
%i( |
||||
range sprue |
||||
columns rows rtl |
||||
prefix count_format dir |
||||
margin gap trim trim_radius |
||||
) |
||||
end |
||||
|
||||
def run(opts) |
||||
warn_if_unexpected opts |
||||
range = Args.extract_range opts, deck |
||||
batch = Args.extract_save_batch opts, deck |
||||
sheet = Args.extract_sheet opts, deck, { margin: 0 } |
||||
sprue_file = Args.extract_sprue_file opts, deck |
||||
if sprue_file.sprue.nil? |
||||
deck.render_sheet(range, batch, sheet) |
||||
else |
||||
tmpl = Sprue.load sprue_file.sprue, deck.dpi |
||||
Graphics::SaveSpruePNG.new(deck, tmpl, sheet).render_sheet(range) |
||||
end |
||||
|
||||
end |
||||
end |
||||
end |
||||
end |
||||
@ -0,0 +1,21 @@
|
||||
require 'spec_helper' |
||||
|
||||
describe Squib::DSL do |
||||
let(:deck) { Squib::Deck.new } |
||||
|
||||
Squib::DSL.constants.each do |m| |
||||
it "method #{m} calls warn_if_unexpected" do |
||||
method_obj = Squib::DSL.const_get(m).new(deck, m) |
||||
expect(method_obj).to receive(:warn_if_unexpected).and_throw(:warned) |
||||
catch :warned do |
||||
method_obj.run({}) |
||||
end |
||||
end |
||||
|
||||
it "method #{m} has dsl_method and deck defined" do |
||||
method_obj = Squib::DSL.const_get(m).new(deck, m) |
||||
expect(method_obj).to have_attributes({deck: deck, dsl_method: m}) |
||||
end |
||||
end |
||||
|
||||
end |
||||
@ -0,0 +1,7 @@
|
||||
require 'spec_helper' |
||||
|
||||
describe Squib do |
||||
|
||||
it 'has a sample exercising every expected option' |
||||
|
||||
end |
||||
@ -0,0 +1,32 @@
|
||||
require 'squib/deck' |
||||
require 'spec_helper' |
||||
|
||||
describe Squib::Deck do |
||||
let(:deck) { Squib::Deck.new } |
||||
|
||||
context '#save' do |
||||
it 'delegates to both based on format options: :pdf, :png' do |
||||
expect(deck).to receive(:save_png).once.with({ prefix: 'foo' }) |
||||
expect(deck).to receive(:save_pdf).once.with({ prefix: 'foo' }) |
||||
deck.save format: [:png, :pdf], prefix: 'foo' |
||||
end |
||||
|
||||
it 'delegates to just pdf based on format options: :pdf' do |
||||
expect(deck).to receive(:save_pdf).once.with({ prefix: 'foo' }) |
||||
deck.save format: :pdf, prefix: 'foo' |
||||
end |
||||
|
||||
it 'delegates to just png based on format options: :png' do |
||||
expect(deck).to receive(:save_png).once.with({ prefix: 'foo' }) |
||||
deck.save format: :png, prefix: 'foo' |
||||
end |
||||
|
||||
it 'warns on :svg' do |
||||
expect(deck).to receive(:save_png).once.with({ prefix: 'foo' }) |
||||
expect(deck).to receive(:save_pdf).once.with({ prefix: 'foo' }) |
||||
expect(deck).to receive(:warn).once |
||||
deck.save format: [:png, :svg, :pdf], prefix: 'foo' |
||||
end |
||||
|
||||
end |
||||
end |
||||
Loading…
Reference in new issue