class RoadForest::Graph::NavAffordanceBuilder
Attributes
focus[R]
path_provider[R]
Public Class Methods
new(focus, path_provider)
click to toggle source
# File lib/roadforest/graph/nav-affordance-builder.rb, line 6 def initialize(focus, path_provider) @focus, @path_provider = focus, path_provider end
Public Instance Methods
iri_template(route, params)
click to toggle source
# File lib/roadforest/graph/nav-affordance-builder.rb, line 23 def iri_template(route, params) klass = route.interface_class return if klass.nil? variables = klass.path_params params ||= {} params = params.dup variables -= params.keys path_spec = route.resolve_path_spec(params) path = path_provider.services.canonical_host.to_s.sub(%r{/$}, '') + path_spec.map do |segment| case segment when Symbol variables.delete(segment) "{/#{segment}}" when '*' "{/extra*}" else "/" + segment.to_s end end.join("") unless params.empty? path += "?" + params.map do |key, value| [key, value].join("=") end.join("&") end unless variables.empty? path += "{?#{variables.join(",")}}" end end
to(name, params=nil)
click to toggle source
# File lib/roadforest/graph/nav-affordance-builder.rb, line 11 def to(name, params=nil) route = path_provider.route_for_name(name) pattern = iri_template(route, params) node = ::RDF::Node.new tmpl = ::RDF::Node.new focus << [ node, ::RDF.type, Af.Navigate ] focus << [ node, Af.target, tmpl ] focus << [ tmpl, Af.pattern, pattern ] end