# -*- coding: iso-8859-1 -*-
"""
	newsreel.py - parser for UKC newsreel

	@copyright: 2006 by Fred Barnes <fred@frmb.org>
	@license: GNU GPL, see COPYING for details
"""

Dependencies = []

from MoinMoin import wikiutil
from MoinMoin.parser import wiki

import re

class Parser(wiki.Parser):

	def __init__ (self, raw, request, **kw):
		wiki.Parser.__init__ (self, raw, request)
		self.raw = raw
		self.request = request
		self.form = request.form
		self._ = request.getText

		# default settings
		self.filename = '/ARTICLES'
		self.firstitem = 1
		self.lastitem = 10

		self.args = kw.get('format_args', '')
		attrs, msg = wikiutil.parseAttributes(request, self.args)
		if attrs.get('filename'):
			self.filename = attrs.get('filename', '')[1:-1]
		if attrs.get('firstitem'):
			self.firstitem = attrs.get('firstitem', '')[1:-1]
		if attrs.get('lastitem'):
			self.lastitem = attrs.get('lastitem', '')[1:-1]


	def format (self, formatter):
		src = open (self.request.cfg.newsreel_dir + self.filename, "r").read ()
		if src:
			self.raw = src
			lines = self.raw.split ("\n")

			result = []
			lineno = 1
			while lines and (lineno < self.firstitem):
				line = lines.pop(0)
				lineno = lineno + 1
			while lines and (lineno < self.lastitem):
				line = lines.pop(0)
				if line.find (" ") > -1:
					(date,who,descr) = line.split (" ", 2)
					descr = re.sub (r'£', u'&pound;', descr)
					result.append (" * '''%s''' %s %s" % (date,who,descr)) 
				lineno = lineno + 1

			# now send to the wiki parser
			self.raw = "\n".join(result)
			wiki.Parser.format(self, formatter)

