Index: trunk/src/chromeos/ime/gen_input_methods.py |
=================================================================== |
--- trunk/src/chromeos/ime/gen_input_methods.py (revision 190642) |
+++ trunk/src/chromeos/ime/gen_input_methods.py (working copy) |
@@ -1,123 +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. |
- |
-"""Generate a C++ header from ibus_input_methods.txt. |
- |
-This program generates a C++ header file containing the information on |
-available input methods. It parses input_methods.txt, and then generates a |
-static array definition from the information extracted. The input and output |
-file names are specified on the command line. |
- |
-Run it like: |
- gen_input_methods.py input_methods.txt input_methods.h |
- |
-It will produce output that looks like: |
- |
-// This file is automatically generated by gen_input_methods.py |
-#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_ |
-#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_ |
- |
-namespace chromeos { |
-namespace input_method { |
- |
-struct InputMethodsInfo { |
- const char* input_method_id; |
- const char* language_code; |
- const char* xkb_keyboard_id; |
-}; |
-const InputMethodsInfo kInputMethods[] = { |
- {"mozc-chewing", "zh-TW", "us"}, |
- {"xkb:us::eng", "en-US", "us"}, |
- {"xkb:us:dvorak:eng", "en-US", "us(dvorak)"}, |
- {"xkb:be::fra", "fr", "be"}, |
- {"xkb:br::por", "pt-BR", "br"}, |
-}; |
- |
-} // namespace input_method |
-} // namespace chromeos |
- |
-#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_ |
- |
-""" |
- |
-import fileinput |
-import re |
-import sys |
- |
-OUTPUT_HEADER = """// Automatically generated by gen_input_methods.py |
-#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_ |
-#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_ |
- |
-namespace chromeos { |
-namespace input_method { |
- |
-struct InputMethodsInfo { |
- const char* input_method_id; |
- const char* language_code; |
- const char* xkb_layout_id; |
-}; |
-const InputMethodsInfo kInputMethods[] = { |
-""" |
- |
-CPP_FORMAT = '#if %s\n' |
-ENGINE_FORMAT = (' {"%(input_method_id)s", "%(language_code)s", ' + |
- '"%(xkb_layout_id)s"},\n') |
- |
-OUTPUT_FOOTER = """ |
-}; |
- |
-} // namespace input_method |
-} // namespace chromeos |
- |
-#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_INPUT_METHODS_H_ |
-""" |
- |
-def CreateEngineHeader(engines): |
- """Create the header file from a list of engines. |
- |
- Arguments: |
- engines: list of engine objects |
- Returns: |
- The text of a C++ header file containing the engine data. |
- """ |
- output = [] |
- output.append(OUTPUT_HEADER) |
- for engine in engines: |
- if engine.has_key('if'): |
- output.append(CPP_FORMAT % engine['if']) |
- output.append(ENGINE_FORMAT % engine) |
- if engine.has_key('if'): |
- output.append('#endif\n') |
- output.append(OUTPUT_FOOTER) |
- |
- return "".join(output) |
- |
- |
-def main(argv): |
- if len(argv) != 3: |
- print 'Usage: gen_input_methods.py [whitelist] [output]' |
- sys.exit(1) |
- engines = [] |
- for line in fileinput.input(sys.argv[1]): |
- line = line.strip() |
- if not line or re.match(r'#', line): |
- continue |
- columns = line.split() |
- assert len(columns) == 3 or len(columns) == 4, "Invalid format: " + line |
- engine = {} |
- engine['input_method_id'] = columns[0] |
- engine['xkb_layout_id'] = columns[1] |
- engine['language_code'] = columns[2] |
- if len(columns) == 4: |
- engine['if'] = columns[3] |
- engines.append(engine) |
- |
- output = CreateEngineHeader(engines) |
- output_file = open(sys.argv[2], 'w') |
- output_file.write(output) |
- |
- |
-if __name__ == '__main__': |
- main(sys.argv) |