Use some pre- and post-processing to handle the "![EIFPCD]" docproc
directives in the DocBook, and let pandoc do the rest. Manual editing
will be required, but this will give a big jump start.

The asciidoc result would be nicer without the pandoc --no-wrap option,
but unfortunately pandoc also wraps the docproc directives within
<pre></pre> tags, breaking their post-processing. There's probably a way
around this, but I couldn't be bothered for this proof of concept.

The post-processing converts the directives to the new format of having
comma separated filename suffixes describe the content to be included.

Signed-off-by: Jani Nikula <jani.nik...@intel.com>
---
 scripts/tmpl2asciidoc | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100755 scripts/tmpl2asciidoc

diff --git a/scripts/tmpl2asciidoc b/scripts/tmpl2asciidoc
new file mode 100755
index 000000000000..092400cc702c
--- /dev/null
+++ b/scripts/tmpl2asciidoc
@@ -0,0 +1,39 @@
+#!/bin/bash
+# a crude converter from DocBook tmpl in STDIN to AsciiDoc in STDOUT
+
+sed 's/^\(!.*\)/<pre>\1<\/pre>/' |\
+       pandoc --atx-headers --no-wrap -f docbook -t asciidoc |\
+       while read line; do
+               case "$line" in
+                       !E*)
+                               file=${line#!?}
+                               echo "include::$file,export[]"
+                               ;;
+                       !I*)
+                               file=${line#!?}
+                               echo "include::$file,internal[]"
+                               ;;
+                       !F*)
+                               file=${line#!?}
+                               file=${file%% *}
+                               functions=${line#* }
+                               for f in $functions; do
+                                       echo "include::$file,function,$f[]"
+                               done
+                               ;;
+                       !P*)
+                               file=${line#!?}
+                               file=${file%% *}
+                               doc=${line#* }
+                               doc=${doc//[^A-Za-z0-9]/_}
+                               echo "include::$file,doc,$doc[]"
+                               ;;
+                       !C*|!D*)
+                               echo "$0: WARNING: unsupported: $line" >&2
+                               echo "// $line"
+                               ;;
+                       *)
+                               echo -E "$line"
+                               ;;
+               esac
+       done
-- 
2.1.4

Reply via email to