path: adding support for . in directoies
[treecutter.git] / treecutter / link.py
1 #!/usr/bin/python
2 import re
3 import glob
4 from treecutter.page import Page
5
6 class Link():
7     """Class representing a webpage on the site"""
8     def __init__(self,link):
9         self._link = link
10         # find the representations of the link.
11         self._pages = []
12         self._langregexp = re.compile('.*\.(\w\w)\.xml')
13         path = link
14         if self._link[-1] == '/':
15             path = path+'index'
16         lang = self._scan_languages(path)
17         for l in lang:
18             self._pages.append(Page(self,l))
19
20     def add_page(self,l):
21         self._pages.append(Page(self,l))
22
23     def _scan_languages(self,path):
24         lang = []
25         for l in  glob.glob('.'+path+'*.xml'):
26             langcode = self._langregexp.search(l).group(1)
27             lang.append((langcode,l))
28         return lang
29
30     def link(self):
31         return self._link
32
33     def prepare(self):
34         for page in self._pages:
35             page.prepare()
36
37     def languages(self):
38         p = []
39         for page in self._pages:
40             p.append(page.language())
41         return p
42
43     def render(self, style):
44         for page in self._pages:
45             page.render(style)
46
47     def template(self,sitemap,style,tdir):
48         for page in self._pages:
49             page.template(sitemap,style,tdir)
50
51     def page(self,lang):
52         for page in self._pages:
53             if page.language()==lang:
54                 return page
55         return None
56
57     def resources(self):
58         res  = set()
59         for page in self._pages:
60             res = res.union(page.resources())
61         return res