nanoc-tidy.rb 0.6.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile.rb +6 -0
- data/lib/nanoc/tidy/filter.rb +23 -19
- data/lib/nanoc/tidy/spawn.rb +16 -32
- 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 +1 -1
- data/test/tidy_filter_test.rb +4 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: baa9bd78c6f407c7050903ec46fe89c19a702dc788eb556438078d43f10c2adf
|
4
|
+
data.tar.gz: 5bd8b9fd26eb7eb0a6831eaee86d0da38e02ceee4589cfbdef4881f29f52b6a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3acb6eb29a332c6013cdaa878f54327abfc96ec87fbd36c8a439afe153469b724713cea1a77572ab02b069c24e6f3dac25c1b05e00aeac146e304f9637c6766e
|
7
|
+
data.tar.gz: 83f346f2273873f02015065cc8701d8693e6cfd8a26686a767789a9dcd2f4cd46b084b452b928807758141ac4e3f312afb0f80d63bc6f355cdbd1663db9ab03d
|
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,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Nanoc::Tidy
|
2
4
|
module Spawn
|
3
|
-
require "securerandom"
|
4
5
|
require "fileutils"
|
5
|
-
Error = Class.new(RuntimeError)
|
6
6
|
|
7
7
|
##
|
8
8
|
# Spawns a process
|
@@ -13,20 +13,10 @@ module Nanoc::Tidy
|
|
13
13
|
# @param [Array<String>] argv
|
14
14
|
# An array of command line arguments
|
15
15
|
#
|
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
16
|
# @return [void]
|
23
|
-
def spawn(exe, argv,
|
24
|
-
|
25
|
-
|
26
|
-
out = "#{out}+#{id}"
|
27
|
-
Kernel.spawn(
|
28
|
-
exe, *argv, { STDERR => err, STDOUT => out }
|
29
|
-
)
|
17
|
+
def spawn(exe, argv, workdir: File.join(Dir.getwd, "tmp"))
|
18
|
+
logfile = File.join(workdir, ".#{Process.pid}.tidy")
|
19
|
+
Kernel.spawn(exe, *argv, {STDERR => logfile, STDOUT => logfile})
|
30
20
|
Process.wait
|
31
21
|
status = $?
|
32
22
|
##
|
@@ -34,24 +24,18 @@ module Nanoc::Tidy
|
|
34
24
|
# * 0: no warnings, no errors
|
35
25
|
# * 1: has warnings
|
36
26
|
# * 2: has errors
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
"item: #{item.identifier}" \
|
48
|
-
")" \
|
49
|
-
"\n#{msgs}",
|
50
|
-
[]
|
27
|
+
if [0, 1].include?(status.exitstatus)
|
28
|
+
status.exitstatus
|
29
|
+
else
|
30
|
+
raise Nanoc::Tidy::Error,
|
31
|
+
"#{File.basename(exe)} exited unsuccessfully\n" \
|
32
|
+
"(item: #{item.identifier})\n" \
|
33
|
+
"(exit code: #{status.exitstatus})\n" \
|
34
|
+
"output:\n#{File.binread(logfile)}\n",
|
35
|
+
[]
|
36
|
+
end
|
51
37
|
ensure
|
52
|
-
|
53
|
-
.select { File.exist?(_1) }
|
54
|
-
.each { FileUtils.rm(_1) }
|
38
|
+
File.exist?(logfile) ? FileUtils.rm(logfile) : nil
|
55
39
|
end
|
56
40
|
end
|
57
41
|
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,7 +10,7 @@ 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
15
|
gem.add_development_dependency "yard", "~> 0.9"
|
16
16
|
gem.add_development_dependency "redcarpet", "~> 3.5"
|
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,14 +1,14 @@
|
|
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.7.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-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yard
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0.6'
|
125
|
-
description: nanoc
|
125
|
+
description: nanoc + tidy-html5
|
126
126
|
email:
|
127
127
|
- 0x1eef@protonmail.com
|
128
128
|
executables: []
|
@@ -166,5 +166,5 @@ requirements: []
|
|
166
166
|
rubygems_version: 3.5.9
|
167
167
|
signing_key:
|
168
168
|
specification_version: 4
|
169
|
-
summary: nanoc
|
169
|
+
summary: nanoc + tidy-html5
|
170
170
|
test_files: []
|