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 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,3 @@
1
+ module XrefConverter
2
+ VERSION = "0.0.1"
3
+ end
@@ -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: []