asciidoctor-fixxrefs 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|