cosme 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51875f3ea020ecbc27f978b01a612059c1e80f09
4
- data.tar.gz: f66b21d7e52740da386ced272fcaf0f3bfd33dfc
3
+ metadata.gz: 1ea7bf8200b00c604ef7593e5cad55d5a4df6e7b
4
+ data.tar.gz: 7aae69b53444354337a985cd20d906b277a757ac
5
5
  SHA512:
6
- metadata.gz: 7f622aa7472068f6dff8f28e08b1020b7800ddc6223dd16c56d86bb6b60a094b46254be269a4501026bd2c089ced9aa59aefdc788c6ebb0395a498305686748d
7
- data.tar.gz: ebb6ced1c50d55ebf5668431a009345651271833837f7f7237d7458ebd0d8a290499daf8618ac62f20ba86623a813fd1f3519699446c220d4d1aa18dc6f4d293
6
+ metadata.gz: 021bbed18041bc6c1dd527aa7bec020fb1ca9659db1e19fd508d36078fd011e82341c9221beb0b4df90e2bbcd7368b6922a8efe602d672db28e8f6f4a82fe859
7
+ data.tar.gz: 2e79d61a94af04efd840f05b119a16846053866a41601025e588d3e2e882a8997e07b0a3b89372c0680024604667c538084e44e90e2d14cfb43b66def553600c
data/.gitignore CHANGED
@@ -4,6 +4,10 @@
4
4
  /_yardoc/
5
5
  /coverage/
6
6
  /doc/
7
+ /gemfiles/.bundle/
8
+ /gemfiles/*.gemfile.lock
7
9
  /pkg/
8
10
  /spec/reports/
11
+ /test/dummy/log/
9
12
  /tmp/
13
+ /vendor/
data/.travis.yml CHANGED
@@ -1,4 +1,17 @@
1
- language: ruby
1
+ language:
2
+ - ruby
2
3
  rvm:
4
+ - 2.1.5
3
5
  - 2.2.0
4
- before_install: gem install bundler -v 1.10.6
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. Use the helper method in your views.
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 'actionview', '>= 4.0.0', '< 5'
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 'minitest'
27
+ spec.add_development_dependency 'capybara', '~> 2.5'
28
28
  end
@@ -0,0 +1,3 @@
1
+ eval File.read(File.expand_path('../common.gemfile', __FILE__))
2
+
3
+ gem 'actionpack', '~> 4.0.0'
@@ -0,0 +1,3 @@
1
+ eval File.read(File.expand_path('../common.gemfile', __FILE__))
2
+
3
+ gem 'actionpack', '~> 4.0.0'
@@ -0,0 +1,3 @@
1
+ eval File.read(File.expand_path('../common.gemfile', __FILE__))
2
+
3
+ gem 'actionpack', '~> 4.0.0'
@@ -0,0 +1,5 @@
1
+ eval File.read(File.expand_path('../common.gemfile', __FILE__))
2
+
3
+ git 'git://github.com/rails/rails.git' do
4
+ gem 'actionpack'
5
+ end
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec path: '..'
data/lib/cosme/engine.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  module Cosme
2
2
  class Engine < ::Rails::Engine
3
+ initializer 'cosme.initialize' do |app|
4
+ app.middleware.use Cosme::Middleware
5
+ end
6
+
3
7
  config.to_prepare do
4
8
  Dir.glob(Rails.root.join('app/cosmetics/**/*.rb')).each do |c|
5
9
  require_dependency(c)
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Cosme
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
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.1.1
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-29 00:00:00.000000000 Z
11
+ date: 2015-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: actionview
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: minitest
82
+ name: capybara
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - ">="
85
+ - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: '0'
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: '0'
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: