Module: RoadForest::Graph::Helpers::Payloads

Includes:
Focus
Defined in:
lib/roadforest/interface/rdf.rb

Instance Method Summary collapse

Methods included from Focus

#start_focus

Instance Method Details

#backfill_payload(domain, type, root) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/roadforest/interface/rdf.rb', line 31

def backfill_payload(domain, type, root)
  if payload_blocks.has_key?([domain, type])
    start_focus(nil, root) do |focus|
      payload_blocks[[domain, type]][focus]
    end
  end
end

#payload_block(domain, type, &block) ⇒ Object



27
28
29
# File 'lib/roadforest/interface/rdf.rb', line 27

def payload_block(domain, type, &block)
  payload_blocks[[domain, type]] = block
end

#payload_blocksObject



23
24
25
# File 'lib/roadforest/interface/rdf.rb', line 23

def payload_blocks
  @payload_blocks ||= {}
end

#payload_for_create(domain = nil, &block) ⇒ Object



62
63
64
# File 'lib/roadforest/interface/rdf.rb', line 62

def payload_for_create(domain = nil, &block)
  payload_method(:create_payload, domain || :general, :create, &block)
end

#payload_for_update(domain = nil, &block) ⇒ Object



58
59
60
# File 'lib/roadforest/interface/rdf.rb', line 58

def payload_for_update(domain = nil, &block)
  payload_method(:update_payload, domain || :general, :update, &block)
end

#payload_method(method_name, domain, type, &block) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/roadforest/interface/rdf.rb', line 39

def payload_method(method_name, domain, type, &block)
  payload_block(domain, type, &block)
  define_method method_name do
    backfill_route = path_provider.find_route do |route|
      klass = route.interface_class
      next if klass.nil?
      next unless klass.respond_to? :domains
      next unless klass.respond_to? :types
      klass.domains.include?(domain) and klass.types.include?(type)
    end
    return nil if backfill_route.nil?

    klass = backfill_route.interface_class

    root_node = url_for(backfill_route.name) + klass.fragment_for(route_name, type)
    return Payload.new(root_node, nil)
  end
end