| Index: tools/android/remove_strings.py
|
| diff --git a/tools/android/remove_strings.py b/tools/android/remove_strings.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..b8c4807d88e76e15e04a2fdd447d55f27efd44c5
|
| --- /dev/null
|
| +++ b/tools/android/remove_strings.py
|
| @@ -0,0 +1,49 @@
|
| +#!/usr/bin/python
|
| +# Copyright (c) 2013 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.
|
| +
|
| +"""Remove strings by name from a GRD file."""
|
| +
|
| +import optparse
|
| +import re
|
| +import sys
|
| +
|
| +
|
| +def RemoveStrings(grd_path, string_names):
|
| + """Removes strings with the given names from a GRD file. Overwrites the file.
|
| +
|
| + Args:
|
| + grd_path: path to the GRD file.
|
| + string_names: a list of string names to be removed.
|
| + """
|
| + with open(grd_path, 'r') as f:
|
| + grd = f.read()
|
| + names_pattern = '|'.join(map(re.escape, string_names))
|
| + pattern = r'<message [^>]*name="(%s)".*?</message>\s*' % names_pattern
|
| + grd = re.sub(pattern, '', grd, flags=re.DOTALL)
|
| + with open(grd_path, 'w') as f:
|
| + f.write(grd)
|
| +
|
| +
|
| +def ParseArgs(args):
|
| + usage = 'usage: %prog GRD_PATH...'
|
| + parser = optparse.OptionParser(
|
| + usage=usage, description='Remove strings from GRD files. Reads string '
|
| + 'names from stdin, and removes strings with those names from the listed '
|
| + 'GRD files.')
|
| + options, args = parser.parse_args(args=args)
|
| + if not args:
|
| + parser.error('must provide GRD_PATH argument(s)')
|
| + return args
|
| +
|
| +
|
| +def main(args=None):
|
| + grd_paths = ParseArgs(args)
|
| + strings_to_remove = filter(None, map(str.strip, sys.stdin.readlines()))
|
| + for grd_path in grd_paths:
|
| + RemoveStrings(grd_path, strings_to_remove)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + main()
|
|
|