html_surgeon 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -2
- data/lib/html_surgeon.rb +7 -0
- data/lib/html_surgeon/changes/add_css_class.rb +2 -2
- data/lib/html_surgeon/node_audit_cleaner.rb +22 -0
- data/lib/html_surgeon/service.rb +8 -0
- data/lib/html_surgeon/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab5cdfb5f4b18b04314af4cb220395841332481e
|
4
|
+
data.tar.gz: 5411f9dd20388ca336f444891a4516e069534dc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d663853d245a480ad691f8e1218bfca304b9790326909691477cebb4ab5af418a3adb7d4093afda7c4f7439a53bd963acb5fb02613e8fc275712db8dadd40f3
|
7
|
+
data.tar.gz: f27b7bd09a2fbbda7b3f3a04caf76ed8bb7745e3ec8282ae4100f9fb8b5a2adf6628b18999b9cbef40ea9d85e231ce195fdbdea3143d2bfdf2931659ff789d3b
|
data/README.md
CHANGED
@@ -180,7 +180,7 @@ change_set.run # => nodes skipped if reject callback return truthy or if select
|
|
180
180
|
### Replace Tag Name
|
181
181
|
|
182
182
|
```ruby
|
183
|
-
surgeon.css('div.to-be-changed').
|
183
|
+
surgeon.css('div.to-be-changed').replace_tag_name('article')
|
184
184
|
```
|
185
185
|
|
186
186
|
### Add CSS Class
|
@@ -191,7 +191,7 @@ surgeon.css('div.to-be-changed').add_css_class('applied-some-stuff')
|
|
191
191
|
|
192
192
|
## Rollback
|
193
193
|
|
194
|
-
the
|
194
|
+
the surgeon can be used to revert any audited rollback. We can select what changes to rollback based on:
|
195
195
|
|
196
196
|
- `change_set`: The change_set UUID
|
197
197
|
- `changed_at`: The change timestamp
|
@@ -208,6 +208,21 @@ surgeon.rollback(changed_at: changed_at).html # => returns the html with only t
|
|
208
208
|
surgeon.rollback(changed_from: changed_from).html # => returns the html with any change sets with a timestamp more recent than `changed_from` reverted
|
209
209
|
```
|
210
210
|
|
211
|
+
## Clear Audit trail
|
212
|
+
|
213
|
+
we can clear all audit from the given html with the `clear_audit` method.
|
214
|
+
|
215
|
+
```ruby
|
216
|
+
surgeon = HtmlSurgeon.for(GIVEN_HTML)
|
217
|
+
surgeon.clear_audit.html # => returns the html with all audit html attributes removed
|
218
|
+
```
|
219
|
+
|
220
|
+
## Helper Methods
|
221
|
+
|
222
|
+
### `HtmlSurgeon.node_has_css_class?(nokogiri_node, css_class)`
|
223
|
+
|
224
|
+
it will return true if the given nokogiri node has that css_class
|
225
|
+
|
211
226
|
## Installation
|
212
227
|
|
213
228
|
Add this line to your application's Gemfile:
|
@@ -238,6 +253,11 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/eturin
|
|
238
253
|
|
239
254
|
## CHANGESET
|
240
255
|
|
256
|
+
### v0.5.0
|
257
|
+
|
258
|
+
- added `node_has_css_class?` helper method to `HtmlSurgeon`
|
259
|
+
- added `clear_audit` to surgeon
|
260
|
+
|
241
261
|
### v0.4.0
|
242
262
|
|
243
263
|
- added `select` and `reject` callbacks to Change Set, based on blocks with `node` as single argument
|
data/lib/html_surgeon.rb
CHANGED
@@ -7,6 +7,7 @@ require 'html_surgeon/version'
|
|
7
7
|
require 'html_surgeon/abstract_method_error'
|
8
8
|
require 'html_surgeon/auditor'
|
9
9
|
require 'html_surgeon/node_reverser'
|
10
|
+
require 'html_surgeon/node_audit_cleaner'
|
10
11
|
require 'html_surgeon/service'
|
11
12
|
require 'html_surgeon/change_set'
|
12
13
|
require 'html_surgeon/change'
|
@@ -20,4 +21,10 @@ module HtmlSurgeon
|
|
20
21
|
def self.for(html_string, **options)
|
21
22
|
Service.new html_string, **options
|
22
23
|
end
|
24
|
+
|
25
|
+
# helper methods
|
26
|
+
def self.node_has_css_class?(nokogiri_node, css_class)
|
27
|
+
Changes::AddCssClass.has_class? nokogiri_node, css_class
|
28
|
+
end
|
29
|
+
|
23
30
|
end
|
@@ -26,7 +26,7 @@ module HtmlSurgeon
|
|
26
26
|
|
27
27
|
def audit_data(node)
|
28
28
|
basic_audit_data.merge type: AUDIT_TYPE,
|
29
|
-
existed_before: self.class.
|
29
|
+
existed_before: self.class.has_class?(node, css_class),
|
30
30
|
class: css_class
|
31
31
|
end
|
32
32
|
|
@@ -54,7 +54,7 @@ module HtmlSurgeon
|
|
54
54
|
node.get_attribute(CLASS_ATTRIBUTE).to_s.split(CLASS_SEPARATOR)
|
55
55
|
end
|
56
56
|
|
57
|
-
def self.
|
57
|
+
def self.has_class?(node, css_class)
|
58
58
|
node_classes(node).include? css_class
|
59
59
|
end
|
60
60
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module HtmlSurgeon
|
2
|
+
class NodeAuditCleaner
|
3
|
+
attr_reader :node
|
4
|
+
|
5
|
+
def initialize(node:)
|
6
|
+
@node = node
|
7
|
+
end
|
8
|
+
|
9
|
+
def call
|
10
|
+
write_empty_changes_list
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def write_empty_changes_list
|
15
|
+
auditor.apply []
|
16
|
+
end
|
17
|
+
|
18
|
+
def auditor
|
19
|
+
@auditor ||= Auditor.new node
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/html_surgeon/service.rb
CHANGED
@@ -34,6 +34,14 @@ module HtmlSurgeon
|
|
34
34
|
self
|
35
35
|
end
|
36
36
|
|
37
|
+
def clear_audit
|
38
|
+
doc.css("[#{DATA_CHANGE_AUDIT_ATTRIBUTE}]").each do |node|
|
39
|
+
NodeAuditCleaner.new(node: node).call
|
40
|
+
end
|
41
|
+
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
37
45
|
private
|
38
46
|
def doc
|
39
47
|
@doc ||= Nokogiri::HTML.fragment @given_html.dup
|
data/lib/html_surgeon/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html_surgeon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo Turiño
|
@@ -146,6 +146,7 @@ files:
|
|
146
146
|
- lib/html_surgeon/changes.rb
|
147
147
|
- lib/html_surgeon/changes/add_css_class.rb
|
148
148
|
- lib/html_surgeon/changes/replace_tag_name.rb
|
149
|
+
- lib/html_surgeon/node_audit_cleaner.rb
|
149
150
|
- lib/html_surgeon/node_reverser.rb
|
150
151
|
- lib/html_surgeon/service.rb
|
151
152
|
- lib/html_surgeon/version.rb
|