Class: OpenEHR::Serializer::RMJSONSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/openehr/serializer/rm_json_serializer.rb

Overview

Canonical JSON for an RM instance graph: a generic reflection walker (not a hand-written serializer per RM class), tagging each object with a "_type" discriminator (via OpenEHR::RM.type_name_of) and recursing into every non-nil instance variable except @parent (PATHABLE's back-reference, which would otherwise make every subtree cyclic). A defensive visited-object guard covers any other unexpected back-reference.

Constant Summary collapse

EXCLUDED_IVARS =
[:@parent].freeze

Instance Method Summary collapse

Constructor Details

#initialize(rm_instance) ⇒ RMJSONSerializer

Returns a new instance of RMJSONSerializer.



15
16
17
# File 'lib/openehr/serializer/rm_json_serializer.rb', line 15

def initialize(rm_instance)
  @rm_instance = rm_instance
end

Instance Method Details

#serializeObject



19
20
21
# File 'lib/openehr/serializer/rm_json_serializer.rb', line 19

def serialize
  JSON.generate(to_value(@rm_instance, Set.new.compare_by_identity))
end