Class: IknowParams::Serializer::StringEnum

Inherits:
IknowParams::Serializer show all
Defined in:
lib/iknow_params/serializer.rb

Overview

Abstract serializer for members of a fixed set of lowercase strings, case-normalized on parse.

Direct Known Subclasses

CaseSensitiveStringEnum

Instance Attribute Summary

Attributes inherited from IknowParams::Serializer

#clazz

Instance Method Summary collapse

Methods inherited from IknowParams::Serializer

#dump, for, for!, json_value?, #matches_type!, singleton

Constructor Details

#initialize(*members) ⇒ StringEnum

Returns a new instance of StringEnum.



357
358
359
360
# File 'lib/iknow_params/serializer.rb', line 357

def initialize(*members)
  @member_set = members.map { |s| normalize(s) }.to_set.freeze
  super(nil)
end

Instance Method Details

#load(str) ⇒ Object



362
363
364
365
366
# File 'lib/iknow_params/serializer.rb', line 362

def load(str)
  val = normalize(str.to_s)
  matches_type!(val, err: LoadError)
  val
end

#matches_type?(str) ⇒ Boolean

Returns:



368
369
370
# File 'lib/iknow_params/serializer.rb', line 368

def matches_type?(str)
  str.is_a?(::String) && @member_set.include?(str)
end

#normalize(str) ⇒ Object



372
373
374
# File 'lib/iknow_params/serializer.rb', line 372

def normalize(str)
  str.downcase
end