summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2023-05-10 23:33:28 -0600
committerDan Allen <dan.j.allen@gmail.com>2023-05-11 00:33:44 -0600
commitab28cbe5f3ce21aae64831c5f7d335e559c98b57 (patch)
tree340767cc316cebe117b02c5518b5695885b0d5e6 /lib
parentb566ced6fc487956e1f33f17f41bdbd67a3a4695 (diff)
backport fix for #4452 enclose reftext tag in article tag in DocBook output for man page
Diffstat (limited to 'lib')
-rw-r--r--lib/asciidoctor/converter/docbook5.rb30
1 files changed, 16 insertions, 14 deletions
diff --git a/lib/asciidoctor/converter/docbook5.rb b/lib/asciidoctor/converter/docbook5.rb
index 1111f0c7..bde2ff06 100644
--- a/lib/asciidoctor/converter/docbook5.rb
+++ b/lib/asciidoctor/converter/docbook5.rb
@@ -39,11 +39,25 @@ class Converter::DocBook5Converter < Converter::Base
result << ((node.attr? 'sectnumlevels') ? %(<?asciidoc-numbered maxdepth="#{node.attr 'sectnumlevels'}"?>) : '<?asciidoc-numbered?>') if node.attr? 'sectnums'
lang_attribute = (node.attr? 'nolang') ? '' : %( xml:lang="#{node.attr 'lang', 'en'}")
if (root_tag_name = node.doctype) == 'manpage'
- root_tag_name = 'refentry'
+ manpage = true
+ root_tag_name = 'article'
end
root_tag_idx = result.size
id = node.id
result << (document_info_tag node) unless node.noheader
+ if manpage
+ result << '<refentry>'
+ result << '<refmeta>'
+ result << %(<refentrytitle>#{node.apply_reftext_subs node.attr 'mantitle'}</refentrytitle>) if node.attr? 'mantitle'
+ result << %(<manvolnum>#{node.attr 'manvolnum'}</manvolnum>) if node.attr? 'manvolnum'
+ result << %(<refmiscinfo class="source">#{node.attr 'mansource', '&#160;'}</refmiscinfo>)
+ result << %(<refmiscinfo class="manual">#{node.attr 'manmanual', '&#160;'}</refmiscinfo>)
+ result << '</refmeta>'
+ result << '<refnamediv>'
+ result += (node.attr 'mannames').map {|n| %(<refname>#{n}</refname>) } if node.attr? 'mannames'
+ result << %(<refpurpose>#{node.attr 'manpurpose'}</refpurpose>) if node.attr? 'manpurpose'
+ result << '</refnamediv>'
+ end
unless (docinfo_content = node.docinfo :header).empty?
result << docinfo_content
end
@@ -51,6 +65,7 @@ class Converter::DocBook5Converter < Converter::Base
unless (docinfo_content = node.docinfo :footer).empty?
result << docinfo_content
end
+ result << '</refentry>' if manpage
id, node.id = node.id, nil unless id
# defer adding root tag in case document ID is auto-generated on demand
result.insert root_tag_idx, %(<#{root_tag_name} xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0"#{lang_attribute}#{common_attributes id}>)
@@ -702,19 +717,6 @@ class Converter::DocBook5Converter < Converter::Base
end
result << '</info>'
- if doc.doctype == 'manpage'
- result << '<refmeta>'
- result << %(<refentrytitle>#{doc.apply_reftext_subs doc.attr 'mantitle'}</refentrytitle>) if doc.attr? 'mantitle'
- result << %(<manvolnum>#{doc.attr 'manvolnum'}</manvolnum>) if doc.attr? 'manvolnum'
- result << %(<refmiscinfo class="source">#{doc.attr 'mansource', '&#160;'}</refmiscinfo>)
- result << %(<refmiscinfo class="manual">#{doc.attr 'manmanual', '&#160;'}</refmiscinfo>)
- result << '</refmeta>'
- result << '<refnamediv>'
- result += (doc.attr 'mannames').map {|n| %(<refname>#{n}</refname>) } if doc.attr? 'mannames'
- result << %(<refpurpose>#{doc.attr 'manpurpose'}</refpurpose>) if doc.attr? 'manpurpose'
- result << '</refnamediv>'
- end
-
result.join LF
end