From: Thomas Weißschuh Date: Sat, 7 Jan 2023 02:10:27 +0000 (+0000) Subject: po-man: remove unicode dash from manpage NAME section X-Git-Tag: v2.39-rc1~176^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b4684b50d1cf670e0bc1b4063b1412bed33ed5b6;p=thirdparty%2Futil-linux.git po-man: remove unicode dash from manpage NAME section Translators seem to like using unicode dashes. When used in the NAME section of a manpage, asciidoctor will break. Instead of trying to force all translators to keep this in mind, add an extension to asciidoctor that takes care of this. --- diff --git a/po-man/Makefile.am b/po-man/Makefile.am index ea9103877e..c40e74793c 100644 --- a/po-man/Makefile.am +++ b/po-man/Makefile.am @@ -33,7 +33,9 @@ asciidoc_man_cmd = $(ASCIIDOCTOR) \ -a 'release-version=$(VERSION)' \ -a 'package-docdir=$(docdir)' \ -a 'VERSION=$(VERSION)' \ - -a 'ADJTIME_PATH=$(ADJTIME_PATH)' + -a 'ADJTIME_PATH=$(ADJTIME_PATH)' \ + --load-path '$(top_srcdir)/tools' \ + --require asciidoctor-unicodeconverter gen-mans: gen-trans @for l in $(PO_LANGS); do \ diff --git a/tools/Makemodule.am b/tools/Makemodule.am index 59f9803fc7..dbda625872 100644 --- a/tools/Makemodule.am +++ b/tools/Makemodule.am @@ -55,4 +55,5 @@ EXTRA_DIST += \ tools/config-gen.d/non-widechar.conf \ tools/config-gen.d/non-libmount.conf \ \ - tools/asciidoctor-includetracker.rb + tools/asciidoctor-includetracker.rb \ + tools/asciidoctor-unicodeconverter.rb diff --git a/tools/asciidoctor-unicodeconverter.rb b/tools/asciidoctor-unicodeconverter.rb new file mode 100644 index 0000000000..344eeb8a97 --- /dev/null +++ b/tools/asciidoctor-unicodeconverter.rb @@ -0,0 +1,39 @@ +# Copyright (C) 2023 Thomas Weißschuh +# Extension for asciidoctor to remove unicode dash in first section of manpage + +module UnicodeConverter + BEFORE_NAME_SECTION = 1 + IN_NAME_SECTION = 2 + AFTER_NAME_SECTION = 3 + + class Preprocessor < Asciidoctor::Extensions::Preprocessor + def process document, reader + lines = reader.read_lines + state = BEFORE_NAME_SECTION + lines.map! do |line| + if state = IN_NAME_SECTION + line.sub! " \u2013 ", " - " + line.sub! " \u2014 ", " - " + end + + if line.start_with? '== ' + if state == BEFORE_NAME_SECTION + state = IN_NAME_SECTION + else if state == IN_NAME_SECTION + state = AFTER_NAME_SECTION + end + end + end + + line + end + reader.restore_lines lines + reader + end + end + + Asciidoctor::Extensions.register do + preprocessor Preprocessor + end + +end