From 6d43dd78472d987405abf540be1744dbc7ed4576 Mon Sep 17 00:00:00 2001 From: Fredrik Unger Date: Wed, 6 Apr 2011 22:04:38 +0200 Subject: [PATCH] Adding mapping Sitemap -> Link -> Page to deal with Content-Language and other representation of a page at the same link. Tree does not have an iterator, hence the link set will not currently work. The Page object will do conversion, and templating, preparing menues as all that work is language dependant. Link matches sitemap.txt entries and matches the Directory object. --- src/tree-cutter.py | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/tree-cutter.py b/src/tree-cutter.py index 97ac6a2..0be4385 100755 --- a/src/tree-cutter.py +++ b/src/tree-cutter.py @@ -10,6 +10,7 @@ import time import argparse import shutil import pygraphviz as pgv +import glob from amara import bindery from amara.xslt import transform from Cheetah.Template import Template @@ -70,11 +71,36 @@ class Directory(): return set(self._tree) class Page(): + """Class representing a version of a webpage""" + def __init__(self,page): + self._file = page[1] + self._lang = page[0] + self._doc = None + self._resources = [] + self._title = None + self._menu = None + self._rendered_article = None + +class Link(): """Class representing a webpage on the site""" def __init__(self,link): self._link = link - self._resources = [] - self._script = 0 + # find the representations of the link. + self._pages = [] + path = link + if self._link[-1] == '/': + path = path+'index' + lang = self._scan_languages(path) + for l in lang: + self._pages.append(Page(l)) + + def _scan_languages(self,path): + lang = [] + for l in glob.glob('.'+path+'*'): + ls = l.split('.') + if len(ls) > 3 and ls[3] == 'xml': + lang.append((ls[2],l)) + return lang def link(self): return self._link @@ -133,14 +159,11 @@ class Sitemap(): """Class keeping the internal site structure""" def __init__(self): self._file = 'sitemap.txt' - self._pages = [] self._tree = Trie() - def add_page(self, link): - page = Page(link) - self._pages.append(page) + def add_link(self, link): tokens = filter(None,re.split(r'(^/\w*/|\w*/)',link)) - self._tree.add(tokens,page) + self._tree.add(tokens,Link(link)) def read_map(self): try: @@ -148,15 +171,12 @@ class Sitemap(): sml = f.read().split() f.close() for line in sml: - self.add_page(line) + self.add_link(line) except IOError, what_error: print 'INFO: Could not read sitemap.txt - one will be created' def set(self): - return set(page.link() for page in self._pages) - - def pages(self): - return self._pages + return set(link.link() for link in self._tree) def graph(self): self._tree.graph() -- 2.30.2