deface 1.8.1 → 1.8.2

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
  SHA256:
3
- metadata.gz: 13f8d0d00b60a47809b55b1c260da178bf2ab6c4087a73b154b1d4e2abe4e51a
4
- data.tar.gz: 44b725c4108968143fb985c15ce297666076b7093b29c97d0cf4f546ac5a9f23
3
+ metadata.gz: f95e0d9ff0d9928f8791253e4ce8a96e8c3dfda75505f1f6f9d96d5b50ee20cc
4
+ data.tar.gz: 5db5672c1fc4c8e43a591674a6d60950a6b70e48f54adbcb9d3f0a380ad2e039
5
5
  SHA512:
6
- metadata.gz: 24e344680c4d7a72b1e1e10c8dc1c1e60bf2fb8234037ca95f361b67827307f6e3f4fd932168aa0c559d2015387b442cc0eee349cc792eeaa4f4970907cc7037
7
- data.tar.gz: ae4600922bdd43fbfc3db5fec9f75bfa33bef4bca005130f6f13824deec82e1bfb1a9152c53eaf2893e36406e430c27c0487e79618d37719db1dcc3d9dc07f07
6
+ metadata.gz: 5b36c2c608cc51a7975a97da0931e351be90dc4a19d4c51bc37d3f5fe6a0023ed31a6b67ed01d6b17105ded32edf6b1d6cfd1a1bd538471a52790fbb526f1cf6
7
+ data.tar.gz: 8cf7a37e8af2c13cfcbdeaf039434fd8736e777ec7fb2a2ceeb7186b0a49e4d931c14459e882d71d5d10b527ab523f9f1d6500f452c6acb2b5746b6c015aa99b
@@ -0,0 +1,7 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
@@ -0,0 +1,45 @@
1
+ on:
2
+ - push
3
+ - pull_request
4
+
5
+ jobs:
6
+ build:
7
+ name: "ruby ${{ matrix.combo.ruby }} / ${{ matrix.combo.gemfile }}"
8
+ strategy:
9
+ matrix:
10
+ combo:
11
+ # TODO: re-enable commented combos and expand the matrix to Ruby 3.1 and Rails 7+
12
+
13
+ # - ruby: "3.0"
14
+ # gemfile: "rails_6_1"
15
+ # - ruby: "2.7"
16
+ # gemfile: "rails_6_1"
17
+ - ruby: "2.6"
18
+ gemfile: "rails_6_1"
19
+ - ruby: "2.5"
20
+ gemfile: "rails_6_1"
21
+
22
+ # - ruby: "2.7"
23
+ # gemfile: "rails_6_0"
24
+ - ruby: "2.6"
25
+ gemfile: "rails_6_0"
26
+ - ruby: "2.5"
27
+ gemfile: "rails_6_0"
28
+
29
+ - ruby: "2.5"
30
+ gemfile: "rails_5_2"
31
+
32
+ runs-on: ubuntu-latest
33
+
34
+ env:
35
+ GEMFILE_PATH: gemfiles/${{ matrix.combo.gemfile }}.gemfile
36
+
37
+ steps:
38
+ - uses: actions/checkout@v2
39
+ - uses: ruby/setup-ruby@v1
40
+ with:
41
+ ruby-version: ${{ matrix.combo.ruby }}
42
+ - name: Setup project
43
+ run: bin/setup
44
+ - name: Run test
45
+ run: "bundle exec rake"
data/Appraisals CHANGED
@@ -1,11 +1,26 @@
1
1
  appraise 'rails-5.2' do
2
- gem 'rails', '~> 5.2.0'
2
+ %w[
3
+ actionview
4
+ railties
5
+ ].each do |rails_gem|
6
+ gem rails_gem, '~> 5.2.0'
7
+ end
3
8
  end
4
9
 
5
10
  appraise 'rails-6.0' do
6
- gem 'rails', '~> 6.0.0'
11
+ %w[
12
+ actionview
13
+ railties
14
+ ].each do |rails_gem|
15
+ gem rails_gem, '~> 6.0.0'
16
+ end
7
17
  end
8
18
 
9
19
  appraise 'rails-6.1' do
10
- gem 'rails', '~> 6.1.0'
20
+ %w[
21
+ actionview
22
+ railties
23
+ ].each do |rails_gem|
24
+ gem rails_gem, '~> 6.1.0'
25
+ end
11
26
  end
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,12 @@
1
+ # Contributing
2
+
3
+ ## Setup you development environment
4
+
5
+ 1. Clone the repo
6
+ 2. Run `bin/setup` to install dependencies
7
+ 3. Run `bin/sandbox` to (re)generate the sandbox application for local experiments
8
+
9
+ ## To run specs locally on the matrix of supported versions
10
+
11
+ 1. Run `bundle exec appraisal install`
12
+ 2. Run `bundle exec appraisal rake`
data/README.markdown CHANGED
@@ -1,41 +1,13 @@
1
- <p style="float:right;">
2
- <a href="http://secure.travis-ci.org/spree/deface">
3
- <img src="https://secure.travis-ci.org/spree/deface.svg?branch=master">
4
- </a>
5
- </p>
1
+ # Deface
6
2
 
7
- Deface
8
- ======
3
+ [![Travis build](https://secure.travis-ci.org/spree/deface.svg?branch=master)](https://travis-ci.com/github/spree/deface)
9
4
 
10
5
  Deface is a library that allows you to customize HTML (ERB, Haml and Slim) views in a Rails application without editing the underlying view.
11
6
 
12
7
  It allows you to easily target html & erb elements as the hooks for customization using CSS selectors as supported by Nokogiri.
13
8
 
14
9
 
15
- Upgrading from 0.9 to 1.0
16
- -------------------------
17
-
18
- If you are updating from 0.9.x to 1.0.0 or higher, there's a major internal change you should be aware of.
19
-
20
- Previously, erb blocks (i.e. <%= some_method %>) were converted as:
21
-
22
- ```html
23
- <code erb-loud> some_method </code>
24
- ```
25
- They are now converted to:
26
-
27
- ```html
28
- <erb loud> some_method </erb>
29
- ```
30
-
31
- This change will affect any Override that uses a selector that matches on `code` or `code[erb-loud]` or `code[erb-silent]` etc, they should be updated to `erb`, `erb[loud]` or `erb[silent]`, etc.
32
-
33
- Note: HAML & SLIM are preconverted to ERB before Deface parsers them, so the same conversions are happening there.
34
-
35
- See the [Implementation](#implementation) section below for more details.
36
-
37
- Usage
38
- -----
10
+ ## Usage
39
11
 
40
12
  There are two ways of using Deface:
41
13
 
@@ -46,10 +18,9 @@ Both methods are interoperable, so you can use a mix, and redefine overrides def
46
18
 
47
19
 
48
20
 
49
- Using Deface::Override
50
- ----------------------
21
+ ## Using Deface::Override
51
22
 
52
- A new instance of the Deface::Override class is initialized for each customization you wish to define. When initializing a new override you must supply only one Target, Action & Source parameter and any number of Optional parameters.
23
+ A new instance of the Deface::Override class is initialized for each customization you wish to define. When initializing a new override you must supply only one Target, Action & Source parameter and any number of Optional parameters.
53
24
 
54
25
  **Note:** the source parameter is not required when the ````:remove, :set_attributes, :add_to_attributes, :remove_from_attributes```` actions are specified.
55
26
 
@@ -59,77 +30,77 @@ You should save your overrides in the ````app/overrides````, normally one overri
59
30
 
60
31
  ### Target
61
32
 
62
- * <tt>:virtual_path</tt> - The template / partial / layout where the override should take effect eg: *"shared/_person"*, *"admin/posts/new"* this will apply to all controller actions that use the specified template.
33
+ * `:virtual_path` - The template / partial / layout where the override should take effect eg: *"shared/_person"*, *"admin/posts/new"* this will apply to all controller actions that use the specified template.
63
34
 
64
35
  ### Action
65
36
 
66
- * <tt>:remove</tt> - Removes all elements that match the supplied selector
37
+ * `:remove` - Removes all elements that match the supplied selector
67
38
 
68
- * <tt>:replace</tt> - Replaces all elements that match the supplied selector
39
+ * `:replace` - Replaces all elements that match the supplied selector
69
40
 
70
- * <tt>:replace_contents</tt> - Replaces the contents of all elements that match the supplied selector
41
+ * `:replace_contents` - Replaces the contents of all elements that match the supplied selector
71
42
 
72
- * <tt>:surround</tt> - Surrounds all elements that match the supplied selector, expects replacement markup to contain <%= render_original %> placeholder
43
+ * `:surround` - Surrounds all elements that match the supplied selector, expects replacement markup to contain <%= render_original %> placeholder
73
44
 
74
- * <tt>:surround_contents</tt> - Surrounds the contents of all elements that match the supplied selector, expects replacement markup to contain <%= render_original %> placeholder
45
+ * `:surround_contents` - Surrounds the contents of all elements that match the supplied selector, expects replacement markup to contain <%= render_original %> placeholder
75
46
 
76
- * <tt>:insert_after</tt> - Inserts after all elements that match the supplied selector
47
+ * `:insert_after` - Inserts after all elements that match the supplied selector
77
48
 
78
- * <tt>:insert_before</tt> - Inserts before all elements that match the supplied selector
49
+ * `:insert_before` - Inserts before all elements that match the supplied selector
79
50
 
80
- * <tt>:insert_top</tt> - Inserts inside all elements that match the supplied selector, as the first child.
51
+ * `:insert_top` - Inserts inside all elements that match the supplied selector, as the first child.
81
52
 
82
- * <tt>:insert_bottom</tt> - Inserts inside all elements that match the supplied selector, as the last child.
53
+ * `:insert_bottom` - Inserts inside all elements that match the supplied selector, as the last child.
83
54
 
84
- * <tt>:set_attributes</tt> - Sets attributes on all elements that match the supplied selector, replacing existing attribute value if present or adding if not. Expects :attributes option to be passed.
55
+ * `:set_attributes` - Sets attributes on all elements that match the supplied selector, replacing existing attribute value if present or adding if not. Expects :attributes option to be passed.
85
56
 
86
- * <tt>:add_to_attributes</tt> - Appends value to attributes on all elements that match the supplied selector, adds attribute if not present. Expects :attributes option to be passed.
57
+ * `:add_to_attributes` - Appends value to attributes on all elements that match the supplied selector, adds attribute if not present. Expects :attributes option to be passed.
87
58
 
88
- * <tt>:remove_from_attributes</tt> - Removes value from attributes on all elements that match the supplied selector. Expects :attributes option to be passed.
59
+ * `:remove_from_attributes` - Removes value from attributes on all elements that match the supplied selector. Expects :attributes option to be passed.
89
60
 
90
61
  ### Source
91
62
 
92
- * <tt>:text</tt> - String containing markup
63
+ * `:text` - String containing markup
93
64
 
94
- * <tt>:partial</tt> - Relative path to a partial
65
+ * `:partial` - Relative path to a partial
95
66
 
96
- * <tt>:template</tt> - Relative path to a template
67
+ * `:template` - Relative path to a template
97
68
 
98
- * <tt>:cut</tt> - Cuts (i.e. copies and removes) an element or a range of elements from the current template as the source, using css selector(s). Supports two versions:
99
- * <tt>selector</tt> - A single string css selector (first match is used).
100
- * <tt>{:start => 'selector_a', :end => 'selector_b'}</tt> - select a range of elements using :start and :end css selectors. The end element must be a sibling of the first/starting element.
69
+ * `:cut` - Cuts (i.e. copies and removes) an element or a range of elements from the current template as the source, using css selector(s). Supports two versions:
70
+ * `selector` - A single string css selector (first match is used).
71
+ * `{:start => 'selector_a', :end => 'selector_b'}` - select a range of elements using :start and :end css selectors. The end element must be a sibling of the first/starting element.
101
72
 
102
- * <tt>:copy</tt> - Copies an element or a range of elements from the current template as the source, using css selector(s). Supports two versions:
103
- * <tt>selector</tt> - A single string css selector (first match is used).
104
- * <tt>{:start => 'selector_a', :end => 'selector_b'}</tt> - select a range of elements using :start and :end css selectors. The end element must be a sibling of the first/starting element.
73
+ * `:copy` - Copies an element or a range of elements from the current template as the source, using css selector(s). Supports two versions:
74
+ * `selector` - A single string css selector (first match is used).
75
+ * `{:start => 'selector_a', :end => 'selector_b'}` - select a range of elements using :start and :end css selectors. The end element must be a sibling of the first/starting element.
105
76
 
106
77
  ### Optional
107
78
 
108
- * <tt>:name</tt> - Unique name for override so it can be identified and modified later. This needs to be unique within the same `:virtual_path`
79
+ * `:name` - Unique name for override so it can be identified and modified later. This needs to be unique within the same `:virtual_path`
109
80
 
110
- * <tt>:disabled</tt> - When set to true the override will not be applied.
81
+ * `:disabled` - When set to true the override will not be applied.
111
82
 
112
- * <tt>:original</tt> - Either a string containing the original markup that is being overridden, or a string that is the SHA1 digest of the original markup. If supplied Deface will log when the original markup changes, which helps highlight overrides that need attention when upgrading versions of the source application. Only really warranted for :replace overrides. NB: All whitespace is stripped before comparison. To generate the SHA1 digest do: `Digest::SHA1.hexdigest(original_markup_string.gsub(/\s/, ''))`
83
+ * `:original` - Either a string containing the original markup that is being overridden, or a string that is the SHA1 digest of the original markup. If supplied Deface will log when the original markup changes, which helps highlight overrides that need attention when upgrading versions of the source application. Only really warranted for :replace overrides. NB: All whitespace is stripped before comparison. To generate the SHA1 digest do: `Digest::SHA1.hexdigest(original_markup_string.gsub(/\s/, ''))`
113
84
 
114
- * <tt>:closing_selector</tt> - A second css selector targeting an end element, allowing you to select a range of elements to apply an action against. The :closing_selector only supports the :replace, :remove and :replace_contents actions, and the end element must be a sibling of the first/starting element. Note the CSS general sibling selector (~) is used to match the first element after the opening selector (see below for an example).
85
+ * `:closing_selector` - A second css selector targeting an end element, allowing you to select a range of elements to apply an action against. The :closing_selector only supports the :replace, :remove and :replace_contents actions, and the end element must be a sibling of the first/starting element. Note the CSS general sibling selector (~) is used to match the first element after the opening selector (see below for an example).
115
86
 
116
- * <tt>:sequence</tt> - Used to order the application of an override for a specific virtual path, helpful when an override depends on another override being applied first, supports:
117
- * <tt>:sequence => n</tt> - where n is a positive or negative integer (lower numbers get applied first, default 100).
118
- * <tt>:sequence => {:before => "*override_name*"}</tt> - where "*override_name*" is the name of an override defined for the
119
- same virtual_path, the current override will be appplied before
87
+ * `:sequence` - Used to order the application of an override for a specific virtual path, helpful when an override depends on another override being applied first, supports:
88
+ * `:sequence => n` - where n is a positive or negative integer (lower numbers get applied first, default 100).
89
+ * `:sequence => {:before => "*override_name*"}` - where "*override_name*" is the name of an override defined for the
90
+ same virtual_path, the current override will be appplied before
120
91
  the named override passed.
121
- * <tt>:sequence => {:after => "*override_name*"}</tt> - the current override will be applied after the named override passed.
92
+ * `:sequence => {:after => "*override_name*"}` - the current override will be applied after the named override passed.
122
93
 
123
- * <tt>:attributes</tt> - A hash containing all the attributes to be set on the matched elements, eg: :attributes => {:class => "green", :title => "some string"}
94
+ * `:attributes` - A hash containing all the attributes to be set on the matched elements, eg: :attributes => {:class => "green", :title => "some string"}
124
95
 
125
96
  ### Examples
126
97
 
127
98
  Replaces all instances of `h1` in the `posts/_form.html.erb` partial with `<h1>New Post</h1>`
128
99
 
129
100
  ```ruby
130
- Deface::Override.new(:virtual_path => "posts/_form",
131
- :name => "example-1",
132
- :replace => "h1",
101
+ Deface::Override.new(:virtual_path => "posts/_form",
102
+ :name => "example-1",
103
+ :replace => "h1",
133
104
  :text => "<h1>New Post</h1>")
134
105
  ```
135
106
 
@@ -146,8 +117,8 @@ end
146
117
  Inserts `<%= link_to "List Comments", comments_url(post) %>` before all instances of `p` with css class `comment` in `posts/index.html.erb`
147
118
 
148
119
  ```ruby
149
- Deface::Override.new(:virtual_path => "posts/index",
150
- :name => "example-2",
120
+ Deface::Override.new(:virtual_path => "posts/index",
121
+ :name => "example-2",
151
122
  :insert_before => "p.comment",
152
123
  :text => "<%= link_to 'List Comments', comments_url(post) %>")
153
124
  ```
@@ -155,17 +126,17 @@ Deface::Override.new(:virtual_path => "posts/index",
155
126
  Inserts the contents of `shared/_comment.html.erb` after all instances of `div` with an id of `comment_21` in `posts/show.html.erb`
156
127
 
157
128
  ```ruby
158
- Deface::Override.new(:virtual_path => "posts/show",
129
+ Deface::Override.new(:virtual_path => "posts/show",
159
130
  :name => "example-3",
160
- :insert_after => "div#comment_21",
131
+ :insert_after => "div#comment_21",
161
132
  :partial => "shared/comment")
162
133
  ```
163
134
 
164
135
  Removes any ERB block containing the string `helper_method` in the `posts/new.html.erb` template, will also log if markup being removed does not exactly match `<%= helper_method %>`
165
136
 
166
137
  ```ruby
167
- Deface::Override.new(:virtual_path => "posts/new",
168
- :name => "example-4",
138
+ Deface::Override.new(:virtual_path => "posts/new",
139
+ :name => "example-4",
169
140
  :remove => "erb[loud]:contains('helper_method')",
170
141
  :original => "<%= helper_method %>")
171
142
  ```
@@ -173,13 +144,13 @@ Deface::Override.new(:virtual_path => "posts/new",
173
144
  Wraps the `div` with id of `products` in ruby if statement, the <%= render_original %> in the `text` indicates where the matching content should be re-included.
174
145
 
175
146
  ```ruby
176
- Deface::Override.new(:virtual_path => "posts/new",
177
- :name => "example-5",
147
+ Deface::Override.new(:virtual_path => "posts/new",
148
+ :name => "example-5",
178
149
  :surround => "div#products",
179
150
  :text => "<% if @product.present? %><%= render_original %><% end %>")
180
151
  ```
181
152
 
182
- Sets (or adds if not present) the `class` and `title` attributes to all instances of `a` with an id of `link` in `posts/index.html.erb`
153
+ Sets (or adds if not present) the `class` and `title` attributes to all instances of `a` with an id of `link` in `posts/index.html.erb`
183
154
 
184
155
  ```ruby
185
156
  Deface::Override.new(:virtual_path => 'posts/index',
@@ -203,7 +174,7 @@ Deface scopes overrides by virtual_path (or partial / template file), that means
203
174
 
204
175
  ### Redefining Overrides
205
176
 
206
- You can redefine an existing override by simply declaring a new override with the same <tt>:virtual_path</tt>, <tt>:name</tt> and [action](#action) that was originally used.
177
+ You can redefine an existing override by simply declaring a new override with the same `:virtual_path`, `:name` and [action](#action) that was originally used.
207
178
  You do not need to resupply all the values originally used, just the ones you want to change:
208
179
 
209
180
  ```ruby
@@ -231,8 +202,7 @@ This can also be activated globally for all DSL overrides in your app's `applica
231
202
  config.deface.namespaced = true # default is false
232
203
  ```
233
204
 
234
- Using the Deface DSL (.deface files)
235
- ------------------------------------
205
+ ## Using the Deface DSL (.deface files)
236
206
 
237
207
  Instead of defining Deface::Override instances directly, you can alternatively add `.deface` files to the `app/overrides` folder and Deface will automatically pick them up.
238
208
  The path of each override should match the path of the view template you want to modify, say for example if you have a template at:
@@ -267,7 +237,7 @@ and including haml source:
267
237
  You can include all the additional options you can normally use when defining a Deface::Override manually, a more complex example:
268
238
 
269
239
  ```html
270
- <!-- replace_contents 'h1' closing_selector 'div#intro'
240
+ <!-- replace_contents 'h1' closing_selector 'div#intro'
271
241
  sequence :before => 'my_other_override'
272
242
  disabled -->
273
243
  <p>This is a complicated example</p>
@@ -290,21 +260,22 @@ or
290
260
 
291
261
  #### Namespacing
292
262
 
293
- When using the DSL, overrides automatically take their name from the filename of the file in which they are defined
294
- (ie `my_override.html.erb.deface` becomes `my_override`) so overrides with the same filename will replace each other,
263
+ When using the DSL, overrides automatically take their name from the filename of the file in which they are defined
264
+ (ie `my_override.html.erb.deface` becomes `my_override`) so overrides with the same filename will replace each other,
295
265
  even if they are defined in separate engines. If you want to avoid this, you can use the `namespaced` option :
296
266
 
297
267
  ```erb
298
268
  <!-- insert_bottom 'head' namespaced -->
299
269
  ```
270
+
300
271
  or activate it globally for all DSL overrides in your app's `application.rb` file:
301
272
 
302
273
  ```ruby
303
274
  config.deface.namespaced = true # default is false
304
275
  ```
305
276
 
306
- Each override will then have its name namespaced to the engine in which it was defined
307
- (ie `my_override.html.erb.deface` defined in `MyEngine` becomes `my_engine_my_override`),
277
+ Each override will then have its name namespaced to the engine in which it was defined
278
+ (ie `my_override.html.erb.deface` defined in `MyEngine` becomes `my_engine_my_override`),
308
279
  allowing overrides in different engines with identical filenames to co-exist.
309
280
 
310
281
  ### DSL usage for overrides that do not include markup
@@ -323,29 +294,27 @@ attributes :alt => 'Click here to search'
323
294
  ```
324
295
 
325
296
 
326
- Rake Tasks
327
- ----------
297
+ ## Rake Tasks
328
298
 
329
299
  Deface includes a couple of rake tasks that can be helpful when defining or debugging overrides.
330
300
 
331
- **deface:get_result** - Will list the original contents of a partial or template, the overrides that have been defined for a that file, and the resulting markup. *get_result* takes a single argument which is the virtual path of the template / partial:
301
+ `rake deface:get_result` - Will list the original contents of a partial or template, the overrides that have been defined for a that file, and the resulting markup. *get_result* takes a single argument which is the virtual path of the template / partial:
332
302
 
333
303
  rake deface:get_result[shared/_head]
334
304
 
335
305
  rake deface:get_result['admin/products/index']
336
306
 
337
- **deface:test_selector** - Applies a given CSS selector against a partial or template and outputs the markup for each match (if any). *test_selector* requires two arguments, the first is the virtual_path for the partial / template, the second is the CSS selector to apply:
307
+ `rake deface:test_selector` - Applies a given CSS selector against a partial or template and outputs the markup for each match (if any). *test_selector* requires two arguments, the first is the virtual_path for the partial / template, the second is the CSS selector to apply:
338
308
 
339
309
  rake deface:test_selector[shared/_head,title]
340
310
 
341
311
  rake deface:test_selector['admin/products/index','div.toolbar']
342
312
 
343
- **deface:precompile** - Generates compiled views that contain all overrides applied. See `Production & Precompiling` section below for more.
313
+ `rake deface:precompile` - Generates compiled views that contain all overrides applied. See `Production & Precompiling` section below for more.
344
314
 
345
315
  rake deface:precompile
346
316
 
347
- Production & Precompiling
348
- -------------------------
317
+ ## Production & Precompiling
349
318
 
350
319
  Deface now supports precompiling where all overrides are loaded and applied to the original views and the resulting templates are then saved to your application's `app/compiled_views` directory. To precompile run:
351
320
 
@@ -380,19 +349,34 @@ end
380
349
  after 'deploy:updated', 'deface:precompile'
381
350
  ```
382
351
 
352
+ ## Upgrading from 0.9 to 1.0
353
+
354
+ If you are updating from 0.9.x to 1.0.0 or higher, there's a major internal change you should be aware of.
355
+
356
+ Previously, erb blocks (i.e. <%= some_method %>) were converted as:
357
+
358
+ ```html
359
+ <code erb-loud> some_method </code>
360
+ ```
361
+ They are now converted to:
362
+
363
+ ```html
364
+ <erb loud> some_method </erb>
365
+ ```
366
+
367
+ This change will affect any Override that uses a selector that matches on `code` or `code[erb-loud]` or `code[erb-silent]` etc, they should be updated to `erb`, `erb[loud]` or `erb[silent]`, etc.
383
368
 
384
- Demo & Testing
385
- --------------
386
- You can play with Deface and see its parsing in action at [deface.heroku.com](http://deface.heroku.com)
369
+ Note: HAML & SLIM are preconverted to ERB before Deface parsers them, so the same conversions are happening there.
370
+
371
+ See the [Implementation](#implementation) section below for more details.
387
372
 
388
373
 
389
- Implementation
390
- ==============
374
+ # Implementation
391
375
 
392
- Deface temporarily converts ERB files into a pseudo HTML markup that can be parsed and queired by Nokogiri, using the following approach:
376
+ Deface temporarily converts ERB files into a pseudo HTML markup that can be parsed and queried by Nokogiri, using the following approach:
393
377
 
394
378
  ```erb
395
- <%= some ruby code %>
379
+ <%= some ruby code %>
396
380
  ```
397
381
 
398
382
  becomes:
@@ -401,8 +385,8 @@ becomes:
401
385
  <erb loud> some ruby code </erb>
402
386
  ```
403
387
 
404
- and
405
-
388
+ and
389
+
406
390
  ```erb
407
391
  <% other ruby code %>
408
392
  ```
@@ -418,7 +402,7 @@ ERB that is contained inside a HTML tag definition is converted slightly differe
418
402
  ```erb
419
403
  <p id="<%= dom_id @product %>" <%= "style='display:block';" %>>
420
404
  ```
421
-
405
+
422
406
  becomes:
423
407
 
424
408
  ```html
@@ -428,8 +412,8 @@ becomes:
428
412
  Deface overrides have full access to all variables accessible to the view being customized.
429
413
 
430
414
 
431
- Caveats
432
- ======
415
+ # Caveats
416
+
433
417
  Deface uses the amazing Nokogiri library (and in turn libxml) for parsing HTML / view files, in some circumstances either Deface's own pre-parser or libxml's will fail to correctly parse a template. You can avoid such issues by ensuring your templates contain valid HTML. Some other caveats include:
434
418
 
435
419
  1. Ensure that your layout views include doctype, html, head and body tags in a single file, as Nokogiri will create such elements if it detects any of these tags have been incorrectly nested.
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/deface.gemspec CHANGED
@@ -30,7 +30,13 @@ Gem::Specification.new do |spec|
30
30
  spec.extra_rdoc_files = ["README.markdown"]
31
31
 
32
32
  spec.add_dependency('nokogiri', '>= 1.6')
33
- spec.add_dependency('rails', '>= 5.2')
33
+
34
+ %w[
35
+ actionview
36
+ railties
37
+ ].each do |rails_gem|
38
+ spec.add_dependency(rails_gem, '>= 5.2')
39
+ end
34
40
  spec.add_dependency('rainbow', '>= 2.1.0')
35
41
  spec.add_dependency('polyglot')
36
42
 
@@ -39,7 +45,7 @@ Gem::Specification.new do |spec|
39
45
  spec.add_development_dependency('gem-release')
40
46
  spec.add_development_dependency('rspec', '>= 3.1.0')
41
47
  spec.add_development_dependency('haml', ['>= 4.0', '< 6'])
42
- spec.add_development_dependency('slim', '~> 3.0')
48
+ spec.add_development_dependency('slim', '~> 4.1')
43
49
  spec.add_development_dependency('simplecov', '>= 0.6.4')
44
50
  spec.add_development_dependency('generator_spec', '~> 0.8')
45
51
  spec.add_development_dependency('pry')
@@ -2,7 +2,8 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 5.2.0"
5
+ gem "actionview", "~> 5.2.0"
6
+ gem "railties", "~> 5.2.0"
6
7
 
7
8
  group :test do
8
9
  gem "test-unit"
@@ -2,7 +2,8 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 6.0.0"
5
+ gem "actionview", "~> 6.0.0"
6
+ gem "railties", "~> 6.0.0"
6
7
 
7
8
  group :test do
8
9
  gem "test-unit"
@@ -2,7 +2,8 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 6.1.0"
5
+ gem "actionview", "~> 6.1.0"
6
+ gem "railties", "~> 6.1.0"
6
7
 
7
8
  group :test do
8
9
  gem "test-unit"
@@ -2,7 +2,12 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 6.1.0"
5
+ %w[
6
+ actionview
7
+ railties
8
+ ].each do |rails_gem|
9
+ gem rails_gem, "~> 6.1.0"
10
+ end
6
11
 
7
12
  group :test do
8
13
  gem "test-unit"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deface
4
- VERSION = '1.8.1'
4
+ VERSION = '1.8.2'
5
5
 
6
6
  def gem_version
7
7
  Gem::Version.new(VERSION)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deface
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian D Quinn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-26 00:00:00.000000000 Z
11
+ date: 2022-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -25,7 +25,21 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rails
28
+ name: actionview
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '5.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '5.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
@@ -148,14 +162,14 @@ dependencies:
148
162
  requirements:
149
163
  - - "~>"
150
164
  - !ruby/object:Gem::Version
151
- version: '3.0'
165
+ version: '4.1'
152
166
  type: :development
153
167
  prerelease: false
154
168
  version_requirements: !ruby/object:Gem::Requirement
155
169
  requirements:
156
170
  - - "~>"
157
171
  - !ruby/object:Gem::Version
158
- version: '3.0'
172
+ version: '4.1'
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: simplecov
161
175
  requirement: !ruby/object:Gem::Requirement
@@ -206,11 +220,13 @@ extensions: []
206
220
  extra_rdoc_files:
207
221
  - README.markdown
208
222
  files:
223
+ - ".github/dependabot.yml"
224
+ - ".github/workflows/main.yml"
209
225
  - ".gitignore"
210
226
  - ".rspec"
211
- - ".travis.yml"
212
227
  - Appraisals
213
228
  - CHANGELOG.markdown
229
+ - CONTRIBUTING.md
214
230
  - Gemfile
215
231
  - MIT-LICENSE
216
232
  - README.markdown
@@ -220,6 +236,7 @@ files:
220
236
  - bin/rails-sandbox
221
237
  - bin/sandbox
222
238
  - bin/sandbox-setup
239
+ - bin/setup
223
240
  - deface.gemspec
224
241
  - gemfiles/rails_5.2.gemfile
225
242
  - gemfiles/rails_6.0.gemfile
@@ -341,7 +358,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
341
358
  - !ruby/object:Gem::Version
342
359
  version: '0'
343
360
  requirements: []
344
- rubygems_version: 3.1.4
361
+ rubygems_version: 3.2.32
345
362
  signing_key:
346
363
  specification_version: 4
347
364
  summary: Deface is a library that allows you to customize ERB, Haml and Slim views
data/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- script: "bundle exec rake"
2
-
3
- cache:
4
- bundler: true
5
-
6
- rvm:
7
- - 2.5.8
8
- - 2.6.6
9
- - 2.7.2
10
- - 3.0.0
11
-
12
- gemfile:
13
- - gemfiles/rails_5.2.gemfile
14
- - gemfiles/rails_6.0.gemfile
15
- - gemfiles/rails_6_1.gemfile
16
-
17
- matrix:
18
- exclude:
19
- - rvm: 2.6.6
20
- gemfile: gemfiles/rails_5.2.gemfile
21
- - rvm: 2.7.2
22
- gemfile: gemfiles/rails_5.2.gemfile
23
- - rvm: 3.0.0
24
- gemfile: gemfiles/rails_5.2.gemfile
25
- - rvm: 3.0.0
26
- gemfile: gemfiles/rails_6.0.gemfile