Package translate :: Package storage :: Module directory
[hide private]
[frames] | no frames]

Source Code for Module translate.storage.directory

 1  #!/usr/bin/env python 
 2  # -*- coding: utf-8 -*- 
 3  #  
 4  # Copyright 2007 Zuza Software Foundation 
 5  #  
 6  # This file is part of translate. 
 7  # 
 8  # translate is free software; you can redistribute it and/or modify 
 9  # it under the terms of the GNU General Public License as published by 
10  # the Free Software Foundation; either version 2 of the License, or 
11  # (at your option) any later version. 
12  #  
13  # translate is distributed in the hope that it will be useful, 
14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
16  # GNU General Public License for more details. 
17  # 
18  # You should have received a copy of the GNU General Public License 
19  # along with translate; if not, write to the Free Software 
20  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
21   
22  """This module provides functionality to work with directories.""" 
23   
24  # Perhaps all methods should work with a wildcard to limit searches in some 
25  # way (examples: *.po, base.xlf, pootle-terminology.tbx) 
26   
27  #TODO: consider also providing directories as we currently provide files 
28   
29  from translate.storage import factory 
30  from os import path 
31   
32 -class Directory:
33 """This class represents a directory."""
34 - def __init__(self, dir=None):
35 self.dir = dir 36 self.filedata = []
37
38 - def file_iter(self):
39 """Iterator over (dir, filename) for all files in this directory.""" 40 if not self.filedata: 41 self.scanfiles() 42 for filetuple in self.filedata: 43 yield filetuple
44
45 - def getfiles(self):
46 """Returns a list of (dir, filename) tuples for all the file names in 47 this directory.""" 48 return [filetuple for filetuple in self.file_iter()]
49
50 - def unit_iter(self):
51 """Iterator over all the units in all the files in this directory.""" 52 for dirname, filename in self.file_iter(): 53 store = factory.getobject(path.join(dirname, filename)) 54 #TODO: don't regenerate all the storage objects 55 for unit in store.unit_iter(): 56 yield unit
57
58 - def getunits(self):
59 """List of all the units in all the files in this directory.""" 60 return [unit for unit in self.unit_iter()]
61
62 - def scanfiles(self):
63 """Populate the internal file data.""" 64 self.filedata = [] 65 def addfile(arg, dirname, fnames): 66 for fname in fnames: 67 if path.isfile(path.join(dirname, fname)): 68 self.filedata.append((dirname, fname))
69 70 path.walk(self.dir, addfile, None)
71