From 3bd6fc73c8287c92f5d6a84a1e9e45e906ec36e7 Mon Sep 17 00:00:00 2001 From: infirit Date: Thu, 17 Jul 2014 12:18:35 +0200 Subject: docgen: Don't use stdin and stdout The encoding on stdin and stdout are usually ascii and may cause problems with writing unicode to it. Instead of this we open the file directly and avoid dealing with annoying unicode encode/decode errors. --- Makefile.am | 2 +- docgen.py | 31 ++++++++++++++++++++----------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index 8985128..e420332 100644 --- a/Makefile.am +++ b/Makefile.am @@ -10,7 +10,7 @@ caja-dropbox: caja-dropbox.in serializeimages.py chmod +x caja-dropbox caja-dropbox.1: caja-dropbox.txt.in caja-dropbox docgen.py - python docgen.py $(PACKAGE_VERSION) < caja-dropbox.txt.in > caja-dropbox.txt + python docgen.py $(PACKAGE_VERSION) caja-dropbox.txt.in caja-dropbox.txt $(RST2MAN) caja-dropbox.txt > caja-dropbox.1 SUBDIRS = data src diff --git a/docgen.py b/docgen.py index 2ed8ad9..e1afa17 100644 --- a/docgen.py +++ b/docgen.py @@ -1,25 +1,34 @@ +from __future__ import unicode_literals import sys import datetime +import codecs # heeeheee env = {"__name__":"__notmain__"} execfile("caja-dropbox", env) commands = env["commands"] -f = open("AUTHORS", "r") -authors = '| ' + f.read().replace('\n', '\n| ') -f.close() +with codecs.open("AUTHORS", "r", "utf-8") as afile: + authors = '| ' + afile.read().replace('\n', '\n| ') + +with codecs.open(sys.argv[2], "r", encoding="utf-8") as infile: + instr = infile.read() formatted_commands = "" for cmd in commands: split = commands[cmd].__doc__.split('\n', 2) - formatted_commands += split[1].decode('ascii').replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``") - formatted_commands += split[2].decode('ascii').replace('\n', '\n | ') + formatted_commands += split[1].replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``") + formatted_commands += split[2].replace('\n', '\n | ') formatted_commands += '\n\n' -sys.stdout.write(sys.stdin.read().replace\ - ('@AUTHORS@', authors).replace\ - ('@DATE@', datetime.date.today().isoformat()).replace\ - ('@PACKAGE_VERSION@', sys.argv[1]).replace\ - ('@SYNOPSIS@', '| '+'\n| '.join(commands[cmd].__doc__.split('\n', 2)[1].decode('ascii').replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``") for cmd in commands)).replace\ - ('@COMMANDS@', formatted_commands)) +replace = {'@AUTHORS@': authors, + '@DATE@': datetime.date.today().isoformat(), + '@PACKAGE_VERSION@': sys.argv[1], + '@SYNOPSIS@': '| '+'\n| '.join(commands[cmd].__doc__.split('\n', 2)[1].replace(cmd, "`%s`" % cmd).replace("dropbox", "``dropbox``") for cmd in commands), + '@COMMANDS@': formatted_commands} + +for r in replace.keys(): + instr = instr.replace(r, replace[r]) + +with codecs.open(sys.argv[3], "w", encoding="utf-8") as outfile: + outfile.write(instr) -- cgit v1.2.1