Refactoring out every class into separate files. main,tools and const are not classes.
[treecutter.git] / treecutter / link.py
1 #!/usr/bin/python
2 import os
3 import fnmatch
4 import subprocess
5 import amara
6 import re
7 import tempfile
8 import errno
9 import time
10 import argparse
11 import shutil
12 import pygraphviz as pgv
13 import glob
14 import gettext
15 import shutil
16 from amara import bindery
17 from amara.xslt import transform
18 from Cheetah.Template import Template
19
20 class Link():
21     """Class representing a webpage on the site"""
22     def __init__(self,link):
23         self._link = link
24         # find the representations of the link.
25         self._pages = []
26         path = link
27         if self._link[-1] == '/':
28             path = path+'index'
29         lang = self._scan_languages(path)
30         for l in lang:
31             self._pages.append(Page(self,l))
32
33     def add_page(self,l):
34         self._pages.append(Page(self,l))
35
36     def _scan_languages(self,path):
37         lang = []
38         for l in  glob.glob('.'+path+'*'):
39             ls = l.split('.')
40             if len(ls) > 3 and ls[3] == 'xml':
41                 lang.append((ls[2],l))
42         return lang
43
44     def link(self):
45         return self._link
46
47     def prepare(self):
48         for page in self._pages:
49             page.prepare()
50
51     def languages(self):
52         p = []
53         for page in self._pages:
54             p.append(page.language())
55         return p
56
57     def render(self):
58         for page in self._pages:
59             page.render()
60
61     def template(self,sitemap):
62         for page in self._pages:
63             page.template(sitemap)
64
65     def page(self,lang):
66         for page in self._pages:
67             if page.language()==lang:
68                 return page
69         return None
70
71     def resources(self):
72         res  = set()
73         for page in self._pages:
74             res = res.union(page.resources())
75         return res