sickill-rack_revision_info 0.3.2 → 0.3.3
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/lib/rack_revision_info.rb
CHANGED
@@ -11,8 +11,9 @@ module Rack
|
|
11
11
|
@revision_info << " (#{date.strftime(DATETIME_FORMAT)})" if date
|
12
12
|
@action = (opts.keys & INJECT_ACTIONS).first
|
13
13
|
if @action
|
14
|
-
require '
|
14
|
+
require File.join(File.dirname(__FILE__), 'rack_revision_info', 'nokogiri_backend')
|
15
15
|
@selector = opts[@action]
|
16
|
+
@action = :inner_html= if @action == :inner_html
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
@@ -24,11 +25,10 @@ module Rack
|
|
24
25
|
body = html
|
25
26
|
begin
|
26
27
|
if @action
|
27
|
-
doc =
|
28
|
-
elements = doc.
|
28
|
+
doc = Nokogiri.parse(body)
|
29
|
+
elements = doc.css(@selector)
|
29
30
|
if elements.size > 0
|
30
|
-
elements
|
31
|
-
elements.send(@action, @revision_info)
|
31
|
+
elements.each { |e| e.send(@action, @revision_info) }
|
32
32
|
body = doc.to_s
|
33
33
|
end
|
34
34
|
end
|
@@ -67,4 +67,4 @@ module Rack
|
|
67
67
|
end
|
68
68
|
|
69
69
|
end
|
70
|
-
end
|
70
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
# extending Nokogiri with 'append' and 'prepend' methods
|
4
|
+
|
5
|
+
class Nokogiri::XML::Element
|
6
|
+
def append(data)
|
7
|
+
self.inner_html = inner_html + data
|
8
|
+
end
|
9
|
+
|
10
|
+
def prepend(data)
|
11
|
+
self.inner_html = data + inner_html
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -20,7 +20,7 @@ describe "Rack::RevisionInfo" do
|
|
20
20
|
run lambda { |env| [200, { 'Content-Type' => 'text/html' }, ["<html><head></head><body>Hello, World!</body></html>"]] }
|
21
21
|
end
|
22
22
|
response = Rack::MockRequest.new(app).get('/')
|
23
|
-
response.body.should match(/#{Regexp.escape("<!-- Revision #{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)}) -->")}/)
|
23
|
+
response.body.should match(/#{Regexp.escape("<!-- Revision #{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)}) -->")}/m)
|
24
24
|
end
|
25
25
|
|
26
26
|
it "shouldn't append revision info for non-html content-types" do
|
@@ -29,7 +29,7 @@ describe "Rack::RevisionInfo" do
|
|
29
29
|
run lambda { |env| [200, { 'Content-Type' => 'text/plain' }, ["Hello, World!"]] }
|
30
30
|
end
|
31
31
|
response = Rack::MockRequest.new(app).get('/')
|
32
|
-
response.body.should_not match(/#{Regexp.escape('<!-- Revision ')}/)
|
32
|
+
response.body.should_not match(/#{Regexp.escape('<!-- Revision ')}/m)
|
33
33
|
end
|
34
34
|
|
35
35
|
it "shouldn't append revision info for xhr requests" do
|
@@ -38,7 +38,7 @@ describe "Rack::RevisionInfo" do
|
|
38
38
|
run lambda { |env| [200, { 'Content-Type' => 'text/html' }, ["<html><head></head><body>Hello, World!</body></html>"]] }
|
39
39
|
end
|
40
40
|
response = Rack::MockRequest.new(app).get('/', "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest")
|
41
|
-
response.body.should_not match(/#{Regexp.escape('<!-- Revision ')}/)
|
41
|
+
response.body.should_not match(/#{Regexp.escape('<!-- Revision ')}/m)
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should raise exeption when no path given" do
|
@@ -55,19 +55,28 @@ describe "Rack::RevisionInfo" do
|
|
55
55
|
Rack::RevisionInfo::INJECT_ACTIONS.each do |action|
|
56
56
|
app = Rack::Builder.new do
|
57
57
|
use Rack::RevisionInfo, :path => "/some/path/to/repo", action => "#footer"
|
58
|
-
run lambda { |env| [200, { 'Content-Type' => 'text/html' }, [
|
58
|
+
run lambda { |env| [200, { 'Content-Type' => 'text/html' }, [%q{<html><head></head><body>Hello, World!<div id="footer">Foota</div></body></html>}]] }
|
59
59
|
end
|
60
60
|
response = Rack::MockRequest.new(app).get('/')
|
61
|
-
response.body.should match(/#{Regexp.escape("Revision #{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)})")}.*#{Regexp.escape("</body>")}/)
|
61
|
+
response.body.should match(/#{Regexp.escape("Revision #{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)})")}.*#{Regexp.escape("</body>")}/m)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
it "shouldn't inject revision info into DOM if unknown action" do
|
66
66
|
app = Rack::Builder.new do
|
67
67
|
use Rack::RevisionInfo, :path => "/some/path/to/repo", :what_what => "#footer"
|
68
|
-
run lambda { |env| [200, { 'Content-Type' => 'text/html' }, [
|
68
|
+
run lambda { |env| [200, { 'Content-Type' => 'text/html' }, [%q{<html><head></head><body>Hello, World!<div id="footer">Foota</div></body></html>}]] }
|
69
69
|
end
|
70
70
|
response = Rack::MockRequest.new(app).get('/')
|
71
|
-
response.body.should_not match(/#{Regexp.escape("Revision #{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)})")}.*#{Regexp.escape("</body>")}/)
|
71
|
+
response.body.should_not match(/#{Regexp.escape("Revision #{REV} (#{DATE.strftime(Rack::RevisionInfo::DATETIME_FORMAT)})")}.*#{Regexp.escape("</body>")}/m)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "shouldn't escape backslashes" do # hpricot was doing this :|
|
75
|
+
app = Rack::Builder.new do
|
76
|
+
use Rack::RevisionInfo, :path => "/some/path/to/repo", :inner_html => "#footer"
|
77
|
+
run lambda { |env| [200, { 'Content-Type' => 'text/html' }, [%q{<html><head></head><body><input type="text" name="foo" value="\" /><div id="footer">Foota</div></body></html>}]] }
|
78
|
+
end
|
79
|
+
response = Rack::MockRequest.new(app).get('/')
|
80
|
+
response.body.should_not match(/value="\\\\"/m)
|
72
81
|
end
|
73
82
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sickill-rack_revision_info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Kulik
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-08-31 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -23,9 +23,11 @@ extra_rdoc_files: []
|
|
23
23
|
|
24
24
|
files:
|
25
25
|
- lib/rack_revision_info.rb
|
26
|
+
- lib/rack_revision_info/nokogiri_backend.rb
|
26
27
|
- spec/spec_rack_revision_info.rb
|
27
28
|
has_rdoc: false
|
28
29
|
homepage: http://sickill.net
|
30
|
+
licenses:
|
29
31
|
post_install_message:
|
30
32
|
rdoc_options: []
|
31
33
|
|
@@ -46,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
46
48
|
requirements: []
|
47
49
|
|
48
50
|
rubyforge_project:
|
49
|
-
rubygems_version: 1.
|
51
|
+
rubygems_version: 1.3.5
|
50
52
|
signing_key:
|
51
53
|
specification_version: 2
|
52
54
|
summary: Rack middleware showing current git (or svn) revision number of application
|