From: Jani Nikula <jani.nikula@intel.com>
To: Markus Heiser <markus.heiser@darmarit.de>
Cc: Jani Nikula <jani.nikula@intel.com>,
Daniel Vetter <daniel.vetter@ffwll.ch>,
Jonathan Corbet <corbet@lwn.net>,
Grant Likely <grant.likely@secretlab.ca>,
Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
Dan Allen <dan@opendevise.io>,
Russel Winder <russel@winder.org.uk>,
Keith Packard <keithp@keithp.com>,
LKML <linux-kernel@vger.kernel.org>,
linux-doc@vger.kernel.org, Hans Verkuil <hverkuil@xs4all.nl>
Subject: [PATCH 07/10] sphinx: cheesy script to convert .tmpl files
Date: Fri, 20 May 2016 16:39:38 +0300 [thread overview]
Message-ID: <258eebc2e71c28bf6aaf6ac5a45a6318b3a9419d.1463748027.git.jani.nikula@intel.com> (raw)
In-Reply-To: <cover.1463748027.git.jani.nikula@intel.com>
In-Reply-To: <cover.1463748027.git.jani.nikula@intel.com>
From: Jonathan Corbet <corbet@lwn.net>
This script uses pandoc to convert existing DocBook template files to RST
templates. A couple of sed scripts are need to massage things both before
and after the conversion, but the result is then usable with no hand
editing.
[Jani: Change usage to tmplcvt <in> <out>. Fix escaping for docproc
directives. Add support the new kernel-doc extension.]
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Documentation/sphinx/convert_template.sed | 14 ++++++++++++++
Documentation/sphinx/post_convert.sed | 19 +++++++++++++++++++
Documentation/sphinx/tmplcvt | 19 +++++++++++++++++++
3 files changed, 52 insertions(+)
create mode 100644 Documentation/sphinx/convert_template.sed
create mode 100644 Documentation/sphinx/post_convert.sed
create mode 100755 Documentation/sphinx/tmplcvt
diff --git a/Documentation/sphinx/convert_template.sed b/Documentation/sphinx/convert_template.sed
new file mode 100644
index 000000000000..d53bb8220a26
--- /dev/null
+++ b/Documentation/sphinx/convert_template.sed
@@ -0,0 +1,14 @@
+#
+# Pandoc doesn't grok <function> or <structname>, so convert them
+# ahead of time.
+#
+# Use "$bq" instead of "`" so that pandoc won't mess with it.
+#
+s%<function>\([^<(]\+\)()</function>%:c:func:$bq\1$bq%g
+s%<function>\([^<(]\+\)</function>%:c:func:$bq\1$bq%g
+s%<structname>struct *\([^<]\+\)</structname>%:ref:$bqstruct \1$bq%g
+s%<structname>\([^<]\+\)</structname>%:ref:$bqstruct \1$bq%g
+#
+# Wrap docproc directives in para and code blocks.
+#
+s%^\(!.*\)$%<para><code>DOCPROC: \1</code></para>%
diff --git a/Documentation/sphinx/post_convert.sed b/Documentation/sphinx/post_convert.sed
new file mode 100644
index 000000000000..ce17049f6a8e
--- /dev/null
+++ b/Documentation/sphinx/post_convert.sed
@@ -0,0 +1,19 @@
+#
+# pandoc thinks that both "_" needs to be escaped. Remove the extra
+# backslashes. Also put in proper backquotes now that pandoc won't quote
+# them.
+#
+s/$bq/`/g
+s/\\_/_/g
+#
+# Unwrap docproc directives.
+#
+s/^``DOCPROC: !E\(.*\)``$/.. kernel-doc:: \1\n :export:/
+s/^``DOCPROC: !I\(.*\)``$/.. kernel-doc:: \1\n :internal:/
+s/^``DOCPROC: !F\([^ ]*\) \(.*\)``$/.. kernel-doc:: \1\n :functions: \2/
+s/^``DOCPROC: !P\([^ ]*\) \(.*\)``$/.. kernel-doc:: \1\n :doc: \2/
+s/^``DOCPROC: \(!.*\)``$/.. WARNING: DOCPROC directive not supported: \1/
+#
+# Trim trailing whitespace.
+#
+s/[[:space:]]*$//
diff --git a/Documentation/sphinx/tmplcvt b/Documentation/sphinx/tmplcvt
new file mode 100755
index 000000000000..909a73065e0a
--- /dev/null
+++ b/Documentation/sphinx/tmplcvt
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+# Convert a template file into something like RST
+#
+# fix <function>
+# feed to pandoc
+# fix \_
+# title line?
+#
+
+in=$1
+rst=$2
+tmp=$rst.tmp
+
+cp $in $tmp
+sed --in-place -f convert_template.sed $tmp
+pandoc -s -S -f docbook -t rst -o $rst $tmp
+sed --in-place -f post_convert.sed $rst
+rm $tmp
--
2.1.4
next prev parent reply other threads:[~2016-05-20 13:40 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-20 13:39 [PATCH 00/10] Documentation/Sphinx Jani Nikula
2016-05-20 13:39 ` [PATCH 01/10] kernel-doc: fix use of uninitialized value Jani Nikula
2016-05-20 13:39 ` [PATCH 02/10] kernel-doc: support printing exported and non-exported symbols Jani Nikula
2016-05-20 13:39 ` [PATCH 03/10] Documentation/sphinx: add basic working Sphinx configuration and build Jani Nikula
2016-05-20 13:39 ` [PATCH 04/10] Documentation: add .gitignore Jani Nikula
2016-05-20 13:39 ` [PATCH 05/10] Documentation/sphinx: add Sphinx kernel-doc directive extension Jani Nikula
2016-06-03 20:35 ` Jonathan Corbet
2016-06-04 6:57 ` Markus Heiser
2016-05-20 13:39 ` [PATCH 06/10] Documentation/sphinx: configure the kernel-doc extension Jani Nikula
2016-05-20 13:39 ` Jani Nikula [this message]
2016-05-20 13:39 ` [PATCH 08/10] Documentation: add kernel hacking rst Jani Nikula
2016-05-20 13:39 ` [PATCH 09/10] Documentation: add kernel api rst Jani Nikula
2016-05-20 13:39 ` [PATCH 10/10] Documentation: moar files Jani Nikula
2016-05-29 20:33 ` [PATCH 00/10] Documentation/Sphinx Jani Nikula
2016-05-30 9:10 ` Daniel Vetter
2016-05-30 10:47 ` Markus Heiser
2016-05-30 14:46 ` Jani Nikula
2016-05-30 15:29 ` Daniel Vetter
2016-05-30 16:39 ` Markus Heiser
2016-05-30 20:05 ` Jani Nikula
2016-05-30 21:23 ` Mauro Carvalho Chehab
2016-05-31 10:16 ` Markus Heiser
2016-06-24 10:40 ` Mauro Carvalho Chehab
2016-06-27 6:15 ` Markus Heiser
2016-06-27 17:08 ` Mauro Carvalho Chehab
2016-06-29 12:41 ` Markus Heiser
2016-05-31 7:27 ` Markus Heiser
2016-05-31 8:07 ` Daniel Vetter
2016-05-31 9:39 ` Markus Heiser
2016-05-31 10:30 ` Jani Nikula
2016-05-31 11:12 ` Markus Heiser
2016-06-03 20:47 ` rst2pdf (was [PATCH 00/10] Documentation/Sphinx) Jonathan Corbet
2016-06-07 6:02 ` Markus Heiser
2016-06-07 6:44 ` Jani Nikula
2016-06-10 17:08 ` Markus Heiser
2016-06-03 21:04 ` [PATCH 00/10] Documentation/Sphinx Jonathan Corbet
2016-06-03 22:54 ` Daniel Vetter
2016-06-04 11:45 ` Jani Nikula
2016-06-01 1:07 ` Jonathan Corbet
2016-06-01 6:42 ` Daniel Vetter
2016-06-03 20:16 ` Jonathan Corbet
2016-06-03 20:24 ` Daniel Vetter
2016-06-03 20:27 ` Jonathan Corbet
2016-06-04 13:01 ` Jani Nikula
2016-06-04 12:54 ` Jani Nikula
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=258eebc2e71c28bf6aaf6ac5a45a6318b3a9419d.1463748027.git.jani.nikula@intel.com \
--to=jani.nikula@intel.com \
--cc=corbet@lwn.net \
--cc=dan@opendevise.io \
--cc=daniel.vetter@ffwll.ch \
--cc=grant.likely@secretlab.ca \
--cc=hverkuil@xs4all.nl \
--cc=keithp@keithp.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=markus.heiser@darmarit.de \
--cc=mchehab@osg.samsung.com \
--cc=russel@winder.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®