rack-gist 1.0.6 → 1.0.7

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/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: