From 9dcbd210f76714e9ccf9426e4c78726a8a3ba76e Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Wed, 16 Apr 2014 10:44:33 -0700 Subject: Add a phpbb forum backend to the news generator --- _news_colors.py | 41 ++++++++++++++++++++++++++++++++++++++++- news.py | 15 +++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/_news_colors.py b/_news_colors.py index 329a6b8..3fdf2b2 100644 --- a/_news_colors.py +++ b/_news_colors.py @@ -22,7 +22,7 @@ import cgi -__all__ = ['make_html_colors_dict', 'make_txt_colors_dict'] +__all__ = ['make_html_colors_dict', 'make_txt_colors_dict', 'make_forum_colors_dict'] class Color(object): __slots__ = ('txt', 'rgb') @@ -82,6 +82,45 @@ def make_html_colors_dict(): r['/' + k] = '' return r + +class ForumDate(object): + __slots__ = () + def __format__(self, date): + return '[i]%s[/i]' % date + +class ForumLink(object): + __slots__ = () + def __format__(self, target): + return '[url=%s]%s[/url]' % (target, target) + +class ForumSignature(object): + __slots__ = () + def __format__(self, author): + return '-[i]%s[/i]' % author + +class ForumTitle(object): + __slots__ = () + def __format__(self, title): + # no color here + # (we really need someone to do CSS) + return 'put this in the post title: %s' % title + +def make_forum_colors_dict(): + r = { + 'date': ForumDate(), + 'link': ForumLink(), + 'author': ForumSignature(), + 'title': ForumTitle(), + 'ul' : '[list]', + '/ul': '[/list]', + 'li' : '[*]', + '/li': '', + } + for k, v in color_dict.items(): + r[k] = '[color=#%06x]' % v.rgb + r['/' + k] = '[/color]' + return r + # Here be dragons def make_txt_colors_dict(): diff --git a/news.py b/news.py index 4391714..7c9056e 100755 --- a/news.py +++ b/news.py @@ -79,9 +79,24 @@ class TxtWriter(BasicWriter): #self.stream.write('Did you really read down this far?\n') pass +class ForumWriter(BasicWriter): + # unlike the other writers, the forum writer only generates the latest + __slots__ = ('done') + def start(self): + self.done = False + def put(self, entry): + if self.done: + return + entry = entry.format(**colors.make_forum_colors_dict()) + self.stream.write(entry) + self.done = True + def finish(self): + pass + def create_writers(outdir): yield TxtWriter(os.path.join(outdir, 'news.txt')) yield HtmlWriter(os.path.join(outdir, 'news.html')) + yield ForumWriter(os.path.join(outdir, 'news.phpbb.txt')) def main(outdir, indir=None): if indir is None: -- cgit v1.2.3-70-g09d2