cosme 0.3.0 → 0.4.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/README.md +51 -9
- data/lib/cosme/cosmetic.rb +14 -0
- data/lib/cosme/engine.rb +2 -0
- data/lib/cosme/middleware.rb +8 -0
- data/lib/cosme/version.rb +1 -1
- data/lib/cosme.rb +3 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 922d8a8f714d52f5d8c888a06311b626cfb5e6ba
|
|
4
|
+
data.tar.gz: 1290c06f5169a29d3d2a4b32b64c1cad65c00ef0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2c044f43cc7ed402aa7f55f797d8e919a733bf86d331d8d076737fb8180fe87938441775487cd86e658f696e30c6d536b4f5a229cc18fd199df5c5d75bc37eeb
|
|
7
|
+
data.tar.gz: 2a1c613511d5ef325e0281cd6de1c0a190ab3704295fe2e9ced8014b6a7f6cd282f893bc66cf1fcc615f0099e6f2f1bf50aa1bc0e87cbbac36b239018f2d6f4d
|
data/README.md
CHANGED
|
@@ -25,21 +25,15 @@ Or install it yourself as:
|
|
|
25
25
|
|
|
26
26
|
## Usage
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
Create a cosmetic file into `app/cosmetics`, and call `Cosme#define` method in the cosmetic file.
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
#= require cosme
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
2. Create a cosmetic file into `app/cosmetics`.
|
|
35
|
-
|
|
36
|
-
## Using Cosme#define
|
|
30
|
+
### Cosme#define
|
|
37
31
|
|
|
38
32
|
* `:routes` - The option to apply a cosmetic only on a specific route.
|
|
39
33
|
|
|
40
34
|
* `:controller` - Controller path. eg: 'admin/users' when called in Admin::UsersController. if you not set this option, apply a cosmetic in all controllers.
|
|
41
35
|
|
|
42
|
-
* `:
|
|
36
|
+
* `:action` - Action name. eg: 'index' when called in Admin::UsersController#index. if you not set this option, apply a cosmetic in all actions.
|
|
43
37
|
|
|
44
38
|
* `:target` - String of [jQuery Selectors](https://api.jquery.com/category/selectors/).
|
|
45
39
|
|
|
@@ -55,6 +49,8 @@ Or install it yourself as:
|
|
|
55
49
|
|
|
56
50
|
## Example
|
|
57
51
|
|
|
52
|
+
### Cosmetic + View (2 files)
|
|
53
|
+
|
|
58
54
|
Inserts html to all elements of .example:
|
|
59
55
|
|
|
60
56
|
```ruby
|
|
@@ -95,6 +91,46 @@ The result of the above:
|
|
|
95
91
|
<h2>After Example</h2>
|
|
96
92
|
```
|
|
97
93
|
|
|
94
|
+
### Cosmetic (1 file)
|
|
95
|
+
|
|
96
|
+
Replaces all elements of .example:
|
|
97
|
+
|
|
98
|
+
```ruby
|
|
99
|
+
# app/cosmetics/replace_example.rb
|
|
100
|
+
Cosme.define(
|
|
101
|
+
target: '.example',
|
|
102
|
+
action: :replace
|
|
103
|
+
).render(inline: <<-'SLIM', type: :slim)
|
|
104
|
+
.example
|
|
105
|
+
h1
|
|
106
|
+
| Replace Example
|
|
107
|
+
SLIM
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
```erb
|
|
111
|
+
<%# app/views/layouts/application.html.erb %>
|
|
112
|
+
<html>
|
|
113
|
+
<head>
|
|
114
|
+
<title>Example</title>
|
|
115
|
+
<%= stylesheet_link_tag 'application', media: 'all' %>
|
|
116
|
+
<%= javascript_include_tag 'application'%>
|
|
117
|
+
</head>
|
|
118
|
+
<body>
|
|
119
|
+
<div class="example">
|
|
120
|
+
<h1>Example</h1>
|
|
121
|
+
</div>
|
|
122
|
+
</body>
|
|
123
|
+
</html>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The result of the above:
|
|
127
|
+
|
|
128
|
+
```html
|
|
129
|
+
<div class="example">
|
|
130
|
+
<h1>Replace Example</h1>
|
|
131
|
+
</div>
|
|
132
|
+
```
|
|
133
|
+
|
|
98
134
|
## Troubleshooting
|
|
99
135
|
|
|
100
136
|
If the cosmetic does not work, please call `Cosme.disable_auto_cosmeticize!` and the folloing helper method in your view file.
|
|
@@ -103,6 +139,12 @@ If the cosmetic does not work, please call `Cosme.disable_auto_cosmeticize!` and
|
|
|
103
139
|
<%= cosmeticize %>
|
|
104
140
|
```
|
|
105
141
|
|
|
142
|
+
And require a script in your `app/assets/javascripts/application.coffee`:
|
|
143
|
+
|
|
144
|
+
```coffee
|
|
145
|
+
#= require cosme
|
|
146
|
+
```
|
|
147
|
+
|
|
106
148
|
## Development
|
|
107
149
|
|
|
108
150
|
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.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Cosme
|
|
2
|
+
class CosmeticNotFound < StandardError; end
|
|
3
|
+
|
|
4
|
+
class Cosmetic
|
|
5
|
+
def initialize(cosmetic)
|
|
6
|
+
@cosmetic = cosmetic
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def render(options)
|
|
10
|
+
raise Cosme::CosmeticNotFound, 'Cosmetic is not found. Please call `Cosme#define` method first.' unless @cosmetic
|
|
11
|
+
@cosmetic[:render] = options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
data/lib/cosme/engine.rb
CHANGED
data/lib/cosme/middleware.rb
CHANGED
|
@@ -17,6 +17,7 @@ module Cosme
|
|
|
17
17
|
return response unless html
|
|
18
18
|
|
|
19
19
|
new_html = insert_cosmeticize_tag(html)
|
|
20
|
+
new_html = insert_cosme_js(new_html)
|
|
20
21
|
new_response(response, new_html)
|
|
21
22
|
end
|
|
22
23
|
|
|
@@ -34,6 +35,13 @@ module Cosme
|
|
|
34
35
|
html.sub(/<body[^>]*>/) { [$~, cosmeticizer].join }
|
|
35
36
|
end
|
|
36
37
|
|
|
38
|
+
def insert_cosme_js(html)
|
|
39
|
+
view_context = controller.try(:view_context)
|
|
40
|
+
return html unless view_context
|
|
41
|
+
script = view_context.javascript_include_tag('cosme', 'data-turbolinks-track' => true)
|
|
42
|
+
html.sub(/<\/head>/) { [script, $~].join }
|
|
43
|
+
end
|
|
44
|
+
|
|
37
45
|
def new_response(response, new_html)
|
|
38
46
|
status, headers, _ = response
|
|
39
47
|
headers['Content-Length'] = new_html.bytesize.to_s
|
data/lib/cosme/version.rb
CHANGED
data/lib/cosme.rb
CHANGED
|
@@ -5,6 +5,7 @@ require 'cosme/version'
|
|
|
5
5
|
require 'cosme/helpers'
|
|
6
6
|
require 'cosme/middleware'
|
|
7
7
|
require 'cosme/engine'
|
|
8
|
+
require 'cosme/cosmetic'
|
|
8
9
|
|
|
9
10
|
module Cosme
|
|
10
11
|
class << self
|
|
@@ -15,6 +16,8 @@ module Cosme
|
|
|
15
16
|
|
|
16
17
|
@cosmetics ||= {}
|
|
17
18
|
@cosmetics[caller_path] = cosmetic
|
|
19
|
+
|
|
20
|
+
Cosme::Cosmetic.new(cosmetic)
|
|
18
21
|
end
|
|
19
22
|
|
|
20
23
|
def default_file_path_for(caller_path)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cosme
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.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-10-
|
|
11
|
+
date: 2015-10-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: actionpack
|
|
@@ -116,6 +116,7 @@ files:
|
|
|
116
116
|
- gemfiles/action_pack_edge.gemfile
|
|
117
117
|
- gemfiles/common.gemfile
|
|
118
118
|
- lib/cosme.rb
|
|
119
|
+
- lib/cosme/cosmetic.rb
|
|
119
120
|
- lib/cosme/engine.rb
|
|
120
121
|
- lib/cosme/helpers.rb
|
|
121
122
|
- lib/cosme/middleware.rb
|