roadforest 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/examples/file-management.rb +2 -1
  2. data/lib/roadforest/application/dispatcher.rb +12 -2
  3. data/lib/roadforest/application/services-host.rb +1 -1
  4. data/lib/roadforest/application.rb +12 -5
  5. data/lib/roadforest/blob-model.rb +7 -1
  6. data/lib/roadforest/content-handling/engine.rb +4 -1
  7. data/lib/roadforest/content-handling/type-handlers/jsonld.rb +25 -17
  8. data/lib/roadforest/http/adapters/excon.rb +1 -1
  9. data/lib/roadforest/http/graph-response.rb +18 -4
  10. data/lib/roadforest/http/graph-transfer.rb +52 -8
  11. data/lib/roadforest/http/message.rb +10 -1
  12. data/lib/roadforest/model.rb +17 -4
  13. data/lib/roadforest/rdf/context-fascade.rb +80 -5
  14. data/lib/roadforest/rdf/etagging.rb +53 -0
  15. data/lib/roadforest/rdf/focus-list.rb +47 -5
  16. data/lib/roadforest/rdf/graph-copier.rb +4 -5
  17. data/lib/roadforest/rdf/graph-focus.rb +38 -14
  18. data/lib/roadforest/rdf/graph-reading.rb +102 -47
  19. data/lib/roadforest/rdf/graph-store.rb +12 -8
  20. data/lib/roadforest/rdf/investigation.rb +0 -1
  21. data/lib/roadforest/rdf/normalization.rb +37 -4
  22. data/lib/roadforest/rdf/resource-pattern.rb +1 -0
  23. data/lib/roadforest/rdf/source-rigor/credence-annealer.rb +2 -0
  24. data/lib/roadforest/rdf/source-rigor/http-investigator.rb +12 -14
  25. data/lib/roadforest/rdf/update-focus.rb +7 -62
  26. data/lib/roadforest/remote-host.rb +21 -10
  27. data/lib/roadforest/resource/rdf/read-only.rb +4 -0
  28. data/lib/roadforest/server.rb +22 -0
  29. data/lib/roadforest/test-support/dispatcher-facade.rb +1 -1
  30. data/lib/roadforest/test-support/http-client.rb +8 -0
  31. data/spec/client.rb +20 -2
  32. data/spec/credence-annealer.rb +1 -1
  33. data/spec/excon-adapater.rb +30 -0
  34. data/spec/focus-list.rb +34 -0
  35. data/spec/form-parsing.rb +1 -0
  36. data/spec/full-integration.rb +193 -0
  37. data/spec/rdf-normalization.rb +17 -0
  38. data/spec/update-focus.rb +37 -0
  39. metadata +22 -17
  40. data/lib/roadforest/rdf/focus-wrapping.rb +0 -30
@@ -9,8 +9,12 @@ module RoadForest
9
9
  include RDF::Normalization
10
10
 
11
11
  def initialize(well_known_url)
12
- @url = normalize_resource(well_known_url)
13
- @graph = build_graph_store
12
+ self.url = well_known_url
13
+ end
14
+ attr_reader :url
15
+
16
+ def url=(string)
17
+ @url = normalize_resource(string)
14
18
  end
15
19
 
16
20
  def build_graph_store
@@ -19,7 +23,7 @@ module RoadForest
19
23
 
20
24
  attr_writer :http_client
21
25
  def http_client
22
- @http_client ||= HTTP::ExconAdapter.new(@url)
26
+ @http_client ||= HTTP::ExconAdapter.new(url)
23
27
  end
24
28
 
25
29
  def graph_transfer
@@ -42,7 +46,8 @@ module RoadForest
42
46
  end
43
47
 
44
48
  def anneal(focus)
45
- annealer = RDF::SourceRigor::CredenceAnnealer.new(@graph)
49
+ graph = build_graph_store
50
+ annealer = RDF::SourceRigor::CredenceAnnealer.new(graph)
46
51
  annealer.resolve do
47
52
  yield focus
48
53
  end
@@ -50,12 +55,16 @@ module RoadForest
50
55
 
51
56
  def putting(&block)
52
57
  require 'roadforest/rdf/update-focus'
53
- target_graph = ::RDF::Repository.new
54
- updater = RDF::UpdateFocus.new(@url, @graph, source_rigor)
55
- updater.target_graph = target_graph
58
+ graph = build_graph_store
59
+ updater = RDF::UpdateFocus.new(url, graph, source_rigor)
60
+ annealer = RDF::SourceRigor::CredenceAnnealer.new(graph)
56
61
 
57
- anneal(updater, &block)
62
+ annealer.resolve do
63
+ updater.target_graph = ::RDF::Repository.new
64
+ yield updater
65
+ end
58
66
 
67
+ target_graph = updater.target_graph
59
68
  target_graph.each_context do |context|
60
69
  graph = ::RDF::Graph.new(context, :data => target_graph)
61
70
  graph_transfer.put(context, graph)
@@ -64,7 +73,8 @@ module RoadForest
64
73
 
65
74
  def posting(&block)
66
75
  require 'roadforest/rdf/post-focus'
67
- poster = RDF::PostFocus.new(@url, @graph, source_rigor)
76
+ graph = build_graph_store
77
+ poster = RDF::PostFocus.new(url, graph, source_rigor)
68
78
 
69
79
  anneal(poster, &block)
70
80
 
@@ -72,7 +82,8 @@ module RoadForest
72
82
  end
73
83
 
74
84
  def getting(&block)
75
- reader = RDF::GraphReading.new(@url, @graph, source_rigor)
85
+ graph = build_graph_store
86
+ reader = RDF::GraphReading.new(url, graph, source_rigor)
76
87
 
77
88
  anneal(reader, &block)
78
89
  end
@@ -24,6 +24,10 @@ module RoadForest
24
24
  end
25
25
  end
26
26
 
27
+ def request_uri
28
+ request.uri.to_s.sub(/[?]\Z/, '')
29
+ end
30
+
27
31
  def request_accept_header
28
32
  request.headers["Accept"] || "*/*"
29
33
  end
@@ -1,3 +1,25 @@
1
1
  #This file is intended as the single entry point for RoadForest server code
2
2
  require 'roadforest/application'
3
3
  require 'roadforest/models'
4
+
5
+ module RoadForest
6
+ def self.serve(application, services)
7
+ require 'webrick/accesslog'
8
+ application.services = services
9
+
10
+ logfile = services.logger
11
+ logfile.info("#{Time.now.to_s}: Starting Roadforest server")
12
+
13
+ application.configure do |config|
14
+ config.adapter_options = {
15
+ :Logger => WEBrick::Log.new(logfile),
16
+ :AccessLog => [
17
+ [logfile, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
18
+ [logfile, WEBrick::AccessLog::REFERER_LOG_FORMAT ]
19
+ ]
20
+ }
21
+ yield config if block_given?
22
+ end
23
+ application.run
24
+ end
25
+ end
@@ -18,7 +18,7 @@ module RoadForest
18
18
  if resource = @dispatcher.find_resource(request, response)
19
19
  FSM.new(resource, request, response).run
20
20
  else
21
- Webmachine.render_error(404, request, response)
21
+ ::Webmachine.render_error(404, request, response)
22
22
  end
23
23
  end
24
24
  end
@@ -47,10 +47,18 @@ module RoadForest
47
47
  response.status = exchange.response.code
48
48
  response.body_string = exchange.response.body
49
49
 
50
+ enrich_with_server_stuff(response)
51
+
50
52
  #puts; puts "#{__FILE__}:#{__LINE__} => #{(response).inspect}"
51
53
  return response
52
54
  end
53
55
 
56
+ def enrich_with_server_stuff(response)
57
+ response.headers["Server"]="RoadForest Test Server"
58
+ response.headers["Date"]=Time.now.httpdate
59
+ response.headers["Connection"] = "Keep-Alive"
60
+ end
61
+
54
62
  class Exchange
55
63
  def initialize
56
64
  @uri = nil
data/spec/client.rb CHANGED
@@ -13,6 +13,7 @@ describe RoadForest::RemoteHost do
13
13
  end
14
14
 
15
15
  let :services do
16
+ require 'logger'
16
17
  FileManagementExample::ServicesHost.new.tap do |host|
17
18
  host.file_records = [
18
19
  FileManagementExample::FileRecord.new("one", false),
@@ -24,7 +25,7 @@ describe RoadForest::RemoteHost do
24
25
  end
25
26
 
26
27
  let :server do
27
- RoadForest::TestSupport::RemoteHost.new(FileManagementExample::Application.new("http://roadforest.test-domain.com/", services))
28
+ RoadForest::TestSupport::RemoteHost.new(FileManagementExample::Application.new("http://localhost:8778", services))
28
29
  end
29
30
 
30
31
  def dump_trace
@@ -72,7 +73,7 @@ describe RoadForest::RemoteHost do
72
73
  end
73
74
 
74
75
  it "should set destination" do
75
- @destination.to_context.to_s.should == "http://roadforest.test-domain.com/files/one"
76
+ @destination.to_context.to_s.should == "http://localhost:8778/files/one"
76
77
  end
77
78
 
78
79
  it "should deliver file to destination path" do
@@ -134,6 +135,23 @@ describe RoadForest::RemoteHost do
134
135
  end
135
136
  end
136
137
 
138
+ it "should change the server's responses" do
139
+ server.getting do |graph|
140
+ @correct = 0
141
+ items = graph.all(:skos, "hasTopConcept")
142
+
143
+ unresolved = items.find do |nav_item|
144
+ nav_item[:skos, "label"] == "Unresolved"
145
+ end
146
+
147
+ unresolved.first(:foaf, "page").first(:lc, "needs").as_list.each do |need|
148
+ @correct += 1
149
+ end
150
+ end
151
+
152
+ @correct.should == 0
153
+ end
154
+
137
155
  it "should extract data from server responses" do
138
156
  server.should match_query do
139
157
  pattern(:subject, [:lc, "path"], nil)
@@ -20,7 +20,7 @@ describe RoadForest::RDF::SourceRigor::CredenceAnnealer do
20
20
  end
21
21
 
22
22
  it "should re-run it's block until the GraphStore settles" do
23
- graph.stub(:quiet_impulse?).and_return(false, false, true)
23
+ graph.stub(:quiet_impulse?).and_return(false, false, false, false, true) #called twice per resolution loop
24
24
 
25
25
  times_run = 0
26
26
  annealer.resolve do
@@ -0,0 +1,30 @@
1
+ require 'roadforest/http/adapters/excon'
2
+
3
+ describe RoadForest::HTTP::ExconAdapter do
4
+ let :adapter do
5
+ RoadForest::HTTP::ExconAdapter.new("http://test-site.com").tap do |adapter|
6
+ adapter.connection_defaults[:mock] = true
7
+ end
8
+ end
9
+
10
+ before :each do
11
+ Excon.stub do
12
+ {
13
+ :body => "Hello!"
14
+ }
15
+ end
16
+ end
17
+
18
+ describe "responses to GET requests" do
19
+ let :request do
20
+ RoadForest::HTTP::Request.new("GET", "http://test-site.com/test")
21
+ end
22
+
23
+ subject :response do
24
+ adapter.do_request(request)
25
+ end
26
+
27
+ its(:status){ should == 200 }
28
+ its(:body_string){ should == "Hello!" }
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ require 'rdf'
2
+ require 'roadforest/rdf/focus-list'
3
+ require 'roadforest/rdf/graph-focus'
4
+
5
+ describe RoadForest::RDF::FocusList do
6
+ let :graph do
7
+ RDF::Graph.new
8
+ end
9
+
10
+ let :focus do
11
+ RoadForest::RDF::GraphFocus.new("urn:root", graph)
12
+ end
13
+
14
+ let :list do
15
+ focus.as_list
16
+ end
17
+
18
+ it "should add an item to graph" do
19
+ list.append_node("#test")
20
+
21
+ graph.should match_query do |query|
22
+ query.pattern(:subject => "urn:root#test")
23
+ end
24
+ end
25
+
26
+ it "should add several items to the graph" do
27
+ list.append_node("#1")
28
+ list.append_node("#2")
29
+ list.append_node("#3")
30
+
31
+ focus.as_list.to_a.should have(3).nodes
32
+
33
+ end
34
+ end
@@ -0,0 +1 @@
1
+ require 'roadforest/resource/http/form-parsing'
@@ -0,0 +1,193 @@
1
+ require 'socket'
2
+ require 'rdf'
3
+
4
+ describe "RoadForest integration", :integration => true do
5
+ class LC < ::RDF::Vocabulary("http://lrdesign.com/vocabularies/logical-construct#"); end
6
+ def kill_server(pid)
7
+ return if pid.nil?
8
+ Process.kill("KILL", pid) rescue nil
9
+ Process.wait(pid)
10
+ rescue Errno::ECHILD
11
+ end
12
+
13
+ before :each do
14
+ @server_port = 8778
15
+
16
+ begin
17
+ test_conn = TCPSocket.new 'localhost', @server_port
18
+ raise "Something is still running on localhost:#{@server_port}"
19
+ rescue Errno::ECONNREFUSED
20
+ #That's what we're hoping for
21
+ ensure
22
+ #test_conn.close
23
+ end
24
+
25
+ @setup_time_limit = 3
26
+ @destination_dir = "spec_support/destination"
27
+ @server_logs = "integration-tests.log"
28
+
29
+ @server_pid = fork do
30
+ require 'roadforest/server'
31
+ require 'examples/file-management'
32
+ require 'logger'
33
+ RoadForest.serve(
34
+ FileManagementExample::Application.new("http://localhost:#{@server_port}"),
35
+ FileManagementExample::ServicesHost.new.tap do |host|
36
+ host.file_records = [
37
+ FileManagementExample::FileRecord.new("one", false),
38
+ FileManagementExample::FileRecord.new("two", false),
39
+ FileManagementExample::FileRecord.new("three", false)
40
+ ]
41
+ host.destination_dir = @destination_dir
42
+ host.logger = Logger.new("integration-test.log")
43
+ host.logger.level = Logger::DEBUG
44
+ end
45
+ ) do |config|
46
+ config.port = @server_port
47
+ end
48
+ end
49
+
50
+ require 'roadforest/remote-host'
51
+
52
+ %w{EXIT TERM}.each do |signal|
53
+ trap(signal) do
54
+ kill_server(@server_pid)
55
+ end
56
+ end
57
+
58
+ begin_time = Time.now
59
+ begin
60
+ test_conn = TCPSocket.new 'localhost', @server_port
61
+ rescue Errno::ECONNREFUSED
62
+ if Time.now - begin_time > @setup_time_limit
63
+ raise "Couldn't connect to test server after #{@setup_time_limit} seconds - bailing out"
64
+ else
65
+ sleep 0.05
66
+ retry
67
+ end
68
+ ensure
69
+ test_conn.close rescue nil
70
+ end
71
+ end
72
+
73
+ after :each do
74
+ kill_server @server_pid
75
+ end
76
+
77
+ let :source_path do
78
+ "spec_support/test-file.txt"
79
+ end
80
+
81
+ let :server_url do
82
+ "http://localhost:#{@server_port}"
83
+ end
84
+
85
+ let :server do
86
+ server = RoadForest::RemoteHost.new(server_url)
87
+ #server.graph_transfer.trace = true
88
+ server
89
+ end
90
+
91
+ before :each do
92
+ require 'fileutils'
93
+ FileUtils.rm_f(@destination_dir)
94
+ FileUtils.mkdir_p(@destination_dir)
95
+ end
96
+
97
+ def unresolved_list(graph)
98
+ items = graph.all(:skos, "hasTopConcept")
99
+
100
+ unresolved = items.find do |nav_item|
101
+ nav_item[:skos, "label"] == "Unresolved"
102
+ end
103
+
104
+ return unresolved.first(:foaf, "page")
105
+ end
106
+
107
+
108
+ describe "raw put of file data" do
109
+ before :each do
110
+ @destination = nil
111
+ server.getting do |graph|
112
+ target = unresolved_list(graph)
113
+ @destination = target.first(:lc, "needs").as_list.first[:lc, "contents"]
114
+ end
115
+
116
+ unless @destination.nil?
117
+ File::open(source_path) do |file|
118
+ @response = server.put_file(@destination, "text/plain", file)
119
+ end
120
+ end
121
+ end
122
+
123
+ it "should respond with 204" do
124
+ @response.status.should == 204
125
+ end
126
+
127
+ it "should set destination" do
128
+ @destination.to_context.to_s.should == "#{server_url}/files/one"
129
+ end
130
+
131
+ it "should deliver file to destination path" do
132
+ File::read(File::join(@destination_dir, "one")).should == File::read(source_path)
133
+ end
134
+ end
135
+
136
+ describe "posting data to server" do
137
+ before :each do
138
+ server.posting do |graph|
139
+ target = unresolved_list(graph)
140
+
141
+ target.post_to do |new_need|
142
+ new_need[[:lc, "name"]] = "lawyers/guns/money"
143
+ end
144
+ end
145
+ end
146
+
147
+ it "should change the server state" do
148
+ server.getting do |graph|
149
+ @get_me_out_of_this = unresolved_list(graph).first(:lc, "needs").as_list.find do |need|
150
+ need[:lc, "name"] == "lawyers/guns/money"
151
+ end
152
+ end
153
+
154
+ @get_me_out_of_this.should_not be_nil
155
+ end
156
+ end
157
+
158
+ describe "getting data from the server" do
159
+ it "should get a correct count" do
160
+ server.getting do |graph|
161
+ @correct = 0
162
+ unresolved_list(graph).first(:lc, "needs").as_list.each do |need|
163
+ @correct += 1 unless need[:lc, "resolved"]
164
+ end
165
+ end
166
+
167
+ @correct.should == 3
168
+ end
169
+ end
170
+
171
+ describe "putting data to server" do
172
+ before :each do
173
+ server.putting do |graph|
174
+ target = unresolved_list(graph)
175
+
176
+ target.first(:lc, "needs").as_list.each do |need|
177
+ need[[:lc, "resolved"]] = true
178
+ end
179
+ end
180
+ end
181
+
182
+ it "should change the server state" do
183
+ server.getting do |graph|
184
+ @correct = 0
185
+ unresolved_list(graph).first(:lc, "needs").as_list.each do |need|
186
+ @correct += 1
187
+ end
188
+ end
189
+
190
+ @correct.should == 0
191
+ end
192
+ end
193
+ end
@@ -0,0 +1,17 @@
1
+ require 'roadforest/rdf/normalization'
2
+
3
+ describe RoadForest::RDF::Normalization do
4
+ include described_class
5
+
6
+ it "should match http://test.com and http://test.com/" do
7
+ normalize_resource("http://test.com").to_s.should == normalize_resource("http://test.com/").to_s
8
+ end
9
+
10
+ it "should match http://test.com:8888 and http://test.com:8888/" do
11
+ normalize_resource("http://test.com:8888").to_s.should == "http://test.com:8888/"
12
+ end
13
+
14
+ it "should match http://localhost:8778 and http://localhost:8778/" do
15
+ normalize_resource("http://localhost:8778").to_s.should == "http://localhost:8778/"
16
+ end
17
+ end
data/spec/update-focus.rb CHANGED
@@ -71,6 +71,13 @@ describe RoadForest::RDF::UpdateFocus do
71
71
  end
72
72
  end
73
73
 
74
+ it "should make relevant prefixes available" do
75
+ updater[[:rdf, :type]] = [:voc, :Thing]
76
+ updater[[:voc, :a]] = 15
77
+
78
+ updater.relevant_prefixes.keys.sort.should == ["rdf", "voc"]
79
+ end
80
+
74
81
  it "should copy entire context when resource is written" do
75
82
  updater[Voc[:a]] = 17
76
83
 
@@ -114,4 +121,34 @@ describe RoadForest::RDF::UpdateFocus do
114
121
  updater[Voc[:a]].should == 7
115
122
  target_graph.should be_empty
116
123
  end
124
+
125
+ it "should add a list to the target graph" do
126
+ list_focus = updater.add_node(Voc[:list])
127
+ nodes = []
128
+ list_focus.as_list.append_node do |node|
129
+ nodes << node
130
+ node[Voc[:d]] = 107
131
+ end
132
+
133
+ list_focus.as_list.append_node do |node|
134
+ nodes << node
135
+ node[Voc[:d]] = 109
136
+ end
137
+
138
+ list_focus.as_list.append_node do |node|
139
+ nodes << node
140
+ node[Voc[:d]] = 113
141
+ end
142
+
143
+ resource_graph = ::RDF::Graph.new(context_node, :data => target_graph)
144
+
145
+ list = ::RDF::List.new(list_focus.subject, target_graph)
146
+
147
+ list[0].should == nodes[0].subject
148
+ list[1].should == nodes[1].subject
149
+ list[2].should == nodes[2].subject
150
+ resource_graph.query([nodes[0].subject, Voc[:d], 107]).should_not be_empty
151
+ resource_graph.query([nodes[1].subject, Voc[:d], 109]).should_not be_empty
152
+ resource_graph.query([nodes[2].subject, Voc[:d], 113]).should_not be_empty
153
+ end
117
154
  end
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: roadforest
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Judson Lester
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-22 00:00:00.000000000 Z
12
+ date: 2013-10-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  prerelease: false
@@ -17,15 +17,15 @@ dependencies:
17
17
  name: rdf
18
18
  version_requirements: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - ! '>='
20
+ - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 1.0.4
22
+ version: 1.0.6
23
23
  none: false
24
24
  requirement: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ! '>='
26
+ - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.0.4
28
+ version: 1.0.6
29
29
  none: false
30
30
  - !ruby/object:Gem::Dependency
31
31
  prerelease: false
@@ -142,7 +142,7 @@ files:
142
142
  - lib/roadforest/rdf/context-fascade.rb
143
143
  - lib/roadforest/rdf/source-rigor.rb
144
144
  - lib/roadforest/rdf/graph-focus.rb
145
- - lib/roadforest/rdf/post-focus.rb
145
+ - lib/roadforest/rdf/etagging.rb
146
146
  - lib/roadforest/rdf/source-rigor/null-investigator.rb
147
147
  - lib/roadforest/rdf/source-rigor/credence.rb
148
148
  - lib/roadforest/rdf/source-rigor/credence/any.rb
@@ -151,14 +151,14 @@ files:
151
151
  - lib/roadforest/rdf/source-rigor/http-investigator.rb
152
152
  - lib/roadforest/rdf/source-rigor/investigator.rb
153
153
  - lib/roadforest/rdf/source-rigor/credence-annealer.rb
154
+ - lib/roadforest/rdf/post-focus.rb
155
+ - lib/roadforest/rdf/investigation.rb
154
156
  - lib/roadforest/rdf/update-focus.rb
155
157
  - lib/roadforest/rdf/vocabulary.rb
156
158
  - lib/roadforest/rdf/document.rb
157
- - lib/roadforest/rdf/focus-wrapping.rb
158
159
  - lib/roadforest/rdf/resource-pattern.rb
159
160
  - lib/roadforest/rdf/parcel.rb
160
161
  - lib/roadforest/rdf/resource-query.rb
161
- - lib/roadforest/rdf/investigation.rb
162
162
  - lib/roadforest/http/message.rb
163
163
  - lib/roadforest/http/graph-response.rb
164
164
  - lib/roadforest/http/adapters/excon.rb
@@ -172,22 +172,22 @@ files:
172
172
  - lib/roadforest/resource/role/has-children.rb
173
173
  - lib/roadforest/resource/handlers.rb
174
174
  - lib/roadforest/resource/rdf.rb
175
- - lib/roadforest/test-support/matchers.rb
176
- - lib/roadforest/test-support/remote-host.rb
175
+ - lib/roadforest/test-support/http-client.rb
177
176
  - lib/roadforest/test-support/trace-formatter.rb
177
+ - lib/roadforest/test-support/matchers.rb
178
178
  - lib/roadforest/test-support/dispatcher-facade.rb
179
- - lib/roadforest/test-support/http-client.rb
179
+ - lib/roadforest/test-support/remote-host.rb
180
180
  - lib/roadforest/server.rb
181
181
  - lib/roadforest/application/services-host.rb
182
182
  - lib/roadforest/application/path-provider.rb
183
183
  - lib/roadforest/application/parameters.rb
184
184
  - lib/roadforest/application/dispatcher.rb
185
185
  - lib/roadforest/application/route-adapter.rb
186
- - lib/roadforest/models.rb
187
186
  - lib/roadforest/model.rb
188
- - lib/roadforest/blob-model.rb
187
+ - lib/roadforest/models.rb
189
188
  - lib/roadforest/test-support.rb
190
189
  - lib/roadforest/rdf.rb
190
+ - lib/roadforest/blob-model.rb
191
191
  - lib/roadforest/utility/class-registry.rb
192
192
  - lib/roadforest/content-handling/type-handlers/jsonld.rb
193
193
  - lib/roadforest/content-handling/media-type.rb
@@ -195,14 +195,19 @@ files:
195
195
  - lib/roadforest/application.rb
196
196
  - lib/roadforest/remote-host.rb
197
197
  - lib/roadforest.rb
198
+ - examples/file-management.rb
198
199
  - spec/graph-store.rb
200
+ - spec/focus-list.rb
199
201
  - spec/graph-copier.rb
200
202
  - spec/rdf-parcel.rb
201
203
  - spec/media-types.rb
204
+ - spec/rdf-normalization.rb
205
+ - spec/excon-adapater.rb
202
206
  - spec/update-focus.rb
203
207
  - spec/client.rb
208
+ - spec/form-parsing.rb
204
209
  - spec/credence-annealer.rb
205
- - examples/file-management.rb
210
+ - spec/full-integration.rb
206
211
  - spec_support/gem_test_suite.rb
207
212
  homepage: http://nyarly.github.com/roadforest
208
213
  licenses:
@@ -213,7 +218,7 @@ rdoc_options:
213
218
  - --main
214
219
  - doc/README
215
220
  - --title
216
- - roadforest-0.0.1 Documentation
221
+ - roadforest-0.0.2 Documentation
217
222
  require_paths:
218
223
  - lib/
219
224
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -222,7 +227,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
227
  - !ruby/object:Gem::Version
223
228
  segments:
224
229
  - 0
225
- hash: -247142993
230
+ hash: -203066605
226
231
  version: '0'
227
232
  none: false
228
233
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -1,30 +0,0 @@
1
- require 'rdf/model/node'
2
-
3
- module RoadForest::RDF
4
- module FocusWrapping
5
- def new_focus
6
- dup
7
- end
8
-
9
- def wrap_node(value)
10
- next_step = new_focus
11
- if ::RDF::Node === value
12
- next_step.root_url = self.root_url
13
- else
14
- next_step.root_url = normalize_context(value)
15
- end
16
- next_step.subject = value
17
- next_step.graph = graph
18
- next_step.source_rigor = source_rigor
19
- next_step
20
- end
21
-
22
- def unwrap_value(value)
23
- if value.respond_to? :object
24
- value.object
25
- else
26
- wrap_node(value)
27
- end
28
- end
29
- end
30
- end