rack_konami 0.9.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rack_konami.gemspec
4
+ gemspec
@@ -18,7 +18,7 @@ In config/environment.rb
18
18
  config.middleware.use Rack::Konami, :html => '<img src="/images/rails.png" >', :delay => '1500'
19
19
  Open your browser and type ↑ ↑ ↓ ↓ ← → ← → B A ↵
20
20
 
21
- == Rails 2.3.x / Sinatra
21
+ == Rails 3.x / Sinatra
22
22
  In your Gemfile
23
23
  gem "rack_konami"
24
24
 
data/Rakefile CHANGED
@@ -1,53 +1,11 @@
1
1
  require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "rack_konami"
8
- gem.summary = "Rack middlware that embeds the Konami code in your apps"
9
- gem.description = "Mixes the Konami code + JQuery to add Konami code effects to your app"
10
- gem.email = "mark@amerine.net"
11
- gem.homepage = "http://github.com/amerine/rack_konami"
12
- gem.authors = ["Mark Turner"]
13
- gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
- end
16
- Jeweler::GemcutterTasks.new
17
- rescue LoadError
18
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
19
- end
20
-
2
+ require "bundler/gem_tasks"
21
3
  require 'rake/testtask'
4
+
22
5
  Rake::TestTask.new(:test) do |test|
23
6
  test.libs << 'lib' << 'test'
24
7
  test.pattern = 'test/**/test_*.rb'
25
8
  test.verbose = true
26
9
  end
27
10
 
28
- begin
29
- require 'rcov/rcovtask'
30
- Rcov::RcovTask.new do |test|
31
- test.libs << 'test'
32
- test.pattern = 'test/**/test_*.rb'
33
- test.verbose = true
34
- end
35
- rescue LoadError
36
- task :rcov do
37
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
38
- end
39
- end
40
-
41
- task :test => :check_dependencies
42
-
43
11
  task :default => :test
44
-
45
- require 'rake/rdoctask'
46
- Rake::RDocTask.new do |rdoc|
47
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
-
49
- rdoc.rdoc_dir = 'rdoc'
50
- rdoc.title = "rack_konami #{version}"
51
- rdoc.rdoc_files.include('README*')
52
- rdoc.rdoc_files.include('lib/**/*.rb')
53
- end
@@ -1,6 +1,7 @@
1
- module Rack
1
+ require "rack_konami/version"
2
+
3
+ module Rack
2
4
  class Konami
3
-
4
5
  KONAMI_CODE = <<-EOTC
5
6
  <div id="rack_konami" style="display:none;position:fixed;top:20%;right:50%;">
6
7
  {{HTML}}
@@ -19,40 +20,50 @@ module Rack
19
20
  konami.load()
20
21
  </script>
21
22
  EOTC
22
-
23
- def initialize(app, options = {})
23
+
24
+ def initialize(app, options={})
24
25
  @app = app
25
- @html = options[:html] || "<h1>Konami Code</h1>"
26
+ @html = options[:html] || "<!-- Konami Code -->"
26
27
  @delay = options[:delay] || 1000
27
28
  end
28
-
29
- def call(env)
30
- dup._call(env)
29
+
30
+ def call env
31
+ dup._call env
31
32
  end
32
-
33
- def _call(env)
34
-
35
- @status, @headers, @response = @app.call(env)
36
- return [@status, @headers, @response] unless @headers['Content-Type'] =~ /html/
37
-
38
- @headers.delete('Content-Length')
39
- response = Rack::Response.new([], @status, @headers)
40
- @response.each do |fragment|
41
- response.write(inject_konami(fragment))
33
+
34
+ def _call env
35
+ status, headers, response = @app.call env
36
+
37
+ if should_inject_konami_code? status, headers, response
38
+ response = inject_konami_code response
39
+ fix_content_length(headers, response)
42
40
  end
43
- response.finish
41
+
42
+ [status, headers, response]
44
43
  end
45
-
46
- def inject_konami(response)
47
- response.sub!(/<\/body>/, "#{substitute_vars}\n</body>")
44
+
45
+ def should_inject_konami_code? status, headers, response
46
+ status == 200 &&
47
+ headers["Content-Type"] &&
48
+ (headers["Content-Type"].include?("text/html") || headers["Content-Type"].include?("application/xhtml"))
48
49
  end
49
-
50
- private
51
-
50
+
51
+ def inject_konami_code response, body=""
52
+ response.each { |s| body << s.to_s }
53
+ body.gsub(/<\/body>/, "#{substitute_vars}\n</body>")
54
+ end
55
+
56
+ def fix_content_length headers, response
57
+ if headers["Content-Length"]
58
+ length = response.to_ary.inject(0) { |len, part| len + Rack::Utils.bytesize(part) }
59
+ headers['Content-Length'] = length.to_s
60
+ end
61
+ end
62
+
52
63
  def substitute_vars
53
- KONAMI_CODE.sub(/\{\{HTML\}\}/, @html).sub!(/\{\{DELAY\}\}/, @delay.to_s)
64
+ code = KONAMI_CODE.gsub /\{\{HTML\}\}/, @html.to_s
65
+ code.gsub /\{\{DELAY\}\}/, @delay.to_s
54
66
  end
55
-
67
+ private :substitute_vars
56
68
  end
57
-
58
- end
69
+ end
@@ -0,0 +1,5 @@
1
+ module Rack
2
+ class Konami
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -1,54 +1,23 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rack_konami/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{rack_konami}
8
- s.version = "0.9.1"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Mark Turner"]
12
- s.date = %q{2010-08-21}
6
+ s.name = "rack_konami"
7
+ s.version = Rack::Konami::VERSION
8
+ s.authors = ["Mark Turner"]
9
+ s.email = ["mark@amerine.net"]
10
+ s.homepage = ""
11
+ s.summary = %q{Rack middlware that embeds the Konami code in your apps}
13
12
  s.description = %q{Mixes the Konami code + JQuery to add Konami code effects to your app}
14
- s.email = %q{mark@amerine.net}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lib/rack_konami.rb",
27
- "rack_konami.gemspec",
28
- "test/helper.rb",
29
- "test/test_rack_konami.rb"
30
- ]
31
- s.homepage = %q{http://github.com/amerine/rack_konami}
32
- s.rdoc_options = ["--charset=UTF-8"]
33
- s.require_paths = ["lib"]
34
- s.rubygems_version = %q{1.3.7}
35
- s.summary = %q{Rack middlware that embeds the Konami code in your apps}
36
- s.test_files = [
37
- "test/helper.rb",
38
- "test/test_rack_konami.rb"
39
- ]
40
13
 
41
- if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
- s.specification_version = 3
14
+ s.rubyforge_project = "rack_konami"
44
15
 
45
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
47
- else
48
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
49
- end
50
- else
51
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
52
- end
53
- end
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
54
20
 
21
+ s.add_development_dependency "shoulda"
22
+ s.add_runtime_dependency "rack"
23
+ end
@@ -36,7 +36,7 @@ class TestRackKonami < Test::Unit::TestCase
36
36
 
37
37
  EXPECTED_CODE = /<div\sid=.rack_konami.+konami\.load/m
38
38
  HTML_INCLUDED = /images\/rails.png/
39
- HTML_DEFAULT = /<h1>Konami Code<\/h1>/
39
+ HTML_DEFAULT = /<!-- Konami Code -->/
40
40
  DELAY_INCLUDED = /\.delay\(500\)/
41
41
  DELAY_DEFAULT = /\.delay\(1000\)/
42
42
 
metadata CHANGED
@@ -1,91 +1,81 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rack_konami
3
- version: !ruby/object:Gem::Version
4
- hash: 57
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 9
9
- - 1
10
- version: 0.9.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Mark Turner
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-08-21 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: thoughtbot-shoulda
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2011-09-22 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: shoulda
16
+ requirement: &70228432443400 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :development
34
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *70228432443400
25
+ - !ruby/object:Gem::Dependency
26
+ name: rack
27
+ requirement: &70228432442980 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70228432442980
35
36
  description: Mixes the Konami code + JQuery to add Konami code effects to your app
36
- email: mark@amerine.net
37
+ email:
38
+ - mark@amerine.net
37
39
  executables: []
38
-
39
40
  extensions: []
40
-
41
- extra_rdoc_files:
42
- - LICENSE
43
- - README.rdoc
44
- files:
41
+ extra_rdoc_files: []
42
+ files:
45
43
  - .document
46
44
  - .gitignore
45
+ - Gemfile
47
46
  - LICENSE
48
47
  - README.rdoc
49
48
  - Rakefile
50
49
  - VERSION
51
50
  - lib/rack_konami.rb
51
+ - lib/rack_konami/version.rb
52
52
  - rack_konami.gemspec
53
53
  - test/helper.rb
54
54
  - test/test_rack_konami.rb
55
- has_rdoc: true
56
- homepage: http://github.com/amerine/rack_konami
55
+ homepage: ''
57
56
  licenses: []
58
-
59
57
  post_install_message:
60
- rdoc_options:
61
- - --charset=UTF-8
62
- require_paths:
58
+ rdoc_options: []
59
+ require_paths:
63
60
  - lib
64
- required_ruby_version: !ruby/object:Gem::Requirement
61
+ required_ruby_version: !ruby/object:Gem::Requirement
65
62
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
73
- required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
68
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 3
79
- segments:
80
- - 0
81
- version: "0"
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
82
73
  requirements: []
83
-
84
- rubyforge_project:
85
- rubygems_version: 1.3.7
74
+ rubyforge_project: rack_konami
75
+ rubygems_version: 1.8.6
86
76
  signing_key:
87
77
  specification_version: 3
88
78
  summary: Rack middlware that embeds the Konami code in your apps
89
- test_files:
79
+ test_files:
90
80
  - test/helper.rb
91
81
  - test/test_rack_konami.rb