lib/squib/args/paragraph.rb in squib-0.15.3 vs lib/squib/args/paragraph.rb in squib-0.16.0.pre.preview1
- old
+ new
@@ -1,116 +1,118 @@
require_relative '../constants'
require_relative 'arg_loader'
-module Squib
- # @api private
- module Args
+module Squib::Args
- class Paragraph
- include ArgLoader
+ module_function def extract_para(opts, deck, dsl_method_defaults = {})
+ Paragraph.new(deck.font).extract!(opts, deck)
+ end
+ class Paragraph
+ include ArgLoader
- def self.parameters
- { align: :left,
- str: 'Hello, World!',
- font: :use_set,
- font_size: nil,
- markup: false,
- justify: false,
- wrap: true,
- ellipsize: :end,
- spacing: nil,
- valign: :top,
- hint: :off
- }
- end
+ def self.parameters
+ { align: :left,
+ str: 'Hello, World!',
+ font: :use_set,
+ font_size: nil,
+ markup: false,
+ justify: false,
+ wrap: true,
+ ellipsize: :end,
+ spacing: nil,
+ valign: :top,
+ hint: :off
+ }
+ end
- def self.expanding_parameters
- parameters.keys # all of them
- end
+ def self.expanding_parameters
+ parameters.keys # all of them
+ end
- def self.params_with_units
- [] # none of them
- end
+ def self.params_with_units
+ [] # none of them
+ end
- def initialize(deck_font)
- @deck_font = deck_font
- end
+ def initialize(deck_font)
+ @deck_font = deck_font
+ end
- def validate_str(arg, _i)
- arg.to_s
- end
+ def validate_str(arg, _i)
+ arg.to_s
+ end
- def validate_font(arg, _i)
- arg = @deck_font if arg == :use_set
- arg = DEFAULT_FONT if arg == :default
- arg
- end
+ def validate_font(arg, _i)
+ arg = @deck_font if arg == :use_set
+ arg = Squib::DEFAULT_FONT if arg == :default
+ arg
+ end
- def validate_align(arg, _i)
- case arg.to_s.downcase.strip
- when 'left'
- Pango::Alignment::LEFT
- when 'right'
- Pango::Alignment::RIGHT
- when 'center'
- Pango::Alignment::CENTER
- else
- raise ArgumentError, 'align must be one of: center, left, right'
- end
+ def validate_align(arg, _i)
+ case arg.to_s.downcase.strip
+ when 'left'
+ Pango::Alignment::LEFT
+ when 'right'
+ Pango::Alignment::RIGHT
+ when 'center'
+ Pango::Alignment::CENTER
+ else
+ raise ArgumentError, 'align must be one of: center, left, right'
end
+ end
- def validate_wrap(arg, _i)
- case arg.to_s.downcase.strip
- when 'word'
- Pango::WrapMode::WORD
- when 'char', 'false'
- Pango::WrapMode::CHAR
- when 'word_char', 'true'
- Pango::WrapMode::WORD_CHAR
- else
- raise ArgumentError, 'wrap must be one of: word, char, word_char, true, or false'
- end
+ def validate_wrap(arg, _i)
+ case arg.to_s.downcase.strip
+ when 'word'
+ Pango::WrapMode::WORD
+ when 'char', 'false'
+ Pango::WrapMode::CHAR
+ when 'word_char', 'true'
+ Pango::WrapMode::WORD_CHAR
+ else
+ raise ArgumentError, 'wrap must be one of: word, char, word_char, true, or false'
end
+ end
- def validate_ellipsize(arg, _i)
- case arg.to_s.downcase.strip
- when 'none', 'false'
- Pango::EllipsizeMode::NONE
- when 'start'
- Pango::EllipsizeMode::START
- when 'middle'
- Pango::EllipsizeMode::MIDDLE
- when 'end', 'true'
- Pango::EllipsizeMode::END
- else
- raise ArgumentError, 'ellipsize must be one of: none, start, middle, end, true, or false'
- end
+ def validate_ellipsize(arg, _i)
+ case arg.to_s.downcase.strip
+ when 'none', 'false'
+ Pango::EllipsizeMode::NONE
+ when 'start'
+ Pango::EllipsizeMode::START
+ when 'middle'
+ Pango::EllipsizeMode::MIDDLE
+ when 'end', 'true'
+ Pango::EllipsizeMode::END
+ when 'autoscale'
+ :autoscale
+ else
+ raise ArgumentError, 'ellipsize must be one of: none, start, middle, end, true, false or autoscale'
end
+ end
- def validate_justify(arg, _i)
- case arg
- when nil, true, false
- arg
- else
- raise ArgumentError, 'justify must be one of: nil, true, or false'
- end
+ def validate_justify(arg, _i)
+ case arg
+ when nil, true, false
+ arg
+ else
+ raise ArgumentError, 'justify must be one of: nil, true, or false'
end
+ end
- def validate_spacing(arg, _i)
- return nil if arg.nil?
- raise ArgumentError, 'spacing must be a number or nil' unless arg.respond_to? :to_f
- arg.to_f * Pango::SCALE
- end
+ def validate_spacing(arg, _i)
+ return nil if arg.nil?
+ raise ArgumentError, 'spacing must be a number or nil' unless arg.respond_to? :to_f
+ arg.to_f * Pango::SCALE
+ end
- def validate_valign(arg, _i)
- if %w(top middle bottom).include? arg.to_s.downcase
- arg.to_s.downcase
- else
- raise ArgumentError, 'valign must be one of: top, middle, bottom'
- end
+ def validate_valign(arg, _i)
+ if %w(top middle bottom).include? arg.to_s.downcase
+ arg.to_s.downcase
+ else
+ raise ArgumentError, 'valign must be one of: top, middle, bottom'
end
-
end
end
+
end