195640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org#!/usr/bin/env python
295640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org# Copyright (c) 2012 The Chromium Authors. All rights reserved.
301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# Use of this source code is governed by a BSD-style license that can be
401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# found in the LICENSE file.
501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
68a303dc2cabedfd395b49f21310ea21c77056fe7joi@chromium.org'''Count number of occurrences of a given message ID.'''
701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgfrom grit import grd_reader
9b9161407f737461b5db16a29782f8a31d19e602dbenrg@chromium.orgfrom grit.tool import interface
1001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgclass CountMessage(interface.Tool):
138a303dc2cabedfd395b49f21310ea21c77056fe7joi@chromium.org  '''Count the number of times a given message ID is used.'''
1401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  def __init__(self):
1601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    pass
1701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  def ShortDescription(self):
198a303dc2cabedfd395b49f21310ea21c77056fe7joi@chromium.org    return 'Count the number of times a given message ID is used.'
2001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  def Run(self, opts, args):
2201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    self.SetOptions(opts)
2301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    id = args[0]
2501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    res_tree = grd_reader.Parse(opts.input, debug=opts.extra_verbose)
2601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    res_tree.OnlyTheseTranslations([])
27ccda47032903a6550dac2921f88c51b4da55aa36benrg@chromium.org    res_tree.RunGatherers()
2801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    count = 0
3001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    for c in res_tree.UberClique().AllCliques():
3101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      if c.GetId() == id:
3201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org        count += 1
3301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
3401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    print "There are %d occurrences of message %s." % (count, id)
3501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
36