scrappy 0.1.18 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.1.19 2011-02-24
2
+
3
+ * Using Sinatra (in production mode) instead of Camping
4
+
1
5
  === 0.1.18 2011-02-18
2
6
 
3
7
  * Retry support when opening URLs
data/Manifest CHANGED
@@ -27,6 +27,7 @@ lib/scrappy/selectors/xpath.rb
27
27
  lib/scrappy/server.rb
28
28
  lib/scrappy/shell.rb
29
29
  lib/scrappy/support.rb
30
+ lib/scrappy/views/home.haml
30
31
  lib/scrappy/webkit/webkit.rb
31
32
  test/test_helper.rb
32
33
  test/test_scrappy.rb
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ Echoe.new('scrappy', Scrappy::VERSION) do |p|
11
11
  p.email = "joseignacio.fernandez@gmail.com"
12
12
  p.install_message = '**(Optional) Remember to install rbwebkitgtk for visual parsing features**'
13
13
  p.ignore_pattern = ["pkg/*"]
14
- p.dependencies = [['activesupport','>= 2.3.5'], ['markaby', '>= 0.7.1'], ['camping', '= 2.0'], ['nokogiri', '>= 1.4.1'], ['mechanize','>= 1.0.0'], ['lightrdf','>= 0.1.9'], ['mongrel', '>= 1.1.5'], ['i18n', '>= 0.4.2']]
14
+ p.dependencies = [['activesupport','>= 2.3.5'], ['sinatra', '>= 1.1.2'], ['thin', '>= 1.2.7'], ['nokogiri', '>= 1.4.1'], ['mechanize','>= 1.0.0'], ['lightrdf','>= 0.1.9'], ['i18n', '>= 0.4.2']]
15
15
  end
16
16
 
17
17
  Rake::RDocTask.new(:rdoc) do |rdoc|
data/bin/scrappy CHANGED
@@ -11,14 +11,8 @@ module Scrappy
11
11
 
12
12
  require 'rubygems'
13
13
  require 'optparse'
14
- require 'logger'
15
- require 'readline'
16
- gem 'camping', '=2.0'
17
- require 'camping'
18
- require 'camping/server'
19
14
  require "#{Root}/lib/scrappy"
20
- require 'scrappy/shell'
21
-
15
+
22
16
  SESSION_TOKEN = rand(100000000)
23
17
  Options = OpenStruct.new
24
18
 
@@ -64,14 +58,20 @@ module Scrappy
64
58
  puts Agent.create.proxy(:http_method=>:get, :uri=>Options.url).output
65
59
  elsif Options.proxy
66
60
  puts "Launching Scrappy Web Proxy..."
67
- Camping::Server.new(OpenStruct.new(:host => 'localhost', :port => Options.port, :server=>'mongrel'), ["#{Scrappy::Root}/lib/scrappy/proxy.rb"]).start
61
+ require 'scrappy/proxy'
62
+ Thin::Logging.silent = true
63
+ Scrappy::Proxy.run! :host => 'localhost', :port => Options.port, :environment=>:production
68
64
  elsif Options.server
69
65
  puts "Launching Scrappy Web Server..."
70
- Camping::Server.new(OpenStruct.new(:host => 'localhost', :port => Options.port, :server=>'mongrel'), ["#{Scrappy::Root}/lib/scrappy/server.rb"]).start
66
+ require 'scrappy/server'
67
+ Thin::Logging.silent = true
68
+ Scrappy::Server.run! :host => 'localhost', :port => Options.port, :environment=>:production
71
69
  elsif Options.shell
72
70
  puts "Launching Scrappy Shell..."
71
+ require 'scrappy/shell'
73
72
  Shell.new.run
74
73
  else
74
+ require 'scrappy/shell'
75
75
  Options.quiet = true
76
76
  Shell.new(@file).run
77
77
  end
data/lib/scrappy.rb CHANGED
@@ -21,7 +21,7 @@ require 'scrappy/agent/agent'
21
21
  Namespace :sc, 'http://lab.gsi.dit.upm.es/scraping.rdf#'
22
22
 
23
23
  module Scrappy
24
- VERSION = '0.1.18'
24
+ VERSION = '0.1.19'
25
25
  end
26
26
 
27
27
  # Require selectors
data/lib/scrappy/proxy.rb CHANGED
@@ -1,41 +1,34 @@
1
- require 'camping'
2
- require 'camping/session'
3
- require 'open3'
4
-
5
- Camping.goes :Scrappy
1
+ require 'sinatra'
2
+ require 'thin'
6
3
 
7
4
  module Scrappy
8
- module Controllers
9
- class Index < R '.*'
10
- include InputEscaping
11
-
12
- def get
13
- process_request :get
14
- end
5
+ class Proxy < Sinatra::Base
6
+ get '*' do
7
+ process_request :get
8
+ end
15
9
 
16
- def post
17
- process_request :post
18
- end
10
+ post '*' do
11
+ process_request :post
12
+ end
19
13
 
20
- protected
21
- def process_request method
22
- response = agent.proxy :method=>method, :uri=>request.env["REQUEST_URI"], :inputs=>@input
14
+ protected
15
+ def process_request method
16
+ response = agent.proxy :method=>method, :uri=>request.env['REQUEST_URI'], :inputs=>params
23
17
 
24
- case response.status
25
- when :redirect
26
- redirect response.uri
27
- when :ok
28
- @headers['Content-Type'] = response.content_type
29
- response.output
30
- else
31
- @status = 500
32
- 'Error'
33
- end
18
+ case response.status
19
+ when :redirect
20
+ redirect response.uri
21
+ when :ok
22
+ headers 'Content-Type' => response.content_type
23
+ response.output
24
+ else
25
+ status 500
26
+ "Internal error"
34
27
  end
28
+ end
35
29
 
36
- def agent
37
- Scrappy::Agent[@request.env["REMOTE_ADDR"]]
38
- end
30
+ def agent
31
+ Scrappy::Agent[request.ip]
39
32
  end
40
33
  end
41
34
  end
@@ -1,76 +1,55 @@
1
- require 'camping'
2
- require 'camping/session'
3
- require 'open3'
4
-
5
- Camping.goes :Scrappy
1
+ require 'sinatra'
2
+ require 'thin'
3
+ require 'haml'
6
4
 
7
5
  module Scrappy
8
- include Camping::Session
9
- secret '1a36591bceec49c832079e270d7e8b73'
6
+ class Server < Sinatra::Base
7
+ enable :sessions
8
+ set :views, File.dirname(__FILE__) + '/views'
10
9
 
11
- module Controllers
12
- class Index
13
- def get
14
- mab do
15
- html do
16
- head {}
17
- body do
18
- h1 "Scrappy Web Server"
19
- p "Use following URL format: http://[host]/[format]/[url]"
20
- p do
21
- "For example: " + a("http://localhost:3434/rdfxml/http://www.google.com",
22
- :href=>"http://localhost:3434/rdfxml/http://www.google.com")
23
- end
24
- p do
25
- "Remember to escape parameters: " +
26
- "http://www.example.com/~user/%3Ftest%3D1%26test1%3D2<br/> or<br/> " +
27
- "http%3A%2F%2Fwww.example.com%2F~user%2F%3Ftest%3D1%26test1%3D2<br/>" +
28
- "instead of<br/> http://www.example.com/~user/?test=1&test1=2"
29
- end
30
- p do
31
- "Available formats are png, yarf, rdfxml, ntriples, turtle, json, jsonrdf, ejson"
32
- end
33
- end
34
- end
35
- end
36
- end
10
+ get '/' do
11
+ haml :home
37
12
  end
38
13
 
39
- class Extract < R '/(\w+)/(.+)'
40
- include InputEscaping
14
+ get '/:format/*' do
15
+ process_request :get, params[:format], params[:splat] * "/", params[:callback]
16
+ end
41
17
 
42
- def get format, url
43
- process_request :get, format, url
44
- end
18
+ post '/:format/*' do
19
+ process_request :post, params[:format], params[:splat] * "/", params[:callback]
20
+ end
45
21
 
46
- def post format, url
47
- process_request :post, format, url
22
+ protected
23
+ def process_request method, format, url, callback
24
+ response = agent.proxy :method=>method, :uri=>url, :inputs=>inputs, :format=>format.to_sym
25
+ case response.status
26
+ when :redirect
27
+ redirect "/#{format}/#{CGI::escape(response.uri).gsub('%2F','/').gsub('%3A',':')}#{textual_inputs}"
28
+ when :ok
29
+ headers 'Content-Type' => response.content_type
30
+ callback ? "#{callback}(#{response.output})" : response.output
31
+ else
32
+ status 500
33
+ "Internal error"
48
34
  end
35
+ end
49
36
 
50
- protected
51
- def process_request method, format, url
52
- callback = @input['callback']
53
- response = agent.proxy :method=>method, :uri=>url, :inputs=>@input.reject{|k,v| k=='callback'}, :format=>format.to_sym
54
- case response.status
55
- when :redirect
56
- redirect "/#{format}/#{CGI::escape(response.uri).gsub('%2F','/').gsub('%3A',':')}#{inputs}"
57
- when :ok
58
- @headers['Content-Type'] = response.content_type
59
- callback ? "#{callback}(#{response.output})" : response.output
60
- else
61
- @status = 500
62
- 'Error'
63
- end
37
+ def agent
38
+ return @agent if @agent
39
+ if session[:agent].nil? || session[:token] != SESSION_TOKEN
40
+ session[:token] = SESSION_TOKEN
41
+ session[:agent] = Scrappy::Agent.create.id
64
42
  end
43
+ @agent = Scrappy::Agent[session[:agent]]
44
+ end
65
45
 
66
- def agent
67
- return @agent if @agent
68
- if @state[:agent].nil? || @state[:token] != SESSION_TOKEN
69
- @state[:token] = SESSION_TOKEN
70
- @state[:agent] = Scrappy::Agent.create.id
71
- end
72
- @agent = Scrappy::Agent[@state[:agent]]
73
- end
46
+ def inputs
47
+ params.reject{|k,v| ['callback', 'splat', 'format']}
48
+ end
49
+
50
+ def textual_inputs
51
+ return '' if inputs.empty?
52
+ "?" + (inputs.map{|k,v| "#{CGI.escape(k)}=#{CGI.escape(v)}"}*'')
74
53
  end
75
54
  end
76
- end
55
+ end
data/lib/scrappy/shell.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'readline'
2
+
1
3
  module Scrappy
2
4
  class Shell
3
5
  def initialize file=nil
@@ -8,15 +8,6 @@ module URI
8
8
  end
9
9
  end
10
10
 
11
- module Scrappy
12
- module InputEscaping
13
- def inputs
14
- return '' if @input.empty?
15
- "?" + (@input.map{|k,v| "#{CGI.escape(k)}=#{CGI.escape(v)}"}*'')
16
- end
17
- end
18
- end
19
-
20
11
  module Nokogiri
21
12
  module XML
22
13
  class NodeSet
@@ -31,4 +22,4 @@ class String
31
22
  def wikify
32
23
  gsub(/^[a-z]|\s+[a-z]/) { |a| a.upcase }.gsub(/\s/, '')
33
24
  end
34
- end
25
+ end
@@ -0,0 +1,23 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %title Scrappy Web Server
5
+ %body
6
+ %h1 Scrappy Web Server
7
+ %p Use following URL format: http://[host]/[format]/[url]
8
+ %p
9
+ For example:
10
+ %a{:href=>"http://localhost:3434/rdfxml/http://www.google.com"}
11
+ http://localhost:3434/rdfxml/http://www.google.com
12
+
13
+ Remember to escape parameters: http://www.example.com/~user/%3Ftest%3D1%26test1%3D2
14
+ %br
15
+ or
16
+ %br
17
+ http%3A%2F%2Fwww.example.com%2F~user%2F%3Ftest%3D1%26test1%3D2
18
+ %br
19
+ instead of
20
+ %br
21
+ http://www.example.com/~user/?test=1&test1=2"
22
+
23
+ %p Available formats are png, yarf, rdfxml, ntriples, turtle, json, jsonrdf, ejson
data/scrappy.gemspec CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{scrappy}
5
- s.version = "0.1.18"
5
+ s.version = "0.1.19"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Jose Ignacio"]
9
- s.date = %q{2011-02-18}
9
+ s.date = %q{2011-02-24}
10
10
  s.default_executable = %q{scrappy}
11
11
  s.description = %q{RDF web scraper}
12
12
  s.email = %q{joseignacio.fernandez@gmail.com}
13
13
  s.executables = ["scrappy"]
14
- s.extra_rdoc_files = ["README.rdoc", "bin/scrappy", "lib/js/annotator.js", "lib/scrappy.rb", "lib/scrappy/agent/agent.rb", "lib/scrappy/agent/blind_agent.rb", "lib/scrappy/agent/cache.rb", "lib/scrappy/agent/dumper.rb", "lib/scrappy/agent/formats.rb", "lib/scrappy/agent/map_reduce.rb", "lib/scrappy/agent/extractor.rb", "lib/scrappy/agent/visual_agent.rb", "lib/scrappy/proxy.rb", "lib/scrappy/selectors/base_uri.rb", "lib/scrappy/selectors/css.rb", "lib/scrappy/selectors/new_uri.rb", "lib/scrappy/selectors/root.rb", "lib/scrappy/selectors/section.rb", "lib/scrappy/selectors/slice.rb", "lib/scrappy/selectors/uri.rb", "lib/scrappy/selectors/uri_pattern.rb", "lib/scrappy/selectors/xpath.rb", "lib/scrappy/server.rb", "lib/scrappy/shell.rb", "lib/scrappy/support.rb", "lib/scrappy/webkit/webkit.rb"]
15
- s.files = ["History.txt", "Manifest", "README.rdoc", "Rakefile", "bin/scrappy", "kb/elmundo.yarf", "lib/js/annotator.js", "lib/scrappy.rb", "lib/scrappy/agent/agent.rb", "lib/scrappy/agent/blind_agent.rb", "lib/scrappy/agent/cache.rb", "lib/scrappy/agent/dumper.rb", "lib/scrappy/agent/formats.rb", "lib/scrappy/agent/map_reduce.rb", "lib/scrappy/agent/extractor.rb", "lib/scrappy/agent/visual_agent.rb", "lib/scrappy/proxy.rb", "lib/scrappy/selectors/base_uri.rb", "lib/scrappy/selectors/css.rb", "lib/scrappy/selectors/new_uri.rb", "lib/scrappy/selectors/root.rb", "lib/scrappy/selectors/section.rb", "lib/scrappy/selectors/slice.rb", "lib/scrappy/selectors/uri.rb", "lib/scrappy/selectors/uri_pattern.rb", "lib/scrappy/selectors/xpath.rb", "lib/scrappy/server.rb", "lib/scrappy/shell.rb", "lib/scrappy/support.rb", "lib/scrappy/webkit/webkit.rb", "test/test_helper.rb", "test/test_scrappy.rb", "scrappy.gemspec"]
14
+ s.extra_rdoc_files = ["README.rdoc", "bin/scrappy", "lib/js/annotator.js", "lib/scrappy.rb", "lib/scrappy/agent/agent.rb", "lib/scrappy/agent/blind_agent.rb", "lib/scrappy/agent/cache.rb", "lib/scrappy/agent/dumper.rb", "lib/scrappy/agent/formats.rb", "lib/scrappy/agent/map_reduce.rb", "lib/scrappy/agent/extractor.rb", "lib/scrappy/agent/visual_agent.rb", "lib/scrappy/proxy.rb", "lib/scrappy/selectors/base_uri.rb", "lib/scrappy/selectors/css.rb", "lib/scrappy/selectors/new_uri.rb", "lib/scrappy/selectors/root.rb", "lib/scrappy/selectors/section.rb", "lib/scrappy/selectors/slice.rb", "lib/scrappy/selectors/uri.rb", "lib/scrappy/selectors/uri_pattern.rb", "lib/scrappy/selectors/xpath.rb", "lib/scrappy/server.rb", "lib/scrappy/shell.rb", "lib/scrappy/support.rb", "lib/scrappy/views/home.haml", "lib/scrappy/webkit/webkit.rb"]
15
+ s.files = ["History.txt", "Manifest", "README.rdoc", "Rakefile", "bin/scrappy", "kb/elmundo.yarf", "lib/js/annotator.js", "lib/scrappy.rb", "lib/scrappy/agent/agent.rb", "lib/scrappy/agent/blind_agent.rb", "lib/scrappy/agent/cache.rb", "lib/scrappy/agent/dumper.rb", "lib/scrappy/agent/formats.rb", "lib/scrappy/agent/map_reduce.rb", "lib/scrappy/agent/extractor.rb", "lib/scrappy/agent/visual_agent.rb", "lib/scrappy/proxy.rb", "lib/scrappy/selectors/base_uri.rb", "lib/scrappy/selectors/css.rb", "lib/scrappy/selectors/new_uri.rb", "lib/scrappy/selectors/root.rb", "lib/scrappy/selectors/section.rb", "lib/scrappy/selectors/slice.rb", "lib/scrappy/selectors/uri.rb", "lib/scrappy/selectors/uri_pattern.rb", "lib/scrappy/selectors/xpath.rb", "lib/scrappy/server.rb", "lib/scrappy/shell.rb", "lib/scrappy/support.rb", "lib/scrappy/views/home.haml", "lib/scrappy/webkit/webkit.rb", "test/test_helper.rb", "test/test_scrappy.rb", "scrappy.gemspec"]
16
16
  s.homepage = %q{http://github.com/josei/scrappy}
17
17
  s.post_install_message = %q{**(Optional) Remember to install rbwebkitgtk for visual parsing features**}
18
18
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Scrappy", "--main", "README.rdoc"]
@@ -28,31 +28,28 @@ Gem::Specification.new do |s|
28
28
 
29
29
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
30
30
  s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
31
- s.add_runtime_dependency(%q<markaby>, [">= 0.7.1"])
32
- s.add_runtime_dependency(%q<camping>, ["= 2.0"])
31
+ s.add_runtime_dependency(%q<sinatra>, [">= 1.1.2"])
32
+ s.add_runtime_dependency(%q<thin>, [">= 1.2.7"])
33
33
  s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.1"])
34
34
  s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
35
35
  s.add_runtime_dependency(%q<lightrdf>, [">= 0.1.9"])
36
- s.add_runtime_dependency(%q<mongrel>, [">= 1.1.5"])
37
36
  s.add_runtime_dependency(%q<i18n>, [">= 0.4.2"])
38
37
  else
39
38
  s.add_dependency(%q<activesupport>, [">= 2.3.5"])
40
- s.add_dependency(%q<markaby>, [">= 0.7.1"])
41
- s.add_dependency(%q<camping>, ["= 2.0"])
39
+ s.add_dependency(%q<sinatra>, [">= 1.1.2"])
40
+ s.add_dependency(%q<thin>, [">= 1.2.7"])
42
41
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
43
42
  s.add_dependency(%q<mechanize>, [">= 1.0.0"])
44
43
  s.add_dependency(%q<lightrdf>, [">= 0.1.9"])
45
- s.add_dependency(%q<mongrel>, [">= 1.1.5"])
46
44
  s.add_dependency(%q<i18n>, [">= 0.4.2"])
47
45
  end
48
46
  else
49
47
  s.add_dependency(%q<activesupport>, [">= 2.3.5"])
50
- s.add_dependency(%q<markaby>, [">= 0.7.1"])
51
- s.add_dependency(%q<camping>, ["= 2.0"])
48
+ s.add_dependency(%q<sinatra>, [">= 1.1.2"])
49
+ s.add_dependency(%q<thin>, [">= 1.2.7"])
52
50
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
53
51
  s.add_dependency(%q<mechanize>, [">= 1.0.0"])
54
52
  s.add_dependency(%q<lightrdf>, [">= 0.1.9"])
55
- s.add_dependency(%q<mongrel>, [">= 1.1.5"])
56
53
  s.add_dependency(%q<i18n>, [">= 0.4.2"])
57
54
  end
58
55
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 18
9
- version: 0.1.18
8
+ - 19
9
+ version: 0.1.19
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jose Ignacio
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-18 00:00:00 +01:00
17
+ date: 2011-02-24 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -32,30 +32,31 @@ dependencies:
32
32
  type: :runtime
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency
35
- name: markaby
35
+ name: sinatra
36
36
  prerelease: false
37
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  segments:
42
- - 0
43
- - 7
44
42
  - 1
45
- version: 0.7.1
43
+ - 1
44
+ - 2
45
+ version: 1.1.2
46
46
  type: :runtime
47
47
  version_requirements: *id002
48
48
  - !ruby/object:Gem::Dependency
49
- name: camping
49
+ name: thin
50
50
  prerelease: false
51
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "="
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  segments:
56
+ - 1
56
57
  - 2
57
- - 0
58
- version: "2.0"
58
+ - 7
59
+ version: 1.2.7
59
60
  type: :runtime
60
61
  version_requirements: *id003
61
62
  - !ruby/object:Gem::Dependency
@@ -100,24 +101,10 @@ dependencies:
100
101
  version: 0.1.9
101
102
  type: :runtime
102
103
  version_requirements: *id006
103
- - !ruby/object:Gem::Dependency
104
- name: mongrel
105
- prerelease: false
106
- requirement: &id007 !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- segments:
111
- - 1
112
- - 1
113
- - 5
114
- version: 1.1.5
115
- type: :runtime
116
- version_requirements: *id007
117
104
  - !ruby/object:Gem::Dependency
118
105
  name: i18n
119
106
  prerelease: false
120
- requirement: &id008 !ruby/object:Gem::Requirement
107
+ requirement: &id007 !ruby/object:Gem::Requirement
121
108
  requirements:
122
109
  - - ">="
123
110
  - !ruby/object:Gem::Version
@@ -127,7 +114,7 @@ dependencies:
127
114
  - 2
128
115
  version: 0.4.2
129
116
  type: :runtime
130
- version_requirements: *id008
117
+ version_requirements: *id007
131
118
  description: RDF web scraper
132
119
  email: joseignacio.fernandez@gmail.com
133
120
  executables:
@@ -160,6 +147,7 @@ extra_rdoc_files:
160
147
  - lib/scrappy/server.rb
161
148
  - lib/scrappy/shell.rb
162
149
  - lib/scrappy/support.rb
150
+ - lib/scrappy/views/home.haml
163
151
  - lib/scrappy/webkit/webkit.rb
164
152
  files:
165
153
  - History.txt
@@ -191,6 +179,7 @@ files:
191
179
  - lib/scrappy/server.rb
192
180
  - lib/scrappy/shell.rb
193
181
  - lib/scrappy/support.rb
182
+ - lib/scrappy/views/home.haml
194
183
  - lib/scrappy/webkit/webkit.rb
195
184
  - test/test_helper.rb
196
185
  - test/test_scrappy.rb