# recent changes with diffs
Dependencies = ["time"]

from MoinMoin import util, wikiutil, config
from MoinMoin.Page import Page

class RSStoWiki:
    def __init__(self, macro):
        self.macro = macro
        self.fmt = macro.formatter
	url = "http://wiki.personaltelco.net/index.cgi/RecentChanges?action=rss_rc&unique=1&ddiffs=1"
        import feedparser
        self.f = feedparser.parse(url)
        self.result = []

    def get_link(self, link):
        self.result.append(self.fmt.url(on=1, href=link) + \
                           self.fmt.icon('diff') + \
			   self.fmt.url(on=0))

    def get_entry_header(self, title):
        import re
        tit = re.match('(.{30})', title)
	if tit:
	    bigtits = tit.group(0)
	    tits = "<i>title too long</i>"
	else:
	    tits = title
	self.result.append(self.fmt.url(on=1, href='http://wiki.personaltelco.net/index.cgi/'+title) + \
			   self.fmt.rawHTML(" "+tits) + \
                           self.fmt.url(on=0) + \
                           self.fmt.rawHTML('<br>'))

    def get_paragraph(self, text):
        self.result.append(self.fmt.paragraph(on=1) + \
                           self.fmt.text(text) + \
                           self.fmt.paragraph(on=0))

    def get_entry_body(self, body):
        self.result.append(self.fmt.rawHTML('&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://wiki.personaltelco.net/images/comment2.png">&nbsp;'))
        self.result.append(self.fmt.text(body))
        self.result.append(self.fmt.rawHTML('<br>'))

    def get_description(self):
        if not self.f.feed.has_key('description'):
            return
        self.get_paragraph(self.f.feed.description)

    def get_entries(self):
        self.f.entries = self.f.entries[:int(5)]
	for entry in self.f.entries:
            if entry.has_key('link'):
                self.get_link(entry.link)
            if entry.has_key('title'):
                self.get_entry_header(entry.title)
            if entry.has_key('description'):
                self.get_entry_body(entry.description)


    def get_output(self):
	self.get_entries()
        return ''.join(self.result)

def execute(macro, args):
      rss = RSStoWiki(macro)
      return rss.get_output()
