text method migrated!
parent
3590280c98
commit
272892d358
|
|
@ -27,7 +27,7 @@ font_size
|
|||
|
||||
.. include:: /args/xy.rst
|
||||
|
||||
markup:
|
||||
markup
|
||||
default: ``false``
|
||||
|
||||
When set to true, various extra styles are allowed. See :ref:`Markup <text-markup>`.
|
||||
|
|
@ -156,6 +156,11 @@ file
|
|||
|
||||
file(s) to read in, relative to the root directory or ``img_dir`` if set in the config.
|
||||
|
||||
data
|
||||
default: ``nil``
|
||||
|
||||
render from an SVG XML string. Overrides ``file`` if both are specified (a warning is shown).
|
||||
|
||||
id
|
||||
default: ``nil``
|
||||
|
||||
|
|
@ -192,7 +197,7 @@ dy
|
|||
|
||||
"delta y", or adjust the icon vertically by y pixels
|
||||
|
||||
flip_horiztonal
|
||||
flip_horizontal
|
||||
default: ``false``
|
||||
|
||||
Flip this image about its center horizontally (i.e. left becomes right and vice versa).
|
||||
|
|
@ -252,7 +257,7 @@ dy
|
|||
|
||||
"delta y", or adjust the icon vertically by y pixels
|
||||
|
||||
flip_horiztonal
|
||||
flip_horizontal
|
||||
default: ``false``
|
||||
|
||||
Flip this image about its center horizontally (i.e. left becomes right and vice versa).
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
require_relative 'text_embed'
|
||||
require_relative '../args/box'
|
||||
require_relative '../args/card_range'
|
||||
require_relative '../args/draw'
|
||||
require_relative '../args/paragraph'
|
||||
|
||||
module Squib
|
||||
class Deck
|
||||
|
||||
# DSL method. See http://squib.readthedocs.io
|
||||
def text(opts = {})
|
||||
range = Args::CardRange.new(opts[:range], deck_size: size)
|
||||
para = Args::Paragraph.new(font).load!(opts, expand_by: size, layout: layout)
|
||||
box = Args::Box.new(self, { width: :auto, height: :auto }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
trans = Args::Transform.new.load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
draw = Args::Draw.new(custom_colors, { stroke_width: 0.0 }).load!(opts, expand_by: size, layout: layout, dpi: dpi)
|
||||
embed = TextEmbed.new(size, custom_colors, layout, dpi, img_dir)
|
||||
yield(embed) if block_given? # store the opts for later use
|
||||
extents = Array.new(@cards.size)
|
||||
range.each { |i| extents[i] = @cards[i].text(embed, para[i], box[i], trans[i], draw[i], dpi) }
|
||||
return extents
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
require_relative '../args/box'
|
||||
require_relative '../args/card_range'
|
||||
require_relative '../args/embed_adjust'
|
||||
require_relative '../args/embed_key'
|
||||
require_relative '../args/input_file'
|
||||
require_relative '../args/paint'
|
||||
require_relative '../args/transform'
|
||||
|
||||
module Squib
|
||||
class TextEmbed
|
||||
# :nodoc:
|
||||
# @api private
|
||||
attr_reader :rules
|
||||
|
||||
# :nodoc:
|
||||
# @api private
|
||||
def initialize(deck_size, custom_colors, layout, dpi, img_dir)
|
||||
@deck_size = deck_size
|
||||
@custom_colors = custom_colors
|
||||
@layout = layout
|
||||
@dpi = dpi
|
||||
@img_dir = img_dir
|
||||
@rules = {} # store an array of options for later usage
|
||||
end
|
||||
|
||||
# DSL method. See http://squib.readthedocs.io
|
||||
def svg(opts = {})
|
||||
key = Args::EmbedKey.new.validate_key(opts[:key])
|
||||
range = Args::CardRange.new(opts[:range], deck_size: @deck_size)
|
||||
paint = Args::Paint.new(@custom_colors).load!(opts, expand_by: @deck_size, layout: @layout)
|
||||
box = Args::Box.new(self, { width: :native, height: :native }).load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
trans = Args::Transform.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
ifile = Args::InputFile.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
svg_args = Args::SvgSpecial.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
rule = { type: :svg, file: ifile, box: box, paint: paint, trans: trans,
|
||||
adjust: adjust, svg_args: svg_args }
|
||||
rule[:draw] = Proc.new do |card, x, y, scale|
|
||||
i = card.index
|
||||
b = box[i]
|
||||
b.x, b.y = x, y
|
||||
b.width = b.width * scale if b.width.is_a? Numeric
|
||||
b.height = b.height * scale if b.height.is_a? Numeric
|
||||
Dir.chdir(@img_dir) do
|
||||
card.svg(ifile[i].file, svg_args[i], b, paint[i], trans[i])
|
||||
end
|
||||
end
|
||||
@rules[key] = rule
|
||||
end
|
||||
|
||||
# DSL method. See http://squib.readthedocs.io
|
||||
def png(opts = {})
|
||||
key = Args::EmbedKey.new.validate_key(opts[:key])
|
||||
range = Args::CardRange.new(opts[:range], deck_size: @deck_size)
|
||||
paint = Args::Paint.new(@custom_colors).load!(opts, expand_by: @deck_size, layout: @layout)
|
||||
box = Args::Box.new(self, { width: :native, height: :native }).load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
trans = Args::Transform.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
ifile = Args::InputFile.new.load!(opts, expand_by: @deck_size, layout: @layout, dpi: @dpi)
|
||||
rule = { type: :png, file: ifile, box: box, paint: paint, trans: trans, adjust: adjust }
|
||||
rule[:draw] = Proc.new do |card, x, y, scale|
|
||||
i = card.index
|
||||
b = box[i]
|
||||
b.x, b.y = x, y
|
||||
b.width = b.width * scale if b.width.is_a? Numeric
|
||||
b.height = b.height * scale if b.height.is_a? Numeric
|
||||
Dir.chdir(@img_dir) do
|
||||
card.png(ifile[i].file, b, paint[i], trans[i])
|
||||
end
|
||||
end
|
||||
@rules[key] = rule
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -3,6 +3,10 @@ require_relative 'arg_loader'
|
|||
|
||||
module Squib::Args
|
||||
|
||||
module_function def extract_para(opts, deck, dsl_method_defaults = {})
|
||||
Paragraph.new(deck.font).extract!(opts, deck)
|
||||
end
|
||||
|
||||
class Paragraph
|
||||
include ArgLoader
|
||||
|
||||
|
|
|
|||
|
|
@ -103,10 +103,7 @@ module Squib
|
|||
### PUBLIC API ###
|
||||
##################
|
||||
require_relative 'api/data'
|
||||
require_relative 'api/groups'
|
||||
require_relative 'api/settings'
|
||||
require_relative 'api/text'
|
||||
require_relative 'api/units'
|
||||
|
||||
###################
|
||||
### DSL METHODS ###
|
||||
|
|
@ -117,6 +114,7 @@ module Squib
|
|||
require_relative 'dsl/cut_zone'
|
||||
require_relative 'dsl/ellipse'
|
||||
require_relative 'dsl/grid'
|
||||
require_relative 'dsl/groups'
|
||||
require_relative 'dsl/hand'
|
||||
require_relative 'dsl/line'
|
||||
require_relative 'dsl/png'
|
||||
|
|
@ -130,7 +128,8 @@ module Squib
|
|||
require_relative 'dsl/showcase'
|
||||
require_relative 'dsl/star'
|
||||
require_relative 'dsl/svg'
|
||||
require_relative 'dsl/text'
|
||||
require_relative 'dsl/triangle'
|
||||
|
||||
require_relative 'dsl/units'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
require_relative '../args/box'
|
||||
require_relative '../args/card_range'
|
||||
require_relative '../args/draw'
|
||||
require_relative '../args/paragraph'
|
||||
require_relative '../args/transform'
|
||||
require_relative '../dsl/text_embed'
|
||||
require_relative '../errors_warnings/warn_unexpected_params'
|
||||
|
||||
module Squib
|
||||
class Deck
|
||||
def text(opts = {})
|
||||
embed = TextEmbed.new self, __callee__
|
||||
yield(embed) if block_given? # store the opts for later use
|
||||
DSL::Text.new(self, __callee__, embed).run(opts)
|
||||
end
|
||||
end
|
||||
|
||||
module DSL
|
||||
class Text
|
||||
include WarnUnexpectedParams
|
||||
attr_reader :dsl_method, :deck, :embed
|
||||
|
||||
def initialize(deck, dsl_method, embed)
|
||||
@deck = deck
|
||||
@dsl_method = dsl_method
|
||||
@embed = embed
|
||||
end
|
||||
|
||||
def self.accepted_params
|
||||
%i(
|
||||
str font font_size x y markup width height
|
||||
wrap spacing align justify valign ellipsize angle dash cap join
|
||||
hint color fill_color
|
||||
stroke_color stroke_width stroke_width stroke_color stroke_strategy
|
||||
range layout
|
||||
)
|
||||
end
|
||||
|
||||
def run(opts)
|
||||
warn_if_unexpected opts
|
||||
range = Args.extract_range opts, deck
|
||||
para = Args.extract_para opts, deck
|
||||
box = Args.extract_box opts, deck, { width: :auto, height: :auto }
|
||||
trans = Args.extract_transform opts, deck
|
||||
draw = Args.extract_draw opts, deck, { stroke_width: 0.0 }
|
||||
extents = Array.new(deck.size)
|
||||
range.each do |i|
|
||||
extents[i] = deck.cards[i].text(embed, para[i], box[i], trans[i], draw[i], deck.dpi)
|
||||
end
|
||||
return extents
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
require_relative '../args/box'
|
||||
require_relative '../args/card_range'
|
||||
require_relative '../args/embed_adjust'
|
||||
require_relative '../args/embed_key'
|
||||
require_relative '../args/input_file'
|
||||
require_relative '../args/paint'
|
||||
require_relative '../args/transform'
|
||||
require_relative '../errors_warnings/warn_unexpected_params'
|
||||
|
||||
module Squib
|
||||
class TextEmbed
|
||||
include WarnUnexpectedParams
|
||||
attr_reader :rules, :deck, :dsl_method
|
||||
|
||||
def initialize(deck, dsl_method)
|
||||
@deck = deck
|
||||
@rules = {} # store an array of options for later usage
|
||||
end
|
||||
|
||||
def self.accepted_params
|
||||
%i(
|
||||
key file id force_id layout width height dx dy
|
||||
id force_id data
|
||||
flip_horizontal flip_vertical
|
||||
alpha angle blend mask
|
||||
)
|
||||
end
|
||||
|
||||
def svg(opts = {})
|
||||
warn_if_unexpected opts
|
||||
key = Args::EmbedKey.new.validate_key(opts[:key])
|
||||
range = Args.extract_range opts, deck
|
||||
paint = Args.extract_paint opts, deck
|
||||
box = Args.extract_box opts, deck, { width: :native, height: :native }
|
||||
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi)
|
||||
trans = Args.extract_transform opts, deck
|
||||
ifile = Args.extract_input_file opts, deck
|
||||
svg_args = Args.extract_svg_special opts, deck
|
||||
rule = { type: :svg, file: ifile, box: box, paint: paint, trans: trans,
|
||||
adjust: adjust, svg_args: svg_args }
|
||||
rule[:draw] = Proc.new do |card, x, y, scale|
|
||||
i = card.index
|
||||
b = box[i]
|
||||
b.x, b.y = x, y
|
||||
b.width = b.width * scale if b.width.is_a? Numeric
|
||||
b.height = b.height * scale if b.height.is_a? Numeric
|
||||
Dir.chdir(deck.img_dir) do
|
||||
card.svg(ifile[i].file, svg_args[i], b, paint[i], trans[i])
|
||||
end
|
||||
end
|
||||
@rules[key] = rule
|
||||
end
|
||||
|
||||
def png(opts = {})
|
||||
warn_if_unexpected opts
|
||||
key = Args::EmbedKey.new.validate_key(opts[:key])
|
||||
range = Args.extract_range opts, deck
|
||||
paint = Args.extract_paint opts, deck
|
||||
box = Args.extract_box opts, deck, { width: :native, height: :native }
|
||||
adjust = Args::EmbedAdjust.new.load!(opts, expand_by: deck.size, layout: deck.layout, dpi: deck.dpi)
|
||||
trans = Args.extract_transform opts, deck
|
||||
ifile = Args.extract_input_file opts, deck
|
||||
rule = { type: :png, file: ifile, box: box, paint: paint, trans: trans, adjust: adjust }
|
||||
rule[:draw] = Proc.new do |card, x, y, scale|
|
||||
i = card.index
|
||||
b = box[i]
|
||||
b.x, b.y = x, y
|
||||
b.width = b.width * scale if b.width.is_a? Numeric
|
||||
b.height = b.height * scale if b.height.is_a? Numeric
|
||||
Dir.chdir(deck.img_dir) do
|
||||
card.png(ifile[i].file, b, paint[i], trans[i])
|
||||
end
|
||||
end
|
||||
@rules[key] = rule
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
# encoding: UTF-8
|
||||
require 'squib'
|
||||
# require 'squib'
|
||||
require_relative '../../lib/squib'
|
||||
|
||||
data = { 'name' => ['Thief', 'Grifter', 'Mastermind'],
|
||||
'level' => [1, 2, 3] }
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ require_relative 'docs_helper'
|
|||
describe Squib::DSL do
|
||||
context 'methods' do
|
||||
|
||||
Squib::DSL.constants.each do |m|
|
||||
(Squib::DSL.constants - [:Text]).each do |m|
|
||||
it "accepted params for #{m} are in the docs" do
|
||||
accepted_params = Squib::DSL.const_get(m).accepted_params.sort
|
||||
documented_opts = documented_options(m).sort
|
||||
|
|
@ -11,6 +11,15 @@ describe Squib::DSL do
|
|||
end
|
||||
end
|
||||
|
||||
it "accepted params for text and embedding options are in the docs" do
|
||||
accepted_params = Squib::DSL::Text.accepted_params
|
||||
accepted_params += Squib::TextEmbed.accepted_params
|
||||
accepted_params.sort!
|
||||
accepted_params.uniq!
|
||||
documented_opts = documented_options(:Text).sort.uniq
|
||||
documented_opts -= %i( embed.png embed.svg )
|
||||
expect(accepted_params).to eq(documented_opts)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue