acts_as_crafter 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.
@@ -0,0 +1,11 @@
1
+ h1. Mate, ActsAsCrafter, mate.
2
+
3
+ Mate, bring a little bit of "Marcus Crafter":http://github.com/crafterm awesomeness into your HTML responses with this Rack Middleware, mate.
4
+
5
+ h2. Mate, installation, mate.
6
+
7
+ Mate, Bundle it in to your app now, mate.
8
+
9
+ h2. Mate, features, mate.
10
+
11
+ Mate, just one feature. It fiddles with headings, list items and paragraphs in your HTML response to make sure you have the full Marcus Crafter experience anywhere, any time, mate.
@@ -0,0 +1,29 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{acts_as_crafter}
3
+ s.version = "1.0.0"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Justin French", "Vodka", "RailsCamp"]
7
+ s.date = %q{2010-11-14}
8
+ s.description = %q{Bring a little bit of Marcus Crafter awesomeness into your responses with this Rack Middleware}
9
+ s.summary = %q{Bring a little bit of Marcus Crafter awesomeness into your responses with this Rack Middleware}
10
+ s.email = %q{justin@indent.com.au}
11
+ s.homepage = %q{http://github.com/justinfrench/acts_as_crafter}
12
+ s.extra_rdoc_files = [
13
+ "README.textile"
14
+ ]
15
+ s.files = Dir["**/*"]
16
+ s.rdoc_options = ["--charset=UTF-8"]
17
+ s.require_paths = ["lib"]
18
+ s.rubygems_version = %q{1.3.5}
19
+
20
+ if s.respond_to? :specification_version then
21
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
22
+ s.specification_version = 3
23
+
24
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
25
+ else
26
+ end
27
+ else
28
+ end
29
+ end
@@ -0,0 +1,47 @@
1
+ require 'rack/utils'
2
+
3
+ if defined?(Rails)
4
+ require 'acts_as_crafter/railtie'
5
+ end
6
+
7
+ module Rack
8
+ class ActsAsCrafter
9
+ include Rack::Utils
10
+
11
+ def initialize(app, opts={})
12
+ @app = app
13
+ end
14
+
15
+ def call(env)
16
+ status, headers, response = @app.call(env)
17
+ headers = HeaderHash.new(headers)
18
+ if !STATUS_WITH_NO_ENTITY_BODY.include?(status) &&
19
+ !headers['transfer-encoding'] &&
20
+ headers['content-type'] &&
21
+ headers['content-type'].include?("text/html")
22
+ puts "text/html!"
23
+ response.body = transform(response.body)
24
+ end
25
+
26
+ [status, headers, response]
27
+ end
28
+
29
+ protected
30
+
31
+ # Yup, this is ugly as hell, but I'm drinking Cîroc vodka out of a plastic cup at Rails Camp 8 in Perth.
32
+ def transform(body)
33
+ body.gsub(/<p(.*?)>(.*?)<\/p>/) { |s|
34
+ "<p#{$1}>Mate, #{($2[0..0] == "I" ? "I" : $2[0..0].downcase) + $2[1..-1].gsub(/\.$/, '')}, mate.</p>"
35
+ }.gsub(/<li>(.*?)<\/li>/) { |s|
36
+ "<li>Mate, #{($1[0..0] == "I" ? "I" : $1[0..0].downcase) + $1[1..-1].gsub(/\.$/, '')}, mate.</li>"
37
+ }.gsub(/<h1>(.*?)<\/h1>/) { |s|
38
+ "<h1>#{$1[0..-1].gsub(/\.$/, '')}, Mate!</h1>"
39
+ }.gsub(/<h2>(.*?)<\/h2>/) { |s|
40
+ "<h2>#{$1[0..-1].gsub(/\.$/, '')}, Mate!</h2>"
41
+ }.gsub(/<h3>(.*?)<\/h3>/) { |s|
42
+ "<h3>#{$1[0..-1].gsub(/\.$/, '')}, Mate!</h3>"
43
+ }.gsub(/\bwater\b/, "Cîroc")
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ module ActsAsCrafter
4
+ class Railtie < Rails::Railtie
5
+ initializer 'acts_as_crafter.configure_middleware' do |app|
6
+ app.middleware.use(Rack::ActsAsCrafter)
7
+ end
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_crafter
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Justin French
14
+ - Vodka
15
+ - RailsCamp
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2010-11-14 00:00:00 +11:00
21
+ default_executable:
22
+ dependencies: []
23
+
24
+ description: Bring a little bit of Marcus Crafter awesomeness into your responses with this Rack Middleware
25
+ email: justin@indent.com.au
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - README.textile
32
+ files:
33
+ - acts_as_crafter.gemspec
34
+ - lib/acts_as_crafter/railtie.rb
35
+ - lib/acts_as_crafter.rb
36
+ - README.textile
37
+ has_rdoc: true
38
+ homepage: http://github.com/justinfrench/acts_as_crafter
39
+ licenses: []
40
+
41
+ post_install_message:
42
+ rdoc_options:
43
+ - --charset=UTF-8
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ hash: 3
52
+ segments:
53
+ - 0
54
+ version: "0"
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.7
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: Bring a little bit of Marcus Crafter awesomeness into your responses with this Rack Middleware
71
+ test_files: []
72
+