From ae6b9eb2e16b570c39666fb4dea2e9222a3c2d8d Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Wed, 23 Jan 2013 18:15:14 -0800 Subject: Implement news generation --- tools/news.py | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 tools/news.py (limited to 'tools/news.py') diff --git a/tools/news.py b/tools/news.py new file mode 100755 index 00000000..53350ace --- /dev/null +++ b/tools/news.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +## news.py - Generates news. +## +## Copyright © 2012 Ben Longbons +## +## This file is part of The Mana World +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . + + +from __future__ import print_function + +import sys +import os +from abc import ABCMeta, abstractmethod + +import _news_colors as colors + +class BasicWriter(object): + __slots__ = ('stream') + __metaclass__ = ABCMeta + def __init__(self, outfile): + self.stream = open(outfile, 'w') + + @abstractmethod + def start(self): + pass + + @abstractmethod + def put(self, entry): + pass + + @abstractmethod + def finish(self): + pass + +class HtmlWriter(BasicWriter): + __slots__ = () + def start(self): + self.stream.write('\n') + #self.stream.write('
\n')
+        pass
+
+    def put(self, entry):
+        self.stream.write('
\n') + entry = entry.replace('\n\n', '\n

\n') + entry = entry.format(**colors.make_html_colors_dict()) + self.stream.write(entry) + self.stream.write('

\n') + + def finish(self): + #self.stream.write('
\n') + pass + +class TxtWriter(BasicWriter): + __slots__ = () + def start(self): + pass + def put(self, entry): + entry = entry.replace('\n\n', '\n \n') + entry = entry.format(**colors.make_txt_colors_dict()) + self.stream.write(entry) + self.stream.write('\n\n') + def finish(self): + # DO NOT REMOVE + #self.stream.write('Did you really read down this far?\n') + pass + +def create_writers(outdir): + yield TxtWriter(os.path.join(outdir, 'news.txt')) + yield HtmlWriter(os.path.join(outdir, 'news.html')) + +def main(outdir, indir=None): + if indir is None: + indir = os.path.join(outdir, 'news.d') + + out = list(create_writers(outdir)) + for s in out: + s.start() + for entry in sorted(os.listdir(indir), reverse=True): + if not entry.endswith('.txt'): + continue + e = open(os.path.join(indir, entry)).read() + for s in out: + s.put(e) + for s in out: + s.finish() + +if __name__ == '__main__': + main(*sys.argv[1:]) -- cgit v1.2.3-60-g2f50