asciidoctor-reducer 1.0.0-rc.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +29 -0
- data/README.adoc +2 -2
- data/lib/asciidoctor/reducer/cli.rb +1 -1
- data/lib/asciidoctor/reducer/conditional_directive_tracker.rb +9 -7
- data/lib/asciidoctor/reducer/include_directive_tracker.rb +11 -12
- data/lib/asciidoctor/reducer/preprocessor.rb +2 -1
- data/lib/asciidoctor/reducer/tree_processor.rb +5 -5
- data/lib/asciidoctor/reducer/version.rb +1 -1
- 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: b5316a1e0a22871599401171fc8f5104e4a03cf09598eacee8670153354e6050
|
4
|
+
data.tar.gz: 02cc09578b9798e53f3e8a23f81b2e051ef2b6714c39bee99d043a6cbee2acc5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2ef54d4a37f4c1f2205cb191735a1d6462ad271faa75db4ea87305c5ba25f2ba08885057f5c56006703ad745fc2c55928ac0c6db9205e9ee35284fab245f395
|
7
|
+
data.tar.gz: '0018183fd91c359a67ad0a6e5b60901f5f868bc4223bd9fc27c639eb5fb05a684c938480507a9ff445bdd00ad260ff385c29d68a6359c2498cc6a4d9cee0320a'
|
data/CHANGELOG.adoc
CHANGED
@@ -4,6 +4,35 @@
|
|
4
4
|
This document provides a curated view of the changes to Asciidoctor Reducer in each release.
|
5
5
|
For a detailed view of what has changed, refer to the {url-repo}/commits/main[commit history] on GitHub.
|
6
6
|
|
7
|
+
== 1.0.2 (2022-05-09) - @mojavelinux
|
8
|
+
|
9
|
+
=== Fixed
|
10
|
+
|
11
|
+
* Replace include and conditional directives inside a file that has been included partially (i.e., has an offset) (#43)
|
12
|
+
|
13
|
+
=== Details
|
14
|
+
|
15
|
+
{url-repo}/releases/tag/v1.0.2[git tag] | {url-repo}/compare/v1.0.1\...v1.0.2[full diff]
|
16
|
+
|
17
|
+
== 1.0.1 (2022-05-08) - @mojavelinux
|
18
|
+
|
19
|
+
=== Changed
|
20
|
+
|
21
|
+
* Use summary from gemspec in help text for `asciidoctor-reducer` command
|
22
|
+
* Consistently access `source_lines` from document; use `#replace` to update
|
23
|
+
|
24
|
+
=== Details
|
25
|
+
|
26
|
+
{url-repo}/releases/tag/v1.0.1[git tag] | {url-repo}/compare/v1.0.0\...v1.0.1[full diff]
|
27
|
+
|
28
|
+
== 1.0.0 (2022-04-22) - @mojavelinux
|
29
|
+
|
30
|
+
_No changes since previous release._
|
31
|
+
|
32
|
+
=== Details
|
33
|
+
|
34
|
+
{url-repo}/releases/tag/v1.0.0[git tag] | {url-repo}/compare/v1.0.0-rc.1\...v1.0.0[full diff]
|
35
|
+
|
7
36
|
== 1.0.0-rc.1 (2022-04-22) - @mojavelinux
|
8
37
|
|
9
38
|
_No changes since previous release._
|
data/README.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= {project-name}
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>
|
3
|
-
v1.0.
|
3
|
+
v1.0.2, 2022-05-09
|
4
4
|
:idprefix:
|
5
5
|
:idseparator: -
|
6
6
|
ifndef::env-github[:icons: font]
|
@@ -38,7 +38,7 @@ We generally recommend using RVM as it allows you to install gems without requir
|
|
38
38
|
|
39
39
|
You can install the latest version of the gem using the following command:
|
40
40
|
|
41
|
-
$ gem install asciidoctor-reducer
|
41
|
+
$ gem install asciidoctor-reducer
|
42
42
|
|
43
43
|
Installing this gem makes the `asciidoctor-reducer` command available on your $PATH.
|
44
44
|
You can also require the gem into the Ruby runtime to use it as a library or Asciidoctor extension.
|
@@ -14,7 +14,7 @@ module Asciidoctor::Reducer
|
|
14
14
|
opts.banner = <<~END
|
15
15
|
Usage: #{opts.program_name} [OPTION]... FILE
|
16
16
|
|
17
|
-
|
17
|
+
#{::Gem.loaded_specs['asciidoctor-reducer'].summary}
|
18
18
|
|
19
19
|
END
|
20
20
|
|
@@ -5,20 +5,22 @@ module Asciidoctor::Reducer
|
|
5
5
|
def preprocess_conditional_directive keyword, target, delimiter, text
|
6
6
|
skip_active = @skipping
|
7
7
|
depth = @conditional_stack.size
|
8
|
-
|
8
|
+
directive_lineno = @lineno
|
9
9
|
result = super
|
10
10
|
return result if @skipping && skip_active
|
11
|
-
|
11
|
+
curr_inc_replacement = @include_replacements.current
|
12
|
+
drop = curr_inc_replacement[:drop] ||= []
|
13
|
+
directive_lineno -= (curr_inc_replacement[:offset] ||= 0)
|
12
14
|
if (depth_change = @conditional_stack.size - depth) < 0
|
13
15
|
if skip_active
|
14
|
-
drop.push(*(drop.pop..
|
16
|
+
drop.push(*(drop.pop..directive_lineno))
|
15
17
|
else
|
16
|
-
drop <<
|
18
|
+
drop << directive_lineno
|
17
19
|
end
|
18
|
-
elsif depth_change > 0 ||
|
19
|
-
drop <<
|
20
|
+
elsif depth_change > 0 || directive_lineno == @lineno
|
21
|
+
drop << directive_lineno
|
20
22
|
else
|
21
|
-
drop << [
|
23
|
+
drop << [directive_lineno, text]
|
22
24
|
end
|
23
25
|
result
|
24
26
|
end
|
@@ -2,10 +2,8 @@
|
|
2
2
|
|
3
3
|
module Asciidoctor::Reducer
|
4
4
|
module IncludeDirectiveTracker
|
5
|
-
attr_reader :include_replacements
|
6
|
-
attr_writer :source_lines
|
7
|
-
|
8
5
|
def self.extended instance
|
6
|
+
instance.singleton_class.send :attr_reader, :include_replacements
|
9
7
|
instance.instance_variable_set :@include_replacements, ([{}].extend CurrentPosition)
|
10
8
|
instance.instance_variable_set :@x_reducer, {}
|
11
9
|
end
|
@@ -13,14 +11,14 @@ module Asciidoctor::Reducer
|
|
13
11
|
def preprocess_include_directive target, attrlist
|
14
12
|
@x_reducer[:include_directive_line] = %(include::#{target}[#{attrlist}])
|
15
13
|
@x_reducer[:include_pushed] = false
|
16
|
-
|
14
|
+
directive_lineno = @lineno # we're currently on the include line, which is 1-based
|
17
15
|
result = super
|
18
16
|
unless @x_reducer[:include_pushed]
|
19
17
|
if ((ln = peek_line true)&.end_with? ']') && !(unresolved = ln.start_with? 'Unresolved directive in ') &&
|
20
|
-
|
18
|
+
directive_lineno == @lineno && (unresolved = ln.start_with? 'link:')
|
21
19
|
ln = %(#{ln.slice 0, (ln.length - 1)}role=include])
|
22
20
|
end
|
23
|
-
push_include_replacement
|
21
|
+
push_include_replacement directive_lineno, (unresolved ? [ln] : []), 0, unresolved
|
24
22
|
end
|
25
23
|
@x_reducer.clear
|
26
24
|
result
|
@@ -28,10 +26,11 @@ module Asciidoctor::Reducer
|
|
28
26
|
|
29
27
|
def push_include data, file, path, lineno, attrs
|
30
28
|
@x_reducer[:include_pushed] = true
|
31
|
-
|
29
|
+
directive_lineno = @lineno - 1 # we're below the include line, which is 1-based
|
32
30
|
prev_inc_depth = @include_stack.size
|
31
|
+
offset = lineno > 1 ? lineno - 1 : 0
|
33
32
|
result = super
|
34
|
-
push_include_replacement
|
33
|
+
push_include_replacement directive_lineno, (@include_stack.size > prev_inc_depth ? lines : []), offset
|
35
34
|
result
|
36
35
|
end
|
37
36
|
|
@@ -42,12 +41,13 @@ module Asciidoctor::Reducer
|
|
42
41
|
|
43
42
|
private
|
44
43
|
|
45
|
-
def push_include_replacement lineno, lines, unresolved = false
|
44
|
+
def push_include_replacement lineno, lines, offset, unresolved = false
|
46
45
|
(inc_replacements = @include_replacements) << {
|
47
46
|
into: inc_replacements.pointer,
|
48
|
-
lineno: lineno,
|
47
|
+
lineno: lineno - (inc_replacements.current[:offset] ||= 0),
|
49
48
|
line: @x_reducer[:include_directive_line],
|
50
49
|
lines: lines,
|
50
|
+
offset: offset,
|
51
51
|
}
|
52
52
|
inc_replacements.to_end unless unresolved || lines.empty?
|
53
53
|
nil
|
@@ -55,9 +55,8 @@ module Asciidoctor::Reducer
|
|
55
55
|
end
|
56
56
|
|
57
57
|
module CurrentPosition
|
58
|
-
attr_reader :pointer
|
59
|
-
|
60
58
|
def self.extended instance
|
59
|
+
instance.singleton_class.send :attr_reader, :pointer
|
61
60
|
instance.to_end
|
62
61
|
end
|
63
62
|
|
@@ -7,7 +7,8 @@ module Asciidoctor::Reducer
|
|
7
7
|
class Preprocessor < ::Asciidoctor::Extensions::Preprocessor
|
8
8
|
def process doc, reader
|
9
9
|
doc.options[:preserve_conditionals] ?
|
10
|
-
(reader.extend IncludeDirectiveTracker) :
|
10
|
+
(reader.extend IncludeDirectiveTracker) :
|
11
|
+
(reader.extend ConditionalDirectiveTracker, IncludeDirectiveTracker)
|
11
12
|
end
|
12
13
|
end
|
13
14
|
end
|
@@ -8,7 +8,7 @@ module Asciidoctor::Reducer
|
|
8
8
|
inc_replacements.reverse_each do |it|
|
9
9
|
if (into = it[:into])
|
10
10
|
target_lines = inc_replacements[into][:lines]
|
11
|
-
# adds extra
|
11
|
+
# adds extra assurance that we're replacing the correct line
|
12
12
|
next unless target_lines[(idx = it[:lineno] - 1)] == it[:line]
|
13
13
|
end
|
14
14
|
lines = it[:lines]
|
@@ -19,7 +19,7 @@ module Asciidoctor::Reducer
|
|
19
19
|
end
|
20
20
|
target_lines[idx] = lines if target_lines
|
21
21
|
end
|
22
|
-
|
22
|
+
reduced_source_lines = inc_replacements[0][:lines].flatten
|
23
23
|
if doc.sourcemap
|
24
24
|
logger = ::Asciidoctor::LoggerManager.logger
|
25
25
|
opts = doc.options.merge logger: nil, parse: false, reduced: true
|
@@ -27,13 +27,13 @@ module Asciidoctor::Reducer
|
|
27
27
|
opts[:extension_registry] = ::Asciidoctor::Extensions::Registry.new ext_reg.groups
|
28
28
|
end
|
29
29
|
includes = doc.catalog[:includes]
|
30
|
-
doc = ::Asciidoctor.load
|
30
|
+
doc = ::Asciidoctor.load reduced_source_lines, opts
|
31
31
|
doc.catalog[:includes] = includes
|
32
32
|
doc.parse
|
33
33
|
::Asciidoctor::LoggerManager.logger = logger
|
34
34
|
else
|
35
|
-
|
36
|
-
doc.
|
35
|
+
reduced_source_lines.pop while reduced_source_lines[-1] == ''
|
36
|
+
doc.source_lines.replace reduced_source_lines
|
37
37
|
end
|
38
38
|
end
|
39
39
|
doc
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-reducer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Allen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -97,9 +97,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
97
|
version: '0'
|
98
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - "
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
102
|
+
version: '0'
|
103
103
|
requirements: []
|
104
104
|
rubygems_version: 3.3.7
|
105
105
|
signing_key:
|