Class: Line::Message::Builder::Validators::Size

Inherits:
Object
  • Object
show all
Defined in:
lib/line/message/builder/validators/size.rb

Overview

Validate size values for LINE messages.

Constant Summary collapse

VARIANTS =
%i[pixel keyword image percentage].freeze
KEYWORDS =
%i[none xs sm md lg xl xxl].freeze
IMAGE_KEYWORDS =
%i[xxs xs sm md lg xl xxl 3xl 4xl 5xl full].freeze
PIXEL_REGEX =
/^\d+px$/
PERCENTAGE_REGEX =
/^\f+%$/

Instance Method Summary collapse

Constructor Details

#initialize(*variants) ⇒ Size

Returns a new instance of Size.



15
16
17
# File 'lib/line/message/builder/validators/size.rb', line 15

def initialize(*variants)
  @variants = variants & VARIANTS
end

Instance Method Details

#image?(value) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/line/message/builder/validators/size.rb', line 33

def image?(value)
  IMAGE_KEYWORDS.include?(value.to_sym)
end

#keyword?(value) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/line/message/builder/validators/size.rb', line 29

def keyword?(value)
  KEYWORDS.include?(value.to_sym)
end

#percentage?(value) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/line/message/builder/validators/size.rb', line 37

def percentage?(value)
  value.to_s.match?(PERCENTAGE_REGEX)
end

#pixel?(value) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/line/message/builder/validators/size.rb', line 25

def pixel?(value)
  value.to_s.match?(PIXEL_REGEX)
end

#valid!(value) ⇒ Object

Raises:



41
42
43
44
45
46
47
# File 'lib/line/message/builder/validators/size.rb', line 41

def valid!(value)
  return if valid?(value)

  raise ValidationError,
        "Invalid value: #{value}. " \
        "Expected one of: #{VARIANTS.join(", ")}"
end

#valid?(value) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
23
# File 'lib/line/message/builder/validators/size.rb', line 19

def valid?(value)
  @variants.any? do |variant|
    send("#{variant}?", value)
  end
end