translate.storage.directory

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 os import path
    30
    31  from translate.storage import factory
    32
    33
    34 -class Directory:
    35      """This class represents a directory."""
    36
    37 -    def __init__(self, dir=None):
    38          self.dir = dir
    39          self.filedata = []
    40
    41 -    def file_iter(self):
    42          """Iterator over (dir, filename) for all files in this directory."""
    43          if not self.filedata:
    44              self.scanfiles()
    45          for filetuple in self.filedata:
    46              yield filetuple
    47
    48 -    def getfiles(self):
    49          """Returns a list of (dir, filename) tuples for all the file names in
    50          this directory."""
    51          return [filetuple for filetuple in self.file_iter()]
    52
    53 -    def unit_iter(self):
    54          """Iterator over all the units in all the files in this directory."""
    55          for dirname, filename in self.file_iter():
    56              store = factory.getobject(path.join(dirname, filename))
    57              #TODO: don't regenerate all the storage objects
    58              for unit in store.unit_iter():
    59                  yield unit
    60
    61 -    def getunits(self):
    62          """List of all the units in all the files in this directory."""
    63          return [unit for unit in self.unit_iter()]
    64
    65 -    def scanfiles(self):
    66          """Populate the internal file data."""
    67          self.filedata = []
    68
    69          def addfile(arg, dirname, fnames):
    70              for fname in fnames:
    71                  if path.isfile(path.join(dirname, fname)):
    72                      self.filedata.append((dirname, fname))
    73
    74          path.walk(self.dir, addfile, None)
    75