Class: IknowParams::Serializer::StringEnum
- Inherits:
-
IknowParams::Serializer
- Object
- IknowParams::Serializer
- IknowParams::Serializer::StringEnum
- 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
Instance Attribute Summary
Attributes inherited from IknowParams::Serializer
Instance Method Summary collapse
-
#initialize(*members) ⇒ StringEnum
constructor
A new instance of StringEnum.
- #load(str) ⇒ Object
- #matches_type?(str) ⇒ Boolean
- #normalize(str) ⇒ Object
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
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 |