Index: grit/gather/interface.py |
=================================================================== |
--- grit/gather/interface.py (revision 202) |
+++ grit/gather/interface.py (working copy) |
@@ -1,171 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-'''Interface for all gatherers. |
-''' |
- |
- |
-import os.path |
-import types |
- |
-from grit import clique |
-from grit import util |
- |
- |
-class GathererBase(object): |
- '''Interface for all gatherer implementations. Subclasses must implement |
- all methods that raise NotImplemented.''' |
- |
- def __init__(self, rc_file, extkey=None, encoding='cp1252', is_skeleton=False): |
- '''Initializes the gatherer object's attributes, but does not attempt to |
- read the input file. |
- |
- Args: |
- rc_file: The 'file' attribute of the <structure> node (usually the |
- relative path to the source file). |
- extkey: e.g. 'ID_MY_DIALOG' |
- encoding: e.g. 'utf-8' |
- is_skeleton: Indicates whether this gatherer is a skeleton gatherer, in |
- which case we should not do some types of processing on the |
- translateable bits. |
- ''' |
- self.rc_file = rc_file |
- self.extkey = extkey |
- self.encoding = encoding |
- # A default uberclique that is local to this object. Users can override |
- # this with the uberclique they are using. |
- self.uberclique = clique.UberClique() |
- # Indicates whether this gatherer is a skeleton gatherer, in which case |
- # we should not do some types of processing on the translateable bits. |
- self.is_skeleton = is_skeleton |
- # Stores the grd node on which this gatherer is running. This allows |
- # evaluating expressions. |
- self.grd_node = None |
- |
- def SetAttributes(self, attrs): |
- '''Sets node attributes used by the gatherer. |
- |
- By default, this does nothing. If special handling is desired, it should be |
- overridden by the child gatherer. |
- |
- Args: |
- attrs: The mapping of node attributes. |
- ''' |
- pass |
- |
- def SetDefines(self, defines): |
- '''Sets global defines used by the gatherer. |
- |
- By default, this does nothing. If special handling is desired, it should be |
- overridden by the child gatherer. |
- |
- Args: |
- defines: The mapping of define values. |
- ''' |
- pass |
- |
- def SetGrdNode(self, node): |
- '''Sets the grd node on which this gatherer is running. |
- ''' |
- self.grd_node = node |
- |
- def SetUberClique(self, uberclique): |
- '''Overrides the default uberclique so that cliques created by this object |
- become part of the uberclique supplied by the user. |
- ''' |
- self.uberclique = uberclique |
- |
- def Parse(self): |
- '''Reads and parses the contents of what is being gathered.''' |
- raise NotImplementedError() |
- |
- def GetData(self, lang, encoding): |
- '''Returns the data to be added to the DataPack for this node or None if |
- this node does not add a DataPack entry. |
- ''' |
- return None |
- |
- def GetText(self): |
- '''Returns the text of what is being gathered.''' |
- raise NotImplementedError() |
- |
- def GetTextualIds(self): |
- '''Returns the mnemonic IDs that need to be defined for the resource |
- being gathered to compile correctly.''' |
- return [] |
- |
- def GetCliques(self): |
- '''Returns the MessageClique objects for all translateable portions.''' |
- return [] |
- |
- def GetInputPath(self): |
- return self.rc_file |
- |
- def GetHtmlResourceFilenames(self): |
- """Returns a set of all filenames inlined by this gatherer.""" |
- return [] |
- |
- def Translate(self, lang, pseudo_if_not_available=True, |
- skeleton_gatherer=None, fallback_to_english=False): |
- '''Returns the resource being gathered, with translateable portions filled |
- with the translation for language 'lang'. |
- |
- If pseudo_if_not_available is true, a pseudotranslation will be used for any |
- message that doesn't have a real translation available. |
- |
- If no translation is available and pseudo_if_not_available is false, |
- fallback_to_english controls the behavior. If it is false, throw an error. |
- If it is true, use the English version of the message as its own |
- "translation". |
- |
- If skeleton_gatherer is specified, the translation will use the nontranslateable |
- parts from the gatherer 'skeleton_gatherer', which must be of the same type |
- as 'self'. |
- |
- If fallback_to_english |
- |
- Args: |
- lang: 'en' |
- pseudo_if_not_available: True | False |
- skeleton_gatherer: other_gatherer |
- fallback_to_english: True | False |
- |
- Return: |
- e.g. 'ID_THIS_SECTION TYPE\n...BEGIN\n "Translated message"\n......\nEND' |
- |
- Raises: |
- grit.exception.NotReady() if used before Parse() has been successfully |
- called. |
- grit.exception.NoSuchTranslation() if 'pseudo_if_not_available' and |
- fallback_to_english are both false and there is no translation for the |
- requested language. |
- ''' |
- raise NotImplementedError() |
- |
- def SubstituteMessages(self, substituter): |
- '''Applies substitutions to all messages in the gatherer. |
- |
- Args: |
- substituter: a grit.util.Substituter object. |
- ''' |
- pass |
- |
- def SetFilenameExpansionFunction(self, fn): |
- '''Sets a function for rewriting filenames before gathering.''' |
- pass |
- |
- # TODO(benrg): Move this elsewhere, since it isn't part of the interface. |
- def _LoadInputFile(self): |
- '''A convenience function for subclasses that loads the contents of the |
- input file. |
- ''' |
- if isinstance(self.rc_file, types.StringTypes): |
- path = self.GetInputPath() |
- # Hack: some unit tests supply an absolute path and no root node. |
- if not os.path.isabs(path): |
- path = self.grd_node.ToRealPath(path) |
- return util.ReadFile(path, self.encoding) |
- else: |
- return self.rc_file.read() |