rack-livereload 0.3.9 → 0.3.10

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/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard 'rspec', :version => 2, :cli => '-c' do
4
+ guard 'rspec', :cli => '-c' do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
7
  watch('spec/spec_helper.rb') { "spec" }
@@ -1,6 +1,6 @@
1
1
  require "rack/livereload"
2
2
 
3
3
  class Rack::LiveReload
4
- VERSION = '0.3.9'
4
+ VERSION = '0.3.10'
5
5
  end
6
6
 
@@ -4,6 +4,7 @@ module Rack
4
4
  class LiveReload
5
5
  LIVERELOAD_JS_PATH = '/__rack/livereload.js'
6
6
  LIVERELOAD_LOCAL_URI = 'http://localhost:35729/livereload.js'
7
+ HEAD_TAG_REGEX = /<head>|<head[^(er)][^<]*>/
7
8
 
8
9
  BAD_USER_AGENTS = [ %r{MSIE} ]
9
10
 
@@ -77,7 +78,7 @@ module Rack
77
78
  template = ERB.new(::File.read(::File.expand_path('../../../skel/livereload.html.erb', __FILE__)))
78
79
 
79
80
  if line['<head']
80
- line.gsub!(/<head[^>]*>/) { |match| %{#{match}#{template.result(binding)}} }
81
+ line.gsub!(HEAD_TAG_REGEX) { |match| %{#{match}#{template.result(binding)}} }
81
82
  end
82
83
 
83
84
  headers["X-Rack-LiveReload"] = '1'
@@ -107,6 +107,17 @@ describe Rack::LiveReload do
107
107
  end
108
108
  end
109
109
 
110
+ context 'in header tags' do
111
+ let(:page_html) { "<header class='hero'><h1>Just a normal header tag</h1></header>" }
112
+
113
+ let(:body_dom) { Nokogiri::XML(body) }
114
+
115
+ it 'should not add the livereload js' do
116
+ body_dom.at_css("header")[:class].should == 'hero'
117
+ body_dom.css('script').should be_empty
118
+ end
119
+ end
120
+
110
121
  context 'not vendored' do
111
122
  before do
112
123
  middleware.stubs(:use_vendored?).returns(false)
@@ -212,5 +223,22 @@ describe Rack::LiveReload do
212
223
 
213
224
  it { should be_bad_browser(user_agent) }
214
225
  end
226
+
227
+ describe 'head tag regex' do
228
+ let(:regex) { described_class::HEAD_TAG_REGEX }
229
+ subject { regex }
230
+
231
+ it { should be_kind_of(Regexp) }
232
+
233
+ it 'only picks a valid <head> tag' do
234
+ regex.match("<head></head>").to_s.should eq('<head>')
235
+ regex.match("<head><title></title></head>").to_s.should eq('<head>')
236
+ regex.match("<head attribute='something'><title></title></head>").to_s.should eq("<head attribute='something'>")
237
+ end
238
+
239
+ it 'responds false when no head tag' do
240
+ regex.match("<header></header>").should be_false
241
+ end
242
+ end
215
243
  end
216
244
 
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'mocha'
1
+ require 'mocha/api'
2
2
  require 'webmock/rspec'
3
3
 
4
4
  require 'rack-livereload'
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: rack-livereload
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.9
5
+ version: 0.3.10
6
6
  platform: ruby
7
7
  authors:
8
8
  - John Bintz
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-05 00:00:00.000000000 Z
12
+ date: 2012-12-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement
@@ -318,7 +318,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
318
318
  version: '0'
319
319
  segments:
320
320
  - 0
321
- hash: -4083395389572261075
321
+ hash: 78031654202498146
322
322
  none: false
323
323
  required_rubygems_version: !ruby/object:Gem::Requirement
324
324
  requirements:
@@ -327,7 +327,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
327
  version: '0'
328
328
  segments:
329
329
  - 0
330
- hash: -4083395389572261075
330
+ hash: 78031654202498146
331
331
  none: false
332
332
  requirements: []
333
333
  rubyforge_project: rack-livereload