Class: Addressive::Graph::AppBuilder

Inherits:
Object
  • Object
show all
Includes:
BuildsURIs
Defined in:
lib/addressive/graph.rb

Overview

An app builder is used to add uris for a certain app to a node.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from BuildsURIs

#default, #uri

Constructor Details

#initialize(node, factory, app) ⇒ AppBuilder

Returns a new instance of AppBuilder.



36
37
38
39
40
41
42
43
# File 'lib/addressive/graph.rb', line 36

def initialize(node, factory, app)
  @node = node
  @app = app
  @spec_factory = factory
  @callback = nil
  @defaults = {}
  @middleware = Middleware::End
end

Instance Attribute Details

#defaultsObject (readonly)

Returns the value of attribute defaults.



33
34
35
# File 'lib/addressive/graph.rb', line 33

def defaults
  @defaults
end

#nodeObject (readonly)

Returns the value of attribute node.



33
34
35
# File 'lib/addressive/graph.rb', line 33

def node
  @node
end

#spec_factoryObject (readonly)

Returns the value of attribute spec_factory.



33
34
35
# File 'lib/addressive/graph.rb', line 33

def spec_factory
  @spec_factory
end

Instance Method Details

#spec_factory_with_options(overrides) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/addressive/graph.rb', line 45

def spec_factory_with_options(overrides)
  if overrides.key? :app
    cb = @middleware.unwind(overrides[:app])
  else
    cb = (@callback ||= @middleware.unwind(@app))
  end
  super( {:callback => cb}.merge(overrides) )
end

#use(middleware, *args, &block) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/addressive/graph.rb', line 54

def use(middleware, *args, &block)
  if middleware.respond_to? :call
    @middleware <<= proc{|app| proc{|env| middleware.call(env, app, *args, &block) } }
  else
    @middleware <<= proc{|app| middleware.new(app,*args, &block) }
  end
  @callback = nil
end