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.
20 21 22 |
# File 'lib/readthis/serializers.rb', line 20 def initialize reset! end |
Instance Attribute Details
#inverted ⇒ Object (readonly)
Returns the value of attribute inverted.
15 16 17 |
# File 'lib/readthis/serializers.rb', line 15 def inverted @inverted end |
#serializers ⇒ Object (readonly)
Returns the value of attribute serializers.
15 16 17 |
# File 'lib/readthis/serializers.rb', line 15 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.
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/readthis/serializers.rb', line 36 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.
75 76 77 78 79 80 81 82 83 |
# File 'lib/readthis/serializers.rb', line 75 def assoc(serializer) flag = serializers[serializer] unless flag fail UnknownSerializerError, "'#{serializer}' hasn't been configured" end flag end |
#flags ⇒ Object
104 105 106 |
# File 'lib/readthis/serializers.rb', line 104 def flags serializers.values end |
#freeze! ⇒ Object
Freeze the serializers hash, preventing modification.
52 53 54 |
# File 'lib/readthis/serializers.rb', line 52 def freeze! serializers.freeze end |
#marshals ⇒ Object
99 100 101 |
# File 'lib/readthis/serializers.rb', line 99 def marshals serializers.keys end |
#rassoc(flag) ⇒ Module
Find a serializer object by flag value.
94 95 96 |
# File 'lib/readthis/serializers.rb', line 94 def rassoc(flag) inverted[flag & inverted.length] end |
#reset! ⇒ Object
Reset the instance back to the default state. Useful for cleanup during testing.
59 60 61 62 |
# File 'lib/readthis/serializers.rb', line 59 def reset! @serializers = BASE_SERIALIZERS.dup @inverted = @serializers.invert end |