Module: Serializable
- Included in:
- Friends::Event, Friends::Friend, Friends::Location
- Defined in:
- lib/friends/serializable.rb
Overview
Serializable provides functionality around serialization to the classes that extend it. This includes a class method to deserialize a string and create an instance of the class.
Defined Under Namespace
Classes: SerializationError
Instance Method Summary collapse
-
#deserialize(str) ⇒ Object
Note: this method assumes the calling class provides the following methods: - deserialization_regex a regex for the string which includes named parameters for the different initializer arguments - deserialization_expectation a string for what was expected, if the regex does not match.
Instance Method Details
#deserialize(str) ⇒ Object
Note: this method assumes the calling class provides the following methods:
- deserialization_regex
a regex for the string which includes named parameters for the
different initializer arguments
- deserialization_expectation
a string for what was expected, if the regex does not match
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/friends/serializable.rb', line 16 def deserialize(str) match = str.to_s.match(deserialization_regex) unless match raise SerializationError, "Expected \"#{deserialization_expectation}\"" end args = match.names. map { |name| { name.to_sym => match[name.to_sym] } }. reduce(:merge). reject { |_, v| v.nil? } new(**args) end |