Module: Juso
- Defined in:
- lib/juso.rb,
lib/juso/version.rb
Defined Under Namespace
Modules: Serializable Classes: Context, Error
Constant Summary collapse
- VERSION =
"1.0.2"
Class Method Summary collapse
-
._g(object, context) ⇒ Object
generate returns object (as json).
- .collection_classes ⇒ Object
- .date_classes ⇒ Object
-
.generate(object, context = Context.new) ⇒ Object
Juso.generate generates json string.
-
.wrap(object, klass) ⇒ Object
Juso.wrap is utility for wrapping object with Juso::Serializable class.
Class Method Details
._g(object, context) ⇒ Object
generate returns object (as json)
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/juso.rb', line 35 def self._g(object, context) case object when nil, Numeric, String, true, false return object when Hash return object.each_with_object({}) do |(k, v), acc| acc[k] = _g(v, context) end when Serializable # respond_to?(:juso) のほうが良い可能性ある? return _g(object.juso(context), context) when *collection_classes return object.to_a.map { |o| _g(o, context) } when *date_classes return object.iso8601(context.[:juso_time_n_digits] || 0) else # TODO: fallback to respond_to?(:juso) and warn? raise Error.new("cannot serialize object: #{object}. you must include Juso::Serializable") end end |
.collection_classes ⇒ Object
66 67 68 |
# File 'lib/juso.rb', line 66 def self.collection_classes @collection_classes ||= default_collection_classes end |
.date_classes ⇒ Object
78 79 80 |
# File 'lib/juso.rb', line 78 def self.date_classes @date_classes ||= default_date_classes end |
.generate(object, context = Context.new) ⇒ Object
Juso.generate generates json string
30 31 32 |
# File 'lib/juso.rb', line 30 def self.generate(object, context = Context.new) JSON.fast_generate(_g(object, context)) end |
.wrap(object, klass) ⇒ Object
Juso.wrap is utility for wrapping object with Juso::Serializable class
58 59 60 61 62 63 64 |
# File 'lib/juso.rb', line 58 def self.wrap(object, klass) if collection_classes.any? { |arrayish| object.is_a?(arrayish) } object.to_a.map { |o| klass.new(o) } else klass.new(object) end end |