X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=devel%2Fnmbug%2Fnmbug-status;h=6a156af28250e5309a968d1791be38da29c2e00a;hb=aa32d2579b0aa4c8c8a31a1d6060445b254b2be2;hp=6aa258325fa285c3854cb10c95a7540efa196b08;hpb=98cb4779c02a07c0405073ca4a1e8a9006844904;p=notmuch diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status index 6aa25832..6a156af2 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 @@ -22,6 +21,7 @@ except ImportError: # Python 2 import json import argparse import os +import re import sys import subprocess @@ -30,6 +30,25 @@ _ENCODING = locale.getpreferredencoding() or sys.getdefaultencoding() _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: @@ -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') def _write_view_header(self, view, stream): - stream.write('

{title}

\n'.format(**view)) + stream.write('

{title}

\n'.format(**view)) + 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:', - '

', + '

', + '

', + ' ', view['query-string'], - '

', + ' ', + '

', ]: stream.write(line) stream.write('\n') @@ -179,12 +206,14 @@ class HtmlPage (Page): for thread in threads: for message_display_data in thread: stream.write(( - '{date}\n' - '{message-id-term}\n' - '\n' - '{from}\n' - '{subject}\n' - '\n' + '\n' + ' {date}\n' + ' {message-id-term}\n' + '\n' + '\n' + ' {from}\n' + ' {subject}\n' + '\n' ).format(**message_display_data)) if thread != threads[-1]: stream.write('
\n') @@ -204,20 +233,24 @@ class HtmlPage (Page): ).format(**d) return (running_data, display_data) + def _slug(self, string): + return self._slug_regexp.sub('-', string) + _PAGES['text'] = Page() _PAGES['html'] = HtmlPage( - header=''' - - + header=''' + Notmuch Patches

Notmuch Patches

+

Generated: {date}
For more infomation see
nmbug +

Views

'''.format(date=datetime.datetime.utcnow().date()), footer='\n\n',