lib/squib/args/paragraph.rb in squib-0.15.0 vs lib/squib/args/paragraph.rb in squib-0.15.1

- old
+ new

@@ -1,116 +1,116 @@ -require_relative '../constants' -require_relative 'arg_loader' - -module Squib - # @api private - module Args - - 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.expanding_parameters - parameters.keys # all of them - end - - def self.params_with_units - [] # none of them - end - - def initialize(deck_font) - @deck_font = deck_font - 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_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 - 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 - 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_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 -end +require_relative '../constants' +require_relative 'arg_loader' + +module Squib + # @api private + module Args + + 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.expanding_parameters + parameters.keys # all of them + end + + def self.params_with_units + [] # none of them + end + + def initialize(deck_font) + @deck_font = deck_font + 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_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 + 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 + 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_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 +end