asciidoctor-fixxrefs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/asciidoctor-fixxrefs +10 -0
- data/lib/asciidoctor-fixxrefs/version.rb +3 -0
- data/lib/asciidoctor-fixxrefs.rb +75 -0
- metadata +73 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0ab73993269d013802c8e0044e661a1f3f49aebc53ae358158274a3e3663e1a0
|
4
|
+
data.tar.gz: b6fb2cf444a6edeff5c21b0e453b83ff2b68ff8132373bd46056594380553a37
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c5f61c10558a340089540f9131394589230f7de4bc9b34d0c9a8f3c441c1786ddc4e3c1728d44f197979705030f4eaa2db3f23c0cab75d73c81fdb4804cad0e6
|
7
|
+
data.tar.gz: e1d68978c0d8f72d79adb56977bb37377d35946419292d347f1b3ef277b5b0cc57dc6ccc1f3c3b822ed658447ec92b9b5c1215a6a4fff3d03f3a3485f0f4aa4f
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# This executable is based on `bin/asciidoctor-pdf` from the
|
4
|
+
# asciidoctor/asciidoctor-pdf project. Please consult that file for
|
5
|
+
# potential updates.
|
6
|
+
|
7
|
+
require 'asciidoctor-multipage'
|
8
|
+
require 'asciidoctor-multipage/version'
|
9
|
+
require 'asciidoctor/cli'
|
10
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'asciidoctor'
|
3
|
+
require 'asciidoctor/cli'
|
4
|
+
require 'asciidoctor/converter'
|
5
|
+
require 'asciidoctor/converter/html5'
|
6
|
+
require 'asciidoctor/abstract_node'
|
7
|
+
|
8
|
+
class XrefConverter < (Asciidoctor::Converter.for 'html5')
|
9
|
+
register_for 'html5'
|
10
|
+
|
11
|
+
def compute_relative_url_path(from, to, hash)
|
12
|
+
|
13
|
+
return hash if to == from
|
14
|
+
|
15
|
+
from_path = Pathname.new(from).dirname
|
16
|
+
relative_path = Pathname.new(to).relative_path_from(from_path).to_s
|
17
|
+
relative_path + hash
|
18
|
+
end
|
19
|
+
|
20
|
+
def convert_inline_anchor node
|
21
|
+
|
22
|
+
case node.type
|
23
|
+
when :xref
|
24
|
+
#logger.warn %(anchor type: #{node.type})
|
25
|
+
#logger.warn %(anchor target: #{node.target})
|
26
|
+
#logger.warn %(attributes: #{node.attributes})
|
27
|
+
|
28
|
+
ref_spec = node.target
|
29
|
+
|
30
|
+
relative_source_path = node.document.attributes['relative_source_path']
|
31
|
+
#logger.warn %(relative_source_path: #{relative_source_path})
|
32
|
+
hash = ref_spec.index('#')
|
33
|
+
|
34
|
+
if hash
|
35
|
+
resource_spec = ref_spec[0...hash]
|
36
|
+
hash = ref_spec[hash..-1]
|
37
|
+
else
|
38
|
+
resource_spec = ref_spec
|
39
|
+
hash = ''
|
40
|
+
end
|
41
|
+
|
42
|
+
relative = compute_relative_url_path(relative_source_path, resource_spec, hash)
|
43
|
+
|
44
|
+
#logger.warn %(relative: #{relative})
|
45
|
+
|
46
|
+
if (path = node.attributes['path'])
|
47
|
+
attrs = (append_link_constraint_attrs node, node.role ? [%( class="#{node.role}")] : []).join
|
48
|
+
text = node.text || path
|
49
|
+
else
|
50
|
+
attrs = node.role ? %( class="#{node.role}") : ''
|
51
|
+
unless (text = node.text)
|
52
|
+
if Asciidoctor::AbstractNode === (ref = (@refs ||= node.document.catalog[:refs])[refid = node.attributes['refid']] || (refid.nil_or_empty? ? (top = get_root_document node) : nil))
|
53
|
+
if (@resolving_xref ||= (outer = true)) && outer
|
54
|
+
if (text = ref.xreftext node.attr 'xrefstyle', nil, true)
|
55
|
+
text = text.gsub DropAnchorRx, '' if text.include? '<a'
|
56
|
+
else
|
57
|
+
text = top ? '[^top]' : %([#{refid}])
|
58
|
+
end
|
59
|
+
@resolving_xref = nil
|
60
|
+
else
|
61
|
+
text = top ? '[^top]' : %([#{refid}])
|
62
|
+
end
|
63
|
+
else
|
64
|
+
text = %([#{refid}])
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
%(<a href="#{relative}"#{attrs}>#{text}</a>)
|
69
|
+
else
|
70
|
+
# Other anchor types can be handled as normal.
|
71
|
+
super
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: asciidoctor-fixxrefs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gabriel McGoldrick
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-08-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 12.3.3
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 12.3.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: asciidoctor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.10
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.10
|
41
|
+
description:
|
42
|
+
email:
|
43
|
+
executables:
|
44
|
+
- asciidoctor-fixxrefs
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- bin/asciidoctor-fixxrefs
|
49
|
+
- lib/asciidoctor-fixxrefs.rb
|
50
|
+
- lib/asciidoctor-fixxrefs/version.rb
|
51
|
+
homepage:
|
52
|
+
licenses: []
|
53
|
+
metadata: {}
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
requirements: []
|
69
|
+
rubygems_version: 3.1.6
|
70
|
+
signing_key:
|
71
|
+
specification_version: 4
|
72
|
+
summary: Asciidoctor fix xrefs
|
73
|
+
test_files: []
|