diff options
| author | Dan Allen <dan.j.allen@gmail.com> | 2023-05-10 23:33:28 -0600 |
|---|---|---|
| committer | Dan Allen <dan.j.allen@gmail.com> | 2023-05-11 00:33:44 -0600 |
| commit | ab28cbe5f3ce21aae64831c5f7d335e559c98b57 (patch) | |
| tree | 340767cc316cebe117b02c5518b5695885b0d5e6 /lib | |
| parent | b566ced6fc487956e1f33f17f41bdbd67a3a4695 (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.rb | 30 |
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', ' '}</refmiscinfo>) + result << %(<refmiscinfo class="manual">#{node.attr 'manmanual', ' '}</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', ' '}</refmiscinfo>) - result << %(<refmiscinfo class="manual">#{doc.attr 'manmanual', ' '}</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 |
