Module: UniverseCompiler::Entity::Marshalling

Included in:
SuperStack::MergePolicies::InheritanceMergePolicy, Base
Defined in:
lib/universe_compiler/entity/marshalling.rb

Instance Method Summary collapse

Instance Method Details

#dereferenced_fields(fields_to_dereference = fields) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# 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?Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/universe_compiler/entity/marshalling.rb', line 7

def fully_resolved?
  fully_resolved || false
end

#resolve_fields_references(from_fields = fields) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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) ⇒ Object



11
12
13
14
15
16
# 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) ⇒ Object



36
37
38
39
40
# 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