| Index: tools/grit/grit/tool/toolbar_preprocess.py
|
| diff --git a/tools/grit/grit/tool/toolbar_preprocess.py b/tools/grit/grit/tool/toolbar_preprocess.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..ff26f88640621cb0ca06eac064fe44342af0a40a
|
| --- /dev/null
|
| +++ b/tools/grit/grit/tool/toolbar_preprocess.py
|
| @@ -0,0 +1,61 @@
|
| +#!/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.
|
| +
|
| +''' Toolbar preprocessing code. Turns all IDS_COMMAND macros in the RC file
|
| +into simpler constructs that can be understood by GRIT. Also deals with
|
| +expansion of $lf; placeholders into the correct linefeed character.
|
| +'''
|
| +
|
| +import preprocess_interface
|
| +
|
| +from grit import lazy_re
|
| +
|
| +class ToolbarPreProcessor(preprocess_interface.PreProcessor):
|
| + ''' Toolbar PreProcessing class.
|
| + '''
|
| +
|
| + _IDS_COMMAND_MACRO = lazy_re.compile(
|
| + r'(.*IDS_COMMAND)\s*\(([a-zA-Z0-9_]*)\s*,\s*([a-zA-Z0-9_]*)\)(.*)')
|
| + _LINE_FEED_PH = lazy_re.compile(r'\$lf;')
|
| + _PH_COMMENT = lazy_re.compile(r'PHRWR')
|
| + _COMMENT = lazy_re.compile(r'^(\s*)//.*')
|
| +
|
| +
|
| + def Process(self, rctext, rcpath):
|
| + ''' Processes the data in rctext.
|
| + Args:
|
| + rctext: string containing the contents of the RC file being processed
|
| + rcpath: the path used to access the file.
|
| +
|
| + Return:
|
| + The processed text.
|
| + '''
|
| +
|
| + ret = ''
|
| + rclines = rctext.splitlines()
|
| + for line in rclines:
|
| +
|
| + if self._LINE_FEED_PH.search(line):
|
| + # Replace "$lf;" placeholder comments by an empty line.
|
| + # this will not be put into the processed result
|
| + if self._PH_COMMENT.search(line):
|
| + mm = self._COMMENT.search(line)
|
| + if mm:
|
| + line = '%s//' % mm.group(1)
|
| +
|
| + else:
|
| + # Replace $lf by the right linefeed character
|
| + line = self._LINE_FEED_PH.sub(r'\\n', line)
|
| +
|
| + # Deal with IDS_COMMAND_MACRO stuff
|
| + mo = self._IDS_COMMAND_MACRO.search(line)
|
| + if mo:
|
| + line = '%s_%s_%s%s' % (mo.group(1), mo.group(2), mo.group(3), mo.group(4))
|
| +
|
| + ret += (line + '\n')
|
| +
|
| + return ret
|
| +
|
| +
|
|
|