| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 #!/usr/bin/env python |  | 
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |  | 
| 3 # Use of this source code is governed by a BSD-style license that can be |  | 
| 4 # found in the LICENSE file. |  | 
| 5 |  | 
| 6 '''Gatherer for administrative template files. |  | 
| 7 ''' |  | 
| 8 |  | 
| 9 import re |  | 
| 10 |  | 
| 11 from grit.gather import regexp |  | 
| 12 from grit import exception |  | 
| 13 from grit import lazy_re |  | 
| 14 |  | 
| 15 |  | 
| 16 class MalformedAdminTemplateException(exception.Base): |  | 
| 17   '''This file doesn't look like a .adm file to me.''' |  | 
| 18   pass |  | 
| 19 |  | 
| 20 |  | 
| 21 class AdmGatherer(regexp.RegexpGatherer): |  | 
| 22   '''Gatherer for the translateable portions of an admin template. |  | 
| 23 |  | 
| 24   This gatherer currently makes the following assumptions: |  | 
| 25   - there is only one [strings] section and it is always the last section |  | 
| 26     of the file |  | 
| 27   - translateable strings do not need to be escaped. |  | 
| 28   ''' |  | 
| 29 |  | 
| 30   # Finds the strings section as the group named 'strings' |  | 
| 31   _STRINGS_SECTION = lazy_re.compile( |  | 
| 32       '(?P<first_part>.+^\[strings\])(?P<strings>.+)\Z', |  | 
| 33       re.MULTILINE | re.DOTALL) |  | 
| 34 |  | 
| 35   # Finds the translateable sections from within the [strings] section. |  | 
| 36   _TRANSLATEABLES = lazy_re.compile( |  | 
| 37       '^\s*[A-Za-z0-9_]+\s*=\s*"(?P<text>.+)"\s*$', |  | 
| 38       re.MULTILINE) |  | 
| 39 |  | 
| 40   def Escape(self, text): |  | 
| 41     return text.replace('\n', '\\n') |  | 
| 42 |  | 
| 43   def UnEscape(self, text): |  | 
| 44     return text.replace('\\n', '\n') |  | 
| 45 |  | 
| 46   def Parse(self): |  | 
| 47     if self.have_parsed_: |  | 
| 48       return |  | 
| 49     self.have_parsed_ = True |  | 
| 50 |  | 
| 51     self.text_ = self._LoadInputFile().strip() |  | 
| 52     m = self._STRINGS_SECTION.match(self.text_) |  | 
| 53     if not m: |  | 
| 54       raise MalformedAdminTemplateException() |  | 
| 55     # Add the first part, which is all nontranslateable, to the skeleton |  | 
| 56     self._AddNontranslateableChunk(m.group('first_part')) |  | 
| 57     # Then parse the rest using the _TRANSLATEABLES regexp. |  | 
| 58     self._RegExpParse(self._TRANSLATEABLES, m.group('strings')) |  | 
| 59 |  | 
| 60   def GetTextualIds(self): |  | 
| 61     return [self.extkey] |  | 
| OLD | NEW | 
|---|