module UniverseCompiler::Entity::Marshalling
Attributes
fully_resolved[RW]
Public Instance Methods
dereferenced_fields(fields_to_dereference = fields)
click to toggle source
# File lib/universe_compiler/entity/marshalling.rb, line 42 def dereferenced_fields(fields_to_dereference = fields) deep_map(fields_to_dereference) do |leaf| case leaf when UniverseCompiler::Entity::Base leaf.to_reference when Symbol, Numeric, NilClass, TrueClass, FalseClass leaf else leaf.clone end end end
fully_resolved?()
click to toggle source
# File lib/universe_compiler/entity/marshalling.rb, line 7 def fully_resolved? fully_resolved || false end
resolve_fields_references(from_fields = fields)
click to toggle source
# File lib/universe_compiler/entity/marshalling.rb, line 18 def resolve_fields_references(from_fields = fields) self.fully_resolved = true deep_map from_fields do |leaf| case leaf when UniverseCompiler::Entity::Reference res = leaf.to_entity raise_error: false if res res else self.fully_resolved = false leaf end else leaf end end end
resolve_fields_references!(from_fields = fields)
click to toggle source
# File lib/universe_compiler/entity/marshalling.rb, line 11 def resolve_fields_references!(from_fields = fields) UniverseCompiler.logger.debug "Starting resolution for '#{to_composite_key}'." @fields = resolve_fields_references from_fields UniverseCompiler.logger.debug "Completed resolution for '#{to_composite_key}'." self end
traverse_fields(fields_to_process = fields) { |leaf| ... }
click to toggle source
# File lib/universe_compiler/entity/marshalling.rb, line 36 def traverse_fields(fields_to_process = fields) deep_traverse(fields_to_process) do |leaf| yield leaf end end
Private Instance Methods
marshal_dump()
click to toggle source
# File lib/universe_compiler/entity/marshalling.rb, line 59 def marshal_dump { fields: dereferenced_fields, universe: universe.name } end
marshal_load(data)
click to toggle source
# File lib/universe_compiler/entity/marshalling.rb, line 63 def marshal_load(data) stored_universe = UniverseCompiler::Universe::Base.universes[data[:universe]] initialize fields: data[:fields], universe: stored_universe end