Class: SchemaSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/schema_serializer.rb,
lib/schema_serializer/errors.rb,
lib/schema_serializer/schema.rb,
lib/schema_serializer/railtie.rb,
lib/schema_serializer/version.rb,
lib/schema_serializer/definition.rb,
lib/schema_serializer/serializable.rb

Defined Under Namespace

Modules: Generators, Serializable Classes: Definition, Railtie, Schema, SchemaNotFound

Constant Summary collapse

VERSION =
"0.0.4".freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, options = {}) ⇒ SchemaSerializer

Returns a new instance of SchemaSerializer.



25
26
27
# File 'lib/schema_serializer.rb', line 25

def initialize(object, options = {})
  @object = object
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object (private)



45
46
47
48
49
# File 'lib/schema_serializer.rb', line 45

def method_missing(name, *args, &block)
  super unless object.respond_to?(name)

  object.public_send(name, *args, &block)
end

Instance Attribute Details

#objectObject (readonly)

Returns the value of attribute object.



12
13
14
# File 'lib/schema_serializer.rb', line 12

def object
  @object
end

Class Method Details

.definitionObject



15
16
17
# File 'lib/schema_serializer.rb', line 15

def definition
  @definition
end

.definition=(define) ⇒ Object



19
20
21
22
# File 'lib/schema_serializer.rb', line 19

def definition=(define)
  define = SchemaSerializer::Definition.new(define) unless define.is_a?(SchemaSerializer::Definition)
  @definition = define
end

Instance Method Details

#as_json(options = nil) ⇒ Object



29
30
31
# File 'lib/schema_serializer.rb', line 29

def as_json(options = nil)
  schema.serialize(self)
end

#schemaObject



33
34
35
# File 'lib/schema_serializer.rb', line 33

def schema
  self.class.definition.schema(schema_name)
end

#schema_nameObject



37
38
39
40
41
# File 'lib/schema_serializer.rb', line 37

def schema_name
  return self.class.name.sub("Serializer", "") if self.class < SchemaSerializer

  object.class.name
end