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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de2091cf932e336783f5622831333d3461fc8ee8cf1b47431fe48ba257e759ef
4
- data.tar.gz: 07e125f547be6892cba77ba5af468ab86a5b37009abe9da4167f3a2f71f45a5e
3
+ metadata.gz: b5316a1e0a22871599401171fc8f5104e4a03cf09598eacee8670153354e6050
4
+ data.tar.gz: 02cc09578b9798e53f3e8a23f81b2e051ef2b6714c39bee99d043a6cbee2acc5
5
5
  SHA512:
6
- metadata.gz: 9bfa607af1fe8339e4b8925d5e68d793d992c069b674ee40d00234b8e06c254b0d473f7ec4db140b1c95f4446218d347661872eaa72e306785fa9e6d8f593f13
7
- data.tar.gz: 0ed27e9fbe39fd738cb7a48b22b2f5ea1d967a8cb0077e79dd4ec0e86a3328d9e546f249fb0debda4984485bcf2538905ba8b5da44485b79cd50e2e05001780a
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.0-rc.1, 2022-04-22
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 --pre
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
- Reduces a composite AsciiDoc document containing includes and conditionals to a single AsciiDoc document.
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
- cond_lineno = @lineno
8
+ directive_lineno = @lineno
9
9
  result = super
10
10
  return result if @skipping && skip_active
11
- drop = @include_replacements.current[:drop] ||= []
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..cond_lineno))
16
+ drop.push(*(drop.pop..directive_lineno))
15
17
  else
16
- drop << cond_lineno
18
+ drop << directive_lineno
17
19
  end
18
- elsif depth_change > 0 || cond_lineno == @lineno
19
- drop << cond_lineno
20
+ elsif depth_change > 0 || directive_lineno == @lineno
21
+ drop << directive_lineno
20
22
  else
21
- drop << [cond_lineno, text]
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
- inc_lineno = @lineno # we're currently on the include line, which is 1-based
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
- inc_lineno == @lineno && (unresolved = ln.start_with? 'link:')
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 inc_lineno, (unresolved ? [ln] : []), unresolved
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
- inc_lineno = @lineno - 1 # we're below the include line, which is 1-based
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 inc_lineno, (@include_stack.size > prev_inc_depth ? lines : [])
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) : (reader.extend ConditionalDirectiveTracker, 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 bit of assurance that we're replacing the correct line
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
- source_lines = inc_replacements[0][:lines].flatten
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 source_lines, opts
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
- source_lines.pop while (source_lines[-1] || :eof).empty?
36
- doc.reader.source_lines = source_lines
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module Reducer
5
- VERSION = '1.0.0-rc.1'
5
+ VERSION = '1.0.2'
6
6
  end
7
7
  end
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.0-rc.1
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-04-22 00:00:00.000000000 Z
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: 1.3.1
102
+ version: '0'
103
103
  requirements: []
104
104
  rubygems_version: 3.3.7
105
105
  signing_key: