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