nanoc-tidy.rb 0.6.2 → 0.8.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 +9 -7
- data/Rakefile.rb +6 -0
- data/lib/nanoc/tidy/filter.rb +23 -19
- data/lib/nanoc/tidy/spawn.rb +16 -35
- data/lib/nanoc/tidy/version.rb +3 -1
- data/lib/nanoc/tidy.rb +5 -0
- data/lib/nanoc-tidy.rb +1 -0
- data/nanoc-tidy.rb.gemspec +2 -1
- data/test/tidy_filter_test.rb +4 -2
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 133f30c53d54b2f5cea16c3877fa597d86b5db84bb240214459eee5e6a8c4f07
|
4
|
+
data.tar.gz: 8d054b51e4f6fbd7351fac5eb78ddcae57bcf175ebfea062c588daf9d5358c56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95b712fefeaf461ec57efe23fbcfada16a9be99498ee923affd4db983ffa522157f95b2659a4fd726d626296a515a6cb1631ca1ae890af7caa5e8ef82949716a
|
7
|
+
data.tar.gz: d83de9881073f9a53818fec78482c7a98023acc1bc798137b78a766b96f343cec659b54e06425cda3cd78c611d32a2b606c9f15cca466859ca3b95257e9cb4ef
|
data/README.md
CHANGED
@@ -14,8 +14,9 @@ build process.
|
|
14
14
|
|
15
15
|
__Defaults__
|
16
16
|
|
17
|
-
The following example
|
18
|
-
[
|
17
|
+
The following example executes tidy with the default settings. <br>
|
18
|
+
See [Nanoc::Tidy.default_argv](https://0x1eef.github.io/x/nanoc-tidy.rb/Nanoc/Tidy/Filter#default_argv-class_method)
|
19
|
+
for more details:
|
19
20
|
|
20
21
|
``` ruby
|
21
22
|
# Rules
|
@@ -28,9 +29,10 @@ compile "/index.html.erb" do
|
|
28
29
|
end
|
29
30
|
```
|
30
31
|
|
31
|
-
|
32
|
+
__Option: argv__
|
32
33
|
|
33
|
-
The following example
|
34
|
+
The following example sets the "argv" filter option. <br>
|
35
|
+
The filter option is combined with [Nanoc::Tidy.default_argv](https://0x1eef.github.io/x/nanoc-tidy.rb/Nanoc/Tidy/Filter#default_argv-class_method):
|
34
36
|
|
35
37
|
```ruby
|
36
38
|
# Rules
|
@@ -43,7 +45,7 @@ compile "/index.html.erb" do
|
|
43
45
|
end
|
44
46
|
```
|
45
47
|
|
46
|
-
##
|
48
|
+
## Install
|
47
49
|
|
48
50
|
**Rubygems.org**
|
49
51
|
|
@@ -58,6 +60,6 @@ nanoc-tidy.rb can be installed via rubygems.org:
|
|
58
60
|
|
59
61
|
## License
|
60
62
|
|
61
|
-
[BSD Zero Clause](https://choosealicense.com/licenses/0bsd/)
|
63
|
+
[BSD Zero Clause](https://choosealicense.com/licenses/0bsd/)
|
62
64
|
<br>
|
63
|
-
See [LICENSE](./LICENSE)
|
65
|
+
See [LICENSE](./LICENSE)
|
data/Rakefile.rb
CHANGED
data/lib/nanoc/tidy/filter.rb
CHANGED
@@ -4,6 +4,7 @@ module Nanoc::Tidy
|
|
4
4
|
class Filter < Nanoc::Filter
|
5
5
|
require "fileutils"
|
6
6
|
require_relative "spawn"
|
7
|
+
|
7
8
|
include Spawn
|
8
9
|
include FileUtils
|
9
10
|
|
@@ -34,14 +35,15 @@ module Nanoc::Tidy
|
|
34
35
|
# @return [String]
|
35
36
|
# Returns HTML content (modified)
|
36
37
|
def run(content, options = {})
|
37
|
-
|
38
|
+
file = temporary_file(
|
39
|
+
File.basename(item.identifier.to_s),
|
40
|
+
content
|
41
|
+
)
|
38
42
|
spawn tidy,
|
39
|
-
[*default_argv, *(options[:argv] || []), "-modify", path]
|
40
|
-
|
41
|
-
out: File.join(tmpdir, "stdout")
|
42
|
-
File.read(path)
|
43
|
+
[*default_argv, *(options[:argv] || []), "-modify", file.path]
|
44
|
+
File.read(file.path)
|
43
45
|
ensure
|
44
|
-
|
46
|
+
file&.unlink
|
45
47
|
end
|
46
48
|
|
47
49
|
private
|
@@ -50,23 +52,25 @@ module Nanoc::Tidy
|
|
50
52
|
self.class.default_argv
|
51
53
|
end
|
52
54
|
|
53
|
-
def temporary_file(content)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
def temporary_file(basename, content)
|
56
|
+
tempname = [
|
57
|
+
".nanoc.tidy.#{basename}.#{object_id}",
|
58
|
+
SecureRandom.alphanumeric(3)
|
59
|
+
]
|
60
|
+
Tempfile.new(tempname).tap do
|
61
|
+
_1.write(content)
|
62
|
+
_1.flush
|
63
|
+
end
|
58
64
|
end
|
59
65
|
|
60
66
|
def tidy
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
67
|
+
if system("which tidy > /dev/null 2>&1")
|
68
|
+
"tidy"
|
69
|
+
elsif system("which tidy5 > /dev/null 2>&1")
|
70
|
+
"tidy5"
|
71
|
+
else
|
72
|
+
raise Nanoc::Tidy::Error, "tidy executable not found on $PATH"
|
65
73
|
end
|
66
74
|
end
|
67
|
-
|
68
|
-
def tmpdir
|
69
|
-
File.join(Dir.getwd, "tmp", "tidy-html5")
|
70
|
-
end
|
71
75
|
end
|
72
76
|
end
|
data/lib/nanoc/tidy/spawn.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Nanoc::Tidy
|
2
4
|
module Spawn
|
3
|
-
require "securerandom"
|
4
5
|
require "fileutils"
|
5
|
-
|
6
|
+
require "test-cmd"
|
6
7
|
|
7
8
|
##
|
8
9
|
# Spawns a process
|
@@ -13,45 +14,25 @@ module Nanoc::Tidy
|
|
13
14
|
# @param [Array<String>] argv
|
14
15
|
# An array of command line arguments
|
15
16
|
#
|
16
|
-
# @param [String] err
|
17
|
-
# A path where stderr is redirected to
|
18
|
-
#
|
19
|
-
# @param [String] out
|
20
|
-
# A path where stdout is redirected to
|
21
|
-
#
|
22
17
|
# @return [void]
|
23
|
-
def spawn(exe, argv
|
24
|
-
|
25
|
-
err = "#{err}+#{id}"
|
26
|
-
out = "#{out}+#{id}"
|
27
|
-
Kernel.spawn(
|
28
|
-
exe, *argv, { STDERR => err, STDOUT => out }
|
29
|
-
)
|
30
|
-
Process.wait
|
31
|
-
status = $?
|
18
|
+
def spawn(exe, argv)
|
19
|
+
r = cmd(exe, *argv)
|
32
20
|
##
|
33
21
|
# exit codes
|
34
22
|
# * 0: no warnings, no errors
|
35
23
|
# * 1: has warnings
|
36
24
|
# * 2: has errors
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
")" \
|
49
|
-
"\n#{msgs}",
|
50
|
-
[]
|
51
|
-
ensure
|
52
|
-
[err, out]
|
53
|
-
.select { File.exist?(_1) }
|
54
|
-
.each { FileUtils.rm(_1) }
|
25
|
+
if [0, 1].include?(r.exit_status)
|
26
|
+
r.exit_status
|
27
|
+
else
|
28
|
+
raise Nanoc::Tidy::Error,
|
29
|
+
"#{File.basename(exe)} exited unsuccessfully\n" \
|
30
|
+
"(item: #{item.identifier})\n" \
|
31
|
+
"(exit code: #{r.exit_status})\n" \
|
32
|
+
"(stdout:\n#{r.stdout})\n" \
|
33
|
+
"(stderr:\n#{r.stderr})\n",
|
34
|
+
[]
|
35
|
+
end
|
55
36
|
end
|
56
37
|
end
|
57
38
|
end
|
data/lib/nanoc/tidy/version.rb
CHANGED
data/lib/nanoc/tidy.rb
CHANGED
data/lib/nanoc-tidy.rb
CHANGED
data/nanoc-tidy.rb.gemspec
CHANGED
@@ -10,8 +10,9 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.licenses = ["0BSD"]
|
11
11
|
gem.files = `git ls-files`.split($/).reject { _1.start_with?(".") }
|
12
12
|
gem.require_paths = ["lib"]
|
13
|
-
gem.summary = "nanoc
|
13
|
+
gem.summary = "nanoc + tidy-html5"
|
14
14
|
gem.description = gem.summary
|
15
|
+
gem.add_runtime_dependency "test-cmd.rb", "~> 0.12.2"
|
15
16
|
gem.add_development_dependency "yard", "~> 0.9"
|
16
17
|
gem.add_development_dependency "redcarpet", "~> 3.5"
|
17
18
|
gem.add_development_dependency "test-unit", "~> 3.6"
|
data/test/tidy_filter_test.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative "setup"
|
2
4
|
|
3
5
|
class FilterTest < Test::Unit::TestCase
|
4
6
|
def test_default_options
|
5
|
-
options = {
|
7
|
+
options = {argv: ["--tidy-mark", "false"]}
|
6
8
|
assert_equal read_result("default_options.html"),
|
7
9
|
filter_for("fixture.html").run(html, options)
|
8
10
|
end
|
9
11
|
|
10
12
|
def test_upper_option
|
11
|
-
options = {
|
13
|
+
options = {argv: ["-upper", "--tidy-mark", "false"]}
|
12
14
|
assert_equal read_result("upper_option.html"),
|
13
15
|
filter_for("fixture.html").run(html, options)
|
14
16
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanoc-tidy.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- '0x1eef'
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: test-cmd.rb
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.12.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.12.2
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: yard
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,7 +136,7 @@ dependencies:
|
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0.6'
|
125
|
-
description: nanoc
|
139
|
+
description: nanoc + tidy-html5
|
126
140
|
email:
|
127
141
|
- 0x1eef@protonmail.com
|
128
142
|
executables: []
|
@@ -166,5 +180,5 @@ requirements: []
|
|
166
180
|
rubygems_version: 3.5.9
|
167
181
|
signing_key:
|
168
182
|
specification_version: 4
|
169
|
-
summary: nanoc
|
183
|
+
summary: nanoc + tidy-html5
|
170
184
|
test_files: []
|