Index: grit/shortcuts.py |
diff --git a/grit/shortcuts.py b/grit/shortcuts.py |
deleted file mode 100644 |
index 69a4386de3dae69911f9104af2334fad8e4d8009..0000000000000000000000000000000000000000 |
--- a/grit/shortcuts.py |
+++ /dev/null |
@@ -1,93 +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. |
- |
-'''Stuff to prevent conflicting shortcuts. |
-''' |
- |
-from grit import lazy_re |
- |
- |
-class ShortcutGroup(object): |
- '''Manages a list of cliques that belong together in a single shortcut |
- group. Knows how to detect conflicting shortcut keys. |
- ''' |
- |
- # Matches shortcut keys, e.g. &J |
- SHORTCUT_RE = lazy_re.compile('([^&]|^)(&[A-Za-z])') |
- |
- def __init__(self, name): |
- self.name = name |
- # Map of language codes to shortcut keys used (which is a map of |
- # shortcut keys to counts). |
- self.keys_by_lang = {} |
- # List of cliques in this group |
- self.cliques = [] |
- |
- def AddClique(self, c): |
- for existing_clique in self.cliques: |
- if existing_clique.GetId() == c.GetId(): |
- # This happens e.g. when we have e.g. |
- # <if expr1><structure 1></if> <if expr2><structure 2></if> |
- # where only one will really be included in the output. |
- return |
- |
- self.cliques.append(c) |
- for (lang, msg) in c.clique.items(): |
- if lang not in self.keys_by_lang: |
- self.keys_by_lang[lang] = {} |
- keymap = self.keys_by_lang[lang] |
- |
- content = msg.GetRealContent() |
- keys = [groups[1] for groups in self.SHORTCUT_RE.findall(content)] |
- for key in keys: |
- key = key.upper() |
- if key in keymap: |
- keymap[key] += 1 |
- else: |
- keymap[key] = 1 |
- |
- def GenerateWarnings(self, tc_project): |
- # For any language that has more than one occurrence of any shortcut, |
- # make a list of the conflicting shortcuts. |
- problem_langs = {} |
- for (lang, keys) in self.keys_by_lang.items(): |
- for (key, count) in keys.items(): |
- if count > 1: |
- if lang not in problem_langs: |
- problem_langs[lang] = [] |
- problem_langs[lang].append(key) |
- |
- warnings = [] |
- if len(problem_langs): |
- warnings.append("WARNING - duplicate keys exist in shortcut group %s" % |
- self.name) |
- for (lang,keys) in problem_langs.items(): |
- warnings.append(" %6s duplicates: %s" % (lang, ', '.join(keys))) |
- return warnings |
- |
- |
-def GenerateDuplicateShortcutsWarnings(uberclique, tc_project): |
- '''Given an UberClique and a project name, will print out helpful warnings |
- if there are conflicting shortcuts within shortcut groups in the provided |
- UberClique. |
- |
- Args: |
- uberclique: clique.UberClique() |
- tc_project: 'MyProjectNameInTheTranslationConsole' |
- |
- Returns: |
- ['warning line 1', 'warning line 2', ...] |
- ''' |
- warnings = [] |
- groups = {} |
- for c in uberclique.AllCliques(): |
- for group in c.shortcut_groups: |
- if group not in groups: |
- groups[group] = ShortcutGroup(group) |
- groups[group].AddClique(c) |
- for group in groups.values(): |
- warnings += group.GenerateWarnings(tc_project) |
- return warnings |
- |