Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: grit/tool/diff_structures.py

Issue 1442863002: Remove contents of grit's SVN repository. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « grit/tool/count.py ('k') | grit/tool/interface.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 '''The 'grit sdiff' tool.
7 '''
8
9 import os
10 import getopt
11 import tempfile
12
13 from grit.node import structure
14 from grit.tool import interface
15
16 from grit import constants
17 from grit import util
18
19 # Builds the description for the tool (used as the __doc__
20 # for the DiffStructures class).
21 _class_doc = """\
22 Allows you to view the differences in the structure of two files,
23 disregarding their translateable content. Translateable portions of
24 each file are changed to the string "TTTTTT" before invoking the diff program
25 specified by the P4DIFF environment variable.
26
27 Usage: grit sdiff [-t TYPE] [-s SECTION] [-e ENCODING] LEFT RIGHT
28
29 LEFT and RIGHT are the files you want to diff. SECTION is required
30 for structure types like 'dialog' to identify the part of the file to look at.
31 ENCODING indicates the encoding of the left and right files (default 'cp1252').
32 TYPE can be one of the following, defaults to 'tr_html':
33 """
34 for gatherer in structure._GATHERERS:
35 _class_doc += " - %s\n" % gatherer
36
37
38 class DiffStructures(interface.Tool):
39 __doc__ = _class_doc
40
41 def __init__(self):
42 self.section = None
43 self.left_encoding = 'cp1252'
44 self.right_encoding = 'cp1252'
45 self.structure_type = 'tr_html'
46
47 def ShortDescription(self):
48 return 'View differences without regard for translateable portions.'
49
50 def Run(self, global_opts, args):
51 (opts, args) = getopt.getopt(args, 's:e:t:',
52 ['left_encoding=', 'right_encoding='])
53 for key, val in opts:
54 if key == '-s':
55 self.section = val
56 elif key == '-e':
57 self.left_encoding = val
58 self.right_encoding = val
59 elif key == '-t':
60 self.structure_type = val
61 elif key == '--left_encoding':
62 self.left_encoding = val
63 elif key == '--right_encoding':
64 self.right_encoding == val
65
66 if len(args) != 2:
67 print "Incorrect usage - 'grit help sdiff' for usage details."
68 return 2
69
70 if 'P4DIFF' not in os.environ:
71 print "Environment variable P4DIFF not set; defaulting to 'windiff'."
72 diff_program = 'windiff'
73 else:
74 diff_program = os.environ['P4DIFF']
75
76 left_trans = self.MakeStaticTranslation(args[0], self.left_encoding)
77 try:
78 try:
79 right_trans = self.MakeStaticTranslation(args[1], self.right_encoding)
80
81 os.system('%s %s %s' % (diff_program, left_trans, right_trans))
82 finally:
83 os.unlink(right_trans)
84 finally:
85 os.unlink(left_trans)
86
87 def MakeStaticTranslation(self, original_filename, encoding):
88 """Given the name of the structure type (self.structure_type), the filename
89 of the file holding the original structure, and optionally the "section" key
90 identifying the part of the file to look at (self.section), creates a
91 temporary file holding a "static" translation of the original structure
92 (i.e. one where all translateable parts have been replaced with "TTTTTT")
93 and returns the temporary file name. It is the caller's responsibility to
94 delete the file when finished.
95
96 Args:
97 original_filename: 'c:\\bingo\\bla.rc'
98
99 Return:
100 'c:\\temp\\werlkjsdf334.tmp'
101 """
102 original = structure._GATHERERS[self.structure_type](original_filename,
103 extkey=self.section,
104 encoding=encoding)
105 original.Parse()
106 translated = original.Translate(constants.CONSTANT_LANGUAGE, False)
107
108 fname = tempfile.mktemp()
109 with util.WrapOutputStream(open(fname, 'w')) as writer:
110 writer.write("Original filename: %s\n=============\n\n"
111 % original_filename)
112 writer.write(translated) # write in UTF-8
113
114 return fname
OLDNEW
« no previous file with comments | « grit/tool/count.py ('k') | grit/tool/interface.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698