rack_konami 0.9.1 → 1.0.0

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