cosme 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.travis.yml +15 -2
- data/README.md +9 -9
- data/cosme.gemspec +2 -2
- data/gemfiles/action_pack_40.gemfile +3 -0
- data/gemfiles/action_pack_41.gemfile +3 -0
- data/gemfiles/action_pack_42.gemfile +3 -0
- data/gemfiles/action_pack_edge.gemfile +5 -0
- data/gemfiles/common.gemfile +2 -0
- data/lib/cosme/engine.rb +4 -0
- data/lib/cosme/middleware.rb +63 -0
- data/lib/cosme/version.rb +1 -1
- data/lib/cosme.rb +9 -0
- metadata +14 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ea7bf8200b00c604ef7593e5cad55d5a4df6e7b
|
4
|
+
data.tar.gz: 7aae69b53444354337a985cd20d906b277a757ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 021bbed18041bc6c1dd527aa7bec020fb1ca9659db1e19fd508d36078fd011e82341c9221beb0b4df90e2bbcd7368b6922a8efe602d672db28e8f6f4a82fe859
|
7
|
+
data.tar.gz: 2e79d61a94af04efd840f05b119a16846053866a41601025e588d3e2e882a8997e07b0a3b89372c0680024604667c538084e44e90e2d14cfb43b66def553600c
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
-
language:
|
1
|
+
language:
|
2
|
+
- ruby
|
2
3
|
rvm:
|
4
|
+
- 2.1.5
|
3
5
|
- 2.2.0
|
4
|
-
|
6
|
+
- ruby-head
|
7
|
+
gemfile:
|
8
|
+
- gemfiles/action_pack_40.gemfile
|
9
|
+
- gemfiles/action_pack_41.gemfile
|
10
|
+
- gemfiles/action_pack_42.gemfile
|
11
|
+
- gemfiles/action_pack_edge.gemfile
|
12
|
+
before_install:
|
13
|
+
- gem install bundler -v 1.10.6
|
14
|
+
matrix:
|
15
|
+
allow_failures:
|
16
|
+
- rvm: ruby-head
|
17
|
+
- gemfile: gemfiles/action_pack_edge.gemfile
|
data/README.md
CHANGED
@@ -31,14 +31,7 @@ Or install it yourself as:
|
|
31
31
|
#= require cosme
|
32
32
|
```
|
33
33
|
|
34
|
-
2.
|
35
|
-
|
36
|
-
```erb
|
37
|
-
<%= cosmeticize %>
|
38
|
-
```
|
39
|
-
|
40
|
-
3. Create a cosmetic file into `app/cosmetics`.
|
41
|
-
|
34
|
+
2. Create a cosmetic file into `app/cosmetics`.
|
42
35
|
|
43
36
|
## Example
|
44
37
|
|
@@ -66,7 +59,6 @@ Cosme.define(
|
|
66
59
|
<%= javascript_include_tag 'application'%>
|
67
60
|
</head>
|
68
61
|
<body>
|
69
|
-
<%= cosmeticize %>
|
70
62
|
<div class="example">
|
71
63
|
<h1>Example</h1>
|
72
64
|
</div>
|
@@ -83,6 +75,14 @@ The result of the above:
|
|
83
75
|
<h2>After Example</h2>
|
84
76
|
```
|
85
77
|
|
78
|
+
## Troubleshooting
|
79
|
+
|
80
|
+
If the cosmetic does not work, please call `Cosme.disable_auto_cosmeticize!` and the folloing helper method in your view file.
|
81
|
+
|
82
|
+
```erb
|
83
|
+
<%= cosmeticize %>
|
84
|
+
```
|
85
|
+
|
86
86
|
## Development
|
87
87
|
|
88
88
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/cosme.gemspec
CHANGED
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_dependency '
|
22
|
+
spec.add_dependency 'actionpack', '>= 4.0.0', '< 5'
|
23
23
|
spec.add_dependency 'coffee-rails', '>= 3.2.2', '< 4.2'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
26
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
27
|
-
spec.add_development_dependency '
|
27
|
+
spec.add_development_dependency 'capybara', '~> 2.5'
|
28
28
|
end
|
data/lib/cosme/engine.rb
CHANGED
@@ -0,0 +1,63 @@
|
|
1
|
+
module Cosme
|
2
|
+
class Middleware
|
3
|
+
include ActionView::Helpers::TagHelper
|
4
|
+
include Cosme::Helpers
|
5
|
+
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
response = @app.call(env)
|
12
|
+
return response unless Cosme.auto_cosmeticize?
|
13
|
+
|
14
|
+
html = response_to_html(response)
|
15
|
+
return response unless html
|
16
|
+
|
17
|
+
new_html = insert_cosmeticize_tag(html)
|
18
|
+
new_response(response, new_html)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def response_to_html(response)
|
24
|
+
status, headers, body = response
|
25
|
+
return if status != 200
|
26
|
+
return unless html_headers? headers
|
27
|
+
take_html(body)
|
28
|
+
end
|
29
|
+
|
30
|
+
def insert_cosmeticize_tag(html)
|
31
|
+
html.sub(/<body[^>]*>/) { [$~, cosmeticize].join }
|
32
|
+
end
|
33
|
+
|
34
|
+
def new_response(response, new_html)
|
35
|
+
status, headers, _ = response
|
36
|
+
headers['Content-Length'] = new_html.bytesize.to_s
|
37
|
+
[status, headers, [new_html]]
|
38
|
+
end
|
39
|
+
|
40
|
+
def html_headers?(headers)
|
41
|
+
return false unless headers['Content-Type']
|
42
|
+
return false unless headers['Content-Type'].include? 'text/html'
|
43
|
+
return false if headers['Content-Transfer-Encoding'] == 'binary'
|
44
|
+
true
|
45
|
+
end
|
46
|
+
|
47
|
+
# body is one of the following:
|
48
|
+
# - Array
|
49
|
+
# - ActionDispatch::Response
|
50
|
+
# - ActionDispatch::Response::RackBody
|
51
|
+
def take_html(body)
|
52
|
+
strings = []
|
53
|
+
body.each { |buf| strings << buf }
|
54
|
+
strings.join
|
55
|
+
end
|
56
|
+
|
57
|
+
# Use in Cosme::Helpers#cosmeticize
|
58
|
+
def render(options = {})
|
59
|
+
renderer = ActionView::Base.new(ActionController::Base.view_paths)
|
60
|
+
renderer.render options
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/cosme/version.rb
CHANGED
data/lib/cosme.rb
CHANGED
@@ -3,6 +3,7 @@ require 'coffee-rails'
|
|
3
3
|
|
4
4
|
require 'cosme/version'
|
5
5
|
require 'cosme/helpers'
|
6
|
+
require 'cosme/middleware'
|
6
7
|
require 'cosme/engine'
|
7
8
|
|
8
9
|
module Cosme
|
@@ -24,5 +25,13 @@ module Cosme
|
|
24
25
|
return [] unless @cosmetics
|
25
26
|
@cosmetics.values
|
26
27
|
end
|
28
|
+
|
29
|
+
def disable_auto_cosmeticize!
|
30
|
+
@disable_auto_cosmeticize = true
|
31
|
+
end
|
32
|
+
|
33
|
+
def auto_cosmeticize?
|
34
|
+
@disable_auto_cosmeticize ? false : true
|
35
|
+
end
|
27
36
|
end
|
28
37
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cosme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YOSHIDA Hiroki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09
|
11
|
+
date: 2015-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: actionpack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -79,19 +79,19 @@ dependencies:
|
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '10.0'
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
82
|
+
name: capybara
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
-
- - "
|
85
|
+
- - "~>"
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: '
|
87
|
+
version: '2.5'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
|
-
- - "
|
92
|
+
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '
|
94
|
+
version: '2.5'
|
95
95
|
description: Cosme is a simple solution to customize views of any template engine
|
96
96
|
in your Ruby on Rails application.
|
97
97
|
email:
|
@@ -110,9 +110,15 @@ files:
|
|
110
110
|
- bin/console
|
111
111
|
- bin/setup
|
112
112
|
- cosme.gemspec
|
113
|
+
- gemfiles/action_pack_40.gemfile
|
114
|
+
- gemfiles/action_pack_41.gemfile
|
115
|
+
- gemfiles/action_pack_42.gemfile
|
116
|
+
- gemfiles/action_pack_edge.gemfile
|
117
|
+
- gemfiles/common.gemfile
|
113
118
|
- lib/cosme.rb
|
114
119
|
- lib/cosme/engine.rb
|
115
120
|
- lib/cosme/helpers.rb
|
121
|
+
- lib/cosme/middleware.rb
|
116
122
|
- lib/cosme/version.rb
|
117
123
|
homepage: https://github.com/appirits/cosme#cosme
|
118
124
|
licenses:
|