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.



346
347
348
349
# File 'lib/iknow_params/serializer.rb', line 346

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

Instance Method Details

#load(str) ⇒ Object



351
352
353
354
355
# File 'lib/iknow_params/serializer.rb', line 351

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

#matches_type?(str) ⇒ Boolean

Returns:



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

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

#normalize(str) ⇒ Object



361
362
363
# File 'lib/iknow_params/serializer.rb', line 361

def normalize(str)
  str.downcase
end