X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=devel%2Fnmbug%2Fnmbug-status;h=ef7169a6f4cb642f54155b9d0682794606df6cf9;hb=320d4a856eca6f7d4363b3465e7032e658913ece;hp=6aa258325fa285c3854cb10c95a7540efa196b08;hpb=98cb4779c02a07c0405073ca4a1e8a9006844904;p=notmuch diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status index 6aa25832..ef7169a6 100755 --- a/devel/nmbug/nmbug-status +++ b/devel/nmbug/nmbug-status @@ -5,7 +5,6 @@ # dependencies # - python 2.6 for json # - argparse; either python 2.7, or install separately -# - collections.OrderedDict; python 2.7 from __future__ import print_function from __future__ import unicode_literals @@ -14,7 +13,6 @@ import codecs import collections import datetime import email.utils -import locale try: # Python 3 from urllib.parse import quote except ImportError: # Python 2 @@ -22,14 +20,35 @@ except ImportError: # Python 2 import json import argparse import os +import re import sys import subprocess +import xml.sax.saxutils -_ENCODING = locale.getpreferredencoding() or sys.getdefaultencoding() +_ENCODING = 'UTF-8' _PAGES = {} +if not hasattr(collections, 'OrderedDict'): # Python 2.6 or earlier + class _OrderedDict (dict): + "Just enough of a stub to get through Page._get_threads" + def __init__(self, *args, **kwargs): + super(_OrderedDict, self).__init__(*args, **kwargs) + self._keys = [] # record key order + + def __setitem__(self, key, value): + super(_OrderedDict, self).__setitem__(key, value) + self._keys.append(key) + + def __values__(self): + for key in self._keys: + yield self[key] + + + collections.OrderedDict = _OrderedDict + + def read_config(path=None, encoding=None): "Read config from json file" if not encoding: @@ -70,7 +89,7 @@ class Page (object): byte_stream = sys.stdout.buffer except AttributeError: # Python 2 byte_stream = sys.stdout - stream = codecs.getwriter(encoding='UTF-8')(stream=byte_stream) + stream = codecs.getwriter(encoding=_ENCODING)(stream=byte_stream) self._write_header(views=views, stream=stream) for view in views: self._write_view(database=database, view=view, stream=stream) @@ -150,24 +169,32 @@ class Page (object): class HtmlPage (Page): + _slug_regexp = re.compile('\W+') + def _write_header(self, views, stream): super(HtmlPage, self)._write_header(views=views, stream=stream) stream.write('
\n') if 'comment' in view: stream.write(view['comment']) stream.write('\n') for line in [ 'The view is generated from the following query:', - '
', + '', + '', + ' ', + '', ]: stream.write(line) stream.write('\n') @@ -177,17 +204,22 @@ class HtmlPage (Page): return stream.write('', + '
', view['query-string'], - '
{date}\n' - ' | {message-id-term}\n' - ' |
{from}\n' - ' | {subject}\n' - ' |
Generated: {date}
For more infomation see nmbug
+