Adding mapping Sitemap -> Link -> Page to deal with Content-Language
[treecutter.git] / src / tree-cutter.py
index 97ac6a2a65f15fdb7bf00c3fa09ba7c12b3f7ff2..0be43854431e635270704f59891bf8629db3ca9a 100755 (executable)
@@ -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()