Class: Readthis::Serializers
- Inherits:
-
Object
- Object
- Readthis::Serializers
- Defined in:
- lib/readthis/serializers.rb
Constant Summary collapse
- BASE_SERIALIZERS =
{ Marshal => 0x1, Passthrough => 0x2, JSON => 0x3 }.freeze
- SERIALIZER_LIMIT =
7
Instance Attribute Summary collapse
-
#inverted ⇒ Object
readonly
Returns the value of attribute inverted.
-
#serializers ⇒ Object
readonly
Returns the value of attribute serializers.
Instance Method Summary collapse
-
#<<(serializer) ⇒ self
Append a new serializer.
-
#assoc(serializer) ⇒ Number
Find a flag for a serializer object.
- #flags ⇒ Object
-
#freeze! ⇒ Object
Freeze the serializers hash, preventing modification.
-
#initialize ⇒ Serializers
constructor
Creates a new Readthis::Serializers entity.
- #marshals ⇒ Object
-
#rassoc(flag) ⇒ Module
Find a serializer object by flag value.
-
#reset! ⇒ Object
Reset the instance back to the default state.
Constructor Details
#initialize ⇒ Serializers
Creates a new Readthis::Serializers entity. No configuration is expected during initialization.
23 24 25 |
# File 'lib/readthis/serializers.rb', line 23 def initialize reset! end |
Instance Attribute Details
#inverted ⇒ Object (readonly)
Returns the value of attribute inverted.
18 19 20 |
# File 'lib/readthis/serializers.rb', line 18 def inverted @inverted end |
#serializers ⇒ Object (readonly)
Returns the value of attribute serializers.
18 19 20 |
# File 'lib/readthis/serializers.rb', line 18 def serializers @serializers end |
Instance Method Details
#<<(serializer) ⇒ self
Append a new serializer. Up to 7 total serializers may be configured for any single application be configured for any single application. This limit is based on the number of bytes available in the option flag.
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/readthis/serializers.rb', line 39 def <<(serializer) case when serializers.frozen? fail SerializersFrozenError when serializers.length > SERIALIZER_LIMIT fail SerializersLimitError else @serializers[serializer] = flags.max.succ @inverted = @serializers.invert end self end |
#assoc(serializer) ⇒ Number
Find a flag for a serializer object.
78 79 80 81 82 83 84 85 86 |
# File 'lib/readthis/serializers.rb', line 78 def assoc(serializer) flag = serializers[serializer] unless flag fail UnknownSerializerError, "'#{serializer}' hasn't been configured" end flag end |
#flags ⇒ Object
107 108 109 |
# File 'lib/readthis/serializers.rb', line 107 def flags serializers.values end |
#freeze! ⇒ Object
Freeze the serializers hash, preventing modification.
55 56 57 |
# File 'lib/readthis/serializers.rb', line 55 def freeze! serializers.freeze end |
#marshals ⇒ Object
102 103 104 |
# File 'lib/readthis/serializers.rb', line 102 def marshals serializers.keys end |
#rassoc(flag) ⇒ Module
Find a serializer object by flag value.
97 98 99 |
# File 'lib/readthis/serializers.rb', line 97 def rassoc(flag) inverted[flag & inverted.length] end |
#reset! ⇒ Object
Reset the instance back to the default state. Useful for cleanup during testing.
62 63 64 65 |
# File 'lib/readthis/serializers.rb', line 62 def reset! @serializers = BASE_SERIALIZERS.dup @inverted = @serializers.invert end |