[ovs-dev] [PATCH 7/8] xml2nroff: New program to generate a manpage from XML input.

Russell Bryant rbryant at redhat.com
Thu Feb 19 17:24:42 UTC 2015


On 02/19/2015 03:12 AM, Ben Pfaff wrote:
> I really can't stand nroff syntax.  This makes it possible to install
> nroff but write in a more sensible XML syntax.
> 
> The following commit adds the first user.
> 
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
>  Makefile.am         |   1 +
>  build-aux/xml2nroff | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 111 insertions(+)
>  create mode 100755 build-aux/xml2nroff
> 
> diff --git a/Makefile.am b/Makefile.am
> index 28496b3..0480d20 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -104,6 +104,7 @@ EXTRA_DIST = \
>  	build-aux/dist-docs \
>  	build-aux/sodepends.pl \
>  	build-aux/soexpand.pl \
> +	build-aux/xml2nroff \
>  	$(MAN_FRAGMENTS) \
>  	$(MAN_ROOTS) \
>  	Vagrantfile
> diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff
> new file mode 100755
> index 0000000..817abc6
> --- /dev/null
> +++ b/build-aux/xml2nroff
> @@ -0,0 +1,110 @@
> +#! /usr/bin/python

A license header would be good here.

> +if __name__ == "__main__":
> +    try:

Instead of the double nesting here, I would move the outer one to just
around the part that could raise error.Error, which appears to be only
the call to manpage_to_nroff().

> +        try:
> +            options, args = getopt.gnu_getopt(sys.argv[1:], 'hV',
> +                                              ['version=', 'help'])
> +        except getopt.GetoptError, geo:
> +            sys.stderr.write("%s: %s\n" % (argv0, geo.msg))
> +            sys.exit(1)
> +
> +        er_diagram = None
> +        title = None
> +        version = None
> +        for key, value in options:
> +            if key == '--version':
> +                version = value
> +            elif key in ['-h', '--help']:
> +                usage()
> +            else:
> +                sys.exit(0)
> +
> +        if len(args) != 1:
> +            sys.stderr.write("%s: exactly 1 non-option arguments required "
> +                             "(use --help for help)\n" % argv0)
> +            sys.exit(1)
> +
> +        s = manpage_to_nroff(args[0], version)
> +        for line in s.split("\n"):

can also use:

    for line in s.splitlines():
        ...

> +            line = line.strip()
> +            if len(line):

also equivalent:

    if line:

> +                print line
> +
> +    except error.Error, e:
> +        sys.stderr.write("%s: %s\n" % (argv0, e.msg))
> +        sys.exit(1)
> +
> +# Local variables:
> +# mode: python
> +# End:
> 

-- 
Russell Bryant



More information about the dev mailing list