rack-gist 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,13 +1,13 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'hpricot', '>= 0.8.2'
4
- gem 'rest-client', '>= 1.6.0'
3
+ gem 'nokogiri', '~> 1.4.3.1'
4
+ gem 'rest-client', '~> 1.6.0'
5
5
 
6
6
  group :development do
7
- gem 'fakeweb', '>= 1.2.8'
8
- gem 'rspec', '>= 1.3.0'
9
- gem 'yard', '>= 0.5.8'
10
- gem 'rack', '>= 1.2.1'
11
- gem 'activesupport', '>= 2.3.8'
7
+ gem 'fakeweb', '~> 1.2.8'
8
+ gem 'rspec', '~> 1.3.0'
9
+ gem 'yard', '~> 0.5.8'
10
+ gem 'rack', '~> 1.2.1'
11
+ gem 'activesupport', '~> 2.3.8'
12
12
  gem 'ruby-debug'
13
13
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.6
1
+ 1.0.7
data/lib/rack/gist.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'hpricot'
1
+ require 'nokogiri'
2
2
  require 'rest-client'
3
3
 
4
4
  module Rack
@@ -22,34 +22,36 @@ module Rack
22
22
  private
23
23
 
24
24
  def rewrite(status, headers, body)
25
- if 'text/html' == headers['Content-Type']
26
- body = [body].flatten
27
- body.map! do |part|
28
- Hpricot(part.to_s).tap do |doc|
29
- extras = false
30
- doc.search('script[@src*="gist.github.com"]').each do |tag|
31
- extras = true
32
- tag['src'].match(%r{gist\.github\.com/(\d+)\.js(?:\?file=(.*))?}).tap do |match|
33
- id, file = match[1, 2]
34
- suffix, extra = file ? ["#file_#{file}", "rack-gist-file='#{file}'"] : ['', '']
35
- tag.swap("<div class='rack-gist' id='rack-gist-#{id}' gist-id='#{id}' #{extra}>Can't see this Gist? <a rel='nofollow' href='http://gist.github.com/#{id}#{suffix}'>View it on Github!</a></div>")
36
- end
25
+ if headers['Content-Type'].to_s.match('text/html')
26
+ b = ''
27
+ body.each { |part| b << part.to_s }
28
+ body = Nokogiri(b).tap do |doc|
29
+ if swap_tags(doc)
30
+ doc.at('head').add_child(css_html)
31
+ doc.at('body').tap do |node|
32
+ node.add_child(jquery_link) if @options[:jquery]
33
+ node.add_child(jquery_helper)
37
34
  end
38
-
39
- if extras
40
- doc.search('head').append(css_html)
41
- doc.search('body').tap do |node|
42
- node.append(jquery_link) if @options[:jquery]
43
- node.append(jquery_helper)
44
- end
45
- end
46
- end.to_s
47
- end
35
+ end
36
+ end.to_s
48
37
  headers['Content-Length'] = body.map { |part| Rack::Utils.bytesize(part) }.inject(0) { |sum, size| sum + size }.to_s
49
38
  end
50
39
  [status, headers, body]
51
40
  end
52
41
 
42
+ def swap_tags(doc)
43
+ extras = false
44
+ doc.search('script[@src*="gist.github.com"]').each do |tag|
45
+ extras = true
46
+ tag['src'].match(%r{gist\.github\.com/(\d+)\.js(?:\?file=(.*))?}).tap do |match|
47
+ id, file = match[1, 2]
48
+ suffix, extra = file ? ["#file_#{file}", "rack-gist-file='#{file}'"] : ['', '']
49
+ tag.swap("<p class='rack-gist' id='rack-gist-#{id}' gist-id='#{id}' #{extra}>Can't see this Gist? <a rel='nofollow' href='http://gist.github.com/#{id}#{suffix}'>View it on Github!</a></p>")
50
+ end
51
+ end
52
+ extras
53
+ end
54
+
53
55
  def serve_gist(env)
54
56
  gist_id, file = path(env).match(regex)[1,2]
55
57
  cache = @options[:cache]
data/rack-gist.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rack-gist}
8
- s.version = "1.0.6"
8
+ s.version = "1.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Daniel Huckstep"]
12
- s.date = %q{2010-08-08}
12
+ s.date = %q{2010-08-24}
13
13
  s.description = %q{Load gists in the background. KTHXBYE!}
14
14
  s.email = %q{darkhelmet@darkhelmetlive.com}
15
15
  s.extra_rdoc_files = [
@@ -51,32 +51,32 @@ Gem::Specification.new do |s|
51
51
  s.specification_version = 3
52
52
 
53
53
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
- s.add_runtime_dependency(%q<hpricot>, [">= 0.8.2"])
55
- s.add_runtime_dependency(%q<rest-client>, [">= 1.6.0"])
56
- s.add_development_dependency(%q<fakeweb>, [">= 1.2.8"])
57
- s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
58
- s.add_development_dependency(%q<yard>, [">= 0.5.8"])
59
- s.add_development_dependency(%q<rack>, [">= 1.2.1"])
60
- s.add_development_dependency(%q<activesupport>, [">= 2.3.8"])
54
+ s.add_runtime_dependency(%q<nokogiri>, ["~> 1.4.3.1"])
55
+ s.add_runtime_dependency(%q<rest-client>, ["~> 1.6.0"])
56
+ s.add_development_dependency(%q<fakeweb>, ["~> 1.2.8"])
57
+ s.add_development_dependency(%q<rspec>, ["~> 1.3.0"])
58
+ s.add_development_dependency(%q<yard>, ["~> 0.5.8"])
59
+ s.add_development_dependency(%q<rack>, ["~> 1.2.1"])
60
+ s.add_development_dependency(%q<activesupport>, ["~> 2.3.8"])
61
61
  s.add_development_dependency(%q<ruby-debug>, [">= 0"])
62
62
  else
63
- s.add_dependency(%q<hpricot>, [">= 0.8.2"])
64
- s.add_dependency(%q<rest-client>, [">= 1.6.0"])
65
- s.add_dependency(%q<fakeweb>, [">= 1.2.8"])
66
- s.add_dependency(%q<rspec>, [">= 1.3.0"])
67
- s.add_dependency(%q<yard>, [">= 0.5.8"])
68
- s.add_dependency(%q<rack>, [">= 1.2.1"])
69
- s.add_dependency(%q<activesupport>, [">= 2.3.8"])
63
+ s.add_dependency(%q<nokogiri>, ["~> 1.4.3.1"])
64
+ s.add_dependency(%q<rest-client>, ["~> 1.6.0"])
65
+ s.add_dependency(%q<fakeweb>, ["~> 1.2.8"])
66
+ s.add_dependency(%q<rspec>, ["~> 1.3.0"])
67
+ s.add_dependency(%q<yard>, ["~> 0.5.8"])
68
+ s.add_dependency(%q<rack>, ["~> 1.2.1"])
69
+ s.add_dependency(%q<activesupport>, ["~> 2.3.8"])
70
70
  s.add_dependency(%q<ruby-debug>, [">= 0"])
71
71
  end
72
72
  else
73
- s.add_dependency(%q<hpricot>, [">= 0.8.2"])
74
- s.add_dependency(%q<rest-client>, [">= 1.6.0"])
75
- s.add_dependency(%q<fakeweb>, [">= 1.2.8"])
76
- s.add_dependency(%q<rspec>, [">= 1.3.0"])
77
- s.add_dependency(%q<yard>, [">= 0.5.8"])
78
- s.add_dependency(%q<rack>, [">= 1.2.1"])
79
- s.add_dependency(%q<activesupport>, [">= 2.3.8"])
73
+ s.add_dependency(%q<nokogiri>, ["~> 1.4.3.1"])
74
+ s.add_dependency(%q<rest-client>, ["~> 1.6.0"])
75
+ s.add_dependency(%q<fakeweb>, ["~> 1.2.8"])
76
+ s.add_dependency(%q<rspec>, ["~> 1.3.0"])
77
+ s.add_dependency(%q<yard>, ["~> 0.5.8"])
78
+ s.add_dependency(%q<rack>, ["~> 1.2.1"])
79
+ s.add_dependency(%q<activesupport>, ["~> 2.3.8"])
80
80
  s.add_dependency(%q<ruby-debug>, [">= 0"])
81
81
  end
82
82
  end
@@ -3,8 +3,10 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  describe "Rack::Gist" do
4
4
  before(:all) do
5
5
  @gist_id = 348301
6
- @app = lambda do |env|
7
- headers = { 'Content-Type' => 'text/html' }
6
+ end
7
+
8
+ def app(headers)
9
+ lambda do |env|
8
10
  body = File.read(File.join(File.dirname(__FILE__), "body-#{env['PATH_INFO'].gsub(/[^\w]/, '')}.html")) rescue ''
9
11
  status = 404 if body.empty?
10
12
  [status || 200, headers, body]
@@ -15,8 +17,8 @@ describe "Rack::Gist" do
15
17
  Rack::MockRequest.env_for(path)
16
18
  end
17
19
 
18
- def middleware(options = {})
19
- Rack::Gist.new(@app, options)
20
+ def middleware(options = {}, headers = { 'Content-Type' => 'text/html' })
21
+ Rack::Gist.new(app(headers), options)
20
22
  end
21
23
 
22
24
  it 'should pass Rack::Lint' do
@@ -30,7 +32,16 @@ describe "Rack::Gist" do
30
32
  status, headers, body = a.call(mock_env)
31
33
  status.should == 200
32
34
  headers['Content-Type'].should == 'text/html'
33
- body.to_s.should have_html_tag('div').with('id' => "rack-gist-#{@gist_id}", 'gist-id' => @gist_id, 'class' => 'rack-gist')
35
+ body.to_s.should have_html_tag('p').with('id' => "rack-gist-#{@gist_id}", 'gist-id' => @gist_id, 'class' => 'rack-gist')
36
+ end
37
+ end
38
+
39
+ it 'should rewrite gist embed tags for full gists when content_type includes other things' do
40
+ middleware({}, { 'Content-Type' => 'text/html; charset=utf-8' }).tap do |a|
41
+ status, headers, body = a.call(mock_env)
42
+ status.should == 200
43
+ headers['Content-Type'].should == 'text/html; charset=utf-8'
44
+ body.to_s.should have_html_tag('p').with('id' => "rack-gist-#{@gist_id}", 'gist-id' => @gist_id, 'class' => 'rack-gist')
34
45
  end
35
46
  end
36
47
 
@@ -39,7 +50,7 @@ describe "Rack::Gist" do
39
50
  status, headers, body = a.call(mock_env('/partial'))
40
51
  status.should == 200
41
52
  headers['Content-Type'].should == 'text/html'
42
- body.to_s.should have_html_tag('div').with('id' => "rack-gist-#{@gist_id}", 'gist-id' => @gist_id, 'class' => 'rack-gist', 'rack-gist-file' => 'example.pig')
53
+ body.to_s.should have_html_tag('p').with('id' => "rack-gist-#{@gist_id}", 'gist-id' => @gist_id, 'class' => 'rack-gist', 'rack-gist-file' => 'example.pig')
43
54
  end
44
55
  end
45
56
 
@@ -102,7 +113,7 @@ describe "Rack::Gist" do
102
113
  status, headers, body = a.call(mock_env)
103
114
  status.should == 200
104
115
  headers['Content-Type'].should == 'text/html'
105
- headers['Content-Length'].should == '913'
116
+ headers['Content-Length'].should == '996'
106
117
  end
107
118
  end
108
119
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-gist
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 6
10
- version: 1.0.6
9
+ - 7
10
+ version: 1.0.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Huckstep
@@ -15,24 +15,25 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-08 00:00:00 -06:00
18
+ date: 2010-08-24 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  prerelease: false
23
23
  type: :runtime
24
- name: hpricot
24
+ name: nokogiri
25
25
  version_requirements: &id001 !ruby/object:Gem::Requirement
26
26
  none: false
27
27
  requirements:
28
- - - ">="
28
+ - - ~>
29
29
  - !ruby/object:Gem::Version
30
- hash: 59
30
+ hash: 113
31
31
  segments:
32
- - 0
33
- - 8
34
- - 2
35
- version: 0.8.2
32
+ - 1
33
+ - 4
34
+ - 3
35
+ - 1
36
+ version: 1.4.3.1
36
37
  requirement: *id001
37
38
  - !ruby/object:Gem::Dependency
38
39
  prerelease: false
@@ -41,7 +42,7 @@ dependencies:
41
42
  version_requirements: &id002 !ruby/object:Gem::Requirement
42
43
  none: false
43
44
  requirements:
44
- - - ">="
45
+ - - ~>
45
46
  - !ruby/object:Gem::Version
46
47
  hash: 15
47
48
  segments:
@@ -57,7 +58,7 @@ dependencies:
57
58
  version_requirements: &id003 !ruby/object:Gem::Requirement
58
59
  none: false
59
60
  requirements:
60
- - - ">="
61
+ - - ~>
61
62
  - !ruby/object:Gem::Version
62
63
  hash: 15
63
64
  segments:
@@ -73,7 +74,7 @@ dependencies:
73
74
  version_requirements: &id004 !ruby/object:Gem::Requirement
74
75
  none: false
75
76
  requirements:
76
- - - ">="
77
+ - - ~>
77
78
  - !ruby/object:Gem::Version
78
79
  hash: 27
79
80
  segments:
@@ -89,7 +90,7 @@ dependencies:
89
90
  version_requirements: &id005 !ruby/object:Gem::Requirement
90
91
  none: false
91
92
  requirements:
92
- - - ">="
93
+ - - ~>
93
94
  - !ruby/object:Gem::Version
94
95
  hash: 27
95
96
  segments:
@@ -105,7 +106,7 @@ dependencies:
105
106
  version_requirements: &id006 !ruby/object:Gem::Requirement
106
107
  none: false
107
108
  requirements:
108
- - - ">="
109
+ - - ~>
109
110
  - !ruby/object:Gem::Version
110
111
  hash: 29
111
112
  segments:
@@ -121,7 +122,7 @@ dependencies:
121
122
  version_requirements: &id007 !ruby/object:Gem::Requirement
122
123
  none: false
123
124
  requirements:
124
- - - ">="
125
+ - - ~>
125
126
  - !ruby/object:Gem::Version
126
127
  hash: 19
127
128
  segments: