Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(265)

Unified Diff: grit/gather/skeleton_gatherer.py

Issue 1442863002: Remove contents of grit's SVN repository. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « grit/gather/regexp.py ('k') | grit/gather/tr_html.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: grit/gather/skeleton_gatherer.py
===================================================================
--- grit/gather/skeleton_gatherer.py (revision 202)
+++ grit/gather/skeleton_gatherer.py (working copy)
@@ -1,147 +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.
-
-'''A baseclass for simple gatherers that store their gathered resource in a
-list.
-'''
-
-import types
-
-from grit.gather import interface
-from grit import clique
-from grit import tclib
-
-
-class SkeletonGatherer(interface.GathererBase):
- '''Common functionality of gatherers that parse their input as a skeleton of
- translatable and nontranslatable chunks.
- '''
-
- def __init__(self, *args, **kwargs):
- super(SkeletonGatherer, self).__init__(*args, **kwargs)
- # List of parts of the document. Translateable parts are
- # clique.MessageClique objects, nontranslateable parts are plain strings.
- # Translated messages are inserted back into the skeleton using the quoting
- # rules defined by self.Escape()
- self.skeleton_ = []
- # A list of the names of IDs that need to be defined for this resource
- # section to compile correctly.
- self.ids_ = []
- # True if Parse() has already been called.
- self.have_parsed_ = False
- # True if a translatable chunk has been added
- self.translatable_chunk_ = False
- # If not None, all parts of the document will be put into this single
- # message; otherwise the normal skeleton approach is used.
- self.single_message_ = None
- # Number to use for the next placeholder name. Used only if single_message
- # is not None
- self.ph_counter_ = 1
-
- def GetText(self):
- '''Returns the original text of the section'''
- return self.text_
-
- def Escape(self, text):
- '''Subclasses can override. Base impl is identity.
- '''
- return text
-
- def UnEscape(self, text):
- '''Subclasses can override. Base impl is identity.
- '''
- return text
-
- def GetTextualIds(self):
- '''Returns the list of textual IDs that need to be defined for this
- resource section to compile correctly.'''
- return self.ids_
-
- def _AddTextualId(self, id):
- self.ids_.append(id)
-
- def GetCliques(self):
- '''Returns the message cliques for each translateable message in the
- resource section.'''
- return [x for x in self.skeleton_ if isinstance(x, clique.MessageClique)]
-
- def Translate(self, lang, pseudo_if_not_available=True,
- skeleton_gatherer=None, fallback_to_english=False):
- if len(self.skeleton_) == 0:
- raise exception.NotReady()
- if skeleton_gatherer:
- assert len(skeleton_gatherer.skeleton_) == len(self.skeleton_)
-
- out = []
- for ix in range(len(self.skeleton_)):
- if isinstance(self.skeleton_[ix], types.StringTypes):
- if skeleton_gatherer:
- # Make sure the skeleton is like the original
- assert(isinstance(skeleton_gatherer.skeleton_[ix], types.StringTypes))
- out.append(skeleton_gatherer.skeleton_[ix])
- else:
- out.append(self.skeleton_[ix])
- else:
- if skeleton_gatherer: # Make sure the skeleton is like the original
- assert(not isinstance(skeleton_gatherer.skeleton_[ix],
- types.StringTypes))
- msg = self.skeleton_[ix].MessageForLanguage(lang,
- pseudo_if_not_available,
- fallback_to_english)
-
- def MyEscape(text):
- return self.Escape(text)
- text = msg.GetRealContent(escaping_function=MyEscape)
- out.append(text)
- return ''.join(out)
-
- def Parse(self):
- '''Parses the section. Implemented by subclasses. Idempotent.'''
- raise NotImplementedError()
-
- def _AddNontranslateableChunk(self, chunk):
- '''Adds a nontranslateable chunk.'''
- if self.single_message_:
- ph = tclib.Placeholder('XX%02dXX' % self.ph_counter_, chunk, chunk)
- self.ph_counter_ += 1
- self.single_message_.AppendPlaceholder(ph)
- else:
- self.skeleton_.append(chunk)
-
- def _AddTranslateableChunk(self, chunk):
- '''Adds a translateable chunk. It will be unescaped before being added.'''
- # We don't want empty messages since they are redundant and the TC
- # doesn't allow them.
- if chunk == '':
- return
-
- unescaped_text = self.UnEscape(chunk)
- if self.single_message_:
- self.single_message_.AppendText(unescaped_text)
- else:
- self.skeleton_.append(self.uberclique.MakeClique(
- tclib.Message(text=unescaped_text)))
- self.translatable_chunk_ = True
-
- def SubstituteMessages(self, substituter):
- '''Applies substitutions to all messages in the tree.
-
- Goes through the skeleton and finds all MessageCliques.
-
- Args:
- substituter: a grit.util.Substituter object.
- '''
- if self.single_message_:
- self.single_message_ = substituter.SubstituteMessage(self.single_message_)
- new_skel = []
- for chunk in self.skeleton_:
- if isinstance(chunk, clique.MessageClique):
- old_message = chunk.GetMessage()
- new_message = substituter.SubstituteMessage(old_message)
- if new_message is not old_message:
- new_skel.append(self.uberclique.MakeClique(new_message))
- continue
- new_skel.append(chunk)
- self.skeleton_ = new_skel
« no previous file with comments | « grit/gather/regexp.py ('k') | grit/gather/tr_html.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698