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

Side by Side Diff: tools/grit/grit/node/misc.py

Issue 6685061: Compile the devtools grd file into a .pak file so we (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase and fix win Created 9 years, 9 months 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 | « tools/grit/grit/grd_reader_unittest.py ('k') | tools/grit/grit/node/misc_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python2.4 1 #!/usr/bin/python2.4
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 '''Miscellaneous node types. 6 '''Miscellaneous node types.
7 ''' 7 '''
8 8
9 import os.path 9 import os.path
10 import re
10 import sys 11 import sys
11 12
12 from grit.node import base 13 from grit.node import base
13 from grit.node import message 14 from grit.node import message
14 15
15 from grit import exception 16 from grit import exception
16 from grit import constants 17 from grit import constants
17 from grit import util 18 from grit import util
18 19
19 import grit.format.rc_header 20 import grit.format.rc_header
20 21
21 22
23 def _ReadFirstIdsFromFile(filename, defines, src_root_dir):
24 '''Read the starting resource id values from |filename|. We also
25 expand variables of the form <(FOO) based on defines passed in on
26 the command line.'''
27 first_ids_dict = eval(open(filename).read())
28
29 def ReplaceVariable(matchobj):
30 for key, value in defines.iteritems():
31 if matchobj.group(1) == key:
32 value = os.path.abspath(value)[len(src_root_dir) + 1:]
33 return value
34 return ''
35
36 renames = []
37 for grd_filename in first_ids_dict:
38 new_grd_filename = re.sub(r'<\(([A-Za-z_]+)\)', ReplaceVariable,
39 grd_filename)
40 if new_grd_filename != grd_filename:
41 new_grd_filename = new_grd_filename.replace('\\', '/')
42 renames.append((grd_filename, new_grd_filename))
43
44 for grd_filename, new_grd_filename in renames:
45 first_ids_dict[new_grd_filename] = first_ids_dict[grd_filename]
46 del(first_ids_dict[grd_filename])
47
48 return first_ids_dict
49
22 50
23 class IfNode(base.Node): 51 class IfNode(base.Node):
24 '''A node for conditional inclusion of resources. 52 '''A node for conditional inclusion of resources.
25 ''' 53 '''
26 54
27 def _IsValidChild(self, child): 55 def _IsValidChild(self, child):
28 from grit.node import empty 56 from grit.node import empty
29 assert self.parent, '<if> node should never be root.' 57 assert self.parent, '<if> node should never be root.'
30 if isinstance(self.parent, empty.IncludesNode): 58 if isinstance(self.parent, empty.IncludesNode):
31 from grit.node import include 59 from grit.node import include
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 else: 288 else:
261 return super(type(self), self).ItemFormatter(t) 289 return super(type(self), self).ItemFormatter(t)
262 290
263 def SetOutputContext(self, output_language, defines): 291 def SetOutputContext(self, output_language, defines):
264 self.output_language = output_language 292 self.output_language = output_language
265 self.defines = defines 293 self.defines = defines
266 294
267 def SetDefines(self, defines): 295 def SetDefines(self, defines):
268 self.defines = defines 296 self.defines = defines
269 297
270 def AssignFirstIds(self, filename_or_stream, first_id_filename): 298 def AssignFirstIds(self, filename_or_stream, first_id_filename, defines):
271 '''Assign first ids to each grouping node based on values from 299 '''Assign first ids to each grouping node based on values from
272 tools/grit/resource_ids.''' 300 tools/grit/resource_ids.'''
273 # If the input is a stream, then we're probably in a unit test and 301 # If the input is a stream, then we're probably in a unit test and
274 # should skip this step. 302 # should skip this step.
275 if type(filename_or_stream) not in (str, unicode): 303 if type(filename_or_stream) not in (str, unicode):
276 return 304 return
277 305
278 # By default, we use the the file resources_ids next to grit.py 306 # By default, we use the the file resources_ids next to grit.py
279 # to determine what ids to assign to resources. 307 # to determine what ids to assign to resources.
280 grit_root_dir = os.path.abspath(os.path.join(os.path.dirname( 308 grit_root_dir = os.path.abspath(os.path.join(os.path.dirname(
281 os.path.abspath(__file__)), '..', '..')) 309 os.path.abspath(__file__)), '..', '..'))
282 if not first_id_filename: 310 if not first_id_filename:
283 first_id_filename = os.path.join(grit_root_dir, 'resource_ids') 311 first_id_filename = os.path.join(grit_root_dir, 'resource_ids')
284 312
285 first_ids = None 313 first_ids = None
286 from grit.node import empty 314 from grit.node import empty
287 for node in self.inorder(): 315 for node in self.inorder():
288 if isinstance(node, empty.GroupingNode): 316 if isinstance(node, empty.GroupingNode):
289 # The checkout base directory is 2 directories up from grit.py. 317 # The checkout base directory is 2 directories up from grit.py.
290 src_root_dir = os.path.dirname(os.path.dirname(grit_root_dir)) 318 src_root_dir = os.path.dirname(os.path.dirname(grit_root_dir))
291 319
292 filename = os.path.abspath(filename_or_stream)[ 320 filename = os.path.abspath(filename_or_stream)[
293 len(src_root_dir) + 1:] 321 len(src_root_dir) + 1:]
294 filename = filename.replace('\\', '/') 322 filename = filename.replace('\\', '/')
295 if not first_ids: 323 if not first_ids:
296 first_ids = eval(open(first_id_filename).read()) 324 first_ids = _ReadFirstIdsFromFile(first_id_filename, defines,
325 src_root_dir)
297 326
298 if node.attrs['first_id'] != '': 327 if node.attrs['first_id'] != '':
299 raise Exception("Don't set the first_id attribute, update " 328 raise Exception("Don't set the first_id attribute, update "
300 "%s instead." % first_id_filename) 329 "%s instead." % first_id_filename)
301 330
302 try: 331 try:
303 id_list = first_ids[filename][node.name] 332 id_list = first_ids[filename][node.name]
304 except KeyError, e: 333 except KeyError, e:
305 print '-' * 78 334 print '-' * 78
306 print 'Resource id not set for %s (%s)!' % (filename, node.name) 335 print 'Resource id not set for %s (%s)!' % (filename, node.name)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 by parameters of the same name. 375 by parameters of the same name.
347 ''' 376 '''
348 node = IdentifierNode() 377 node = IdentifierNode()
349 node.StartParsing('identifier', parent) 378 node.StartParsing('identifier', parent)
350 node.HandleAttribute('name', name) 379 node.HandleAttribute('name', name)
351 node.HandleAttribute('id', id) 380 node.HandleAttribute('id', id)
352 node.HandleAttribute('comment', comment) 381 node.HandleAttribute('comment', comment)
353 node.EndParsing() 382 node.EndParsing()
354 return node 383 return node
355 Construct = staticmethod(Construct) 384 Construct = staticmethod(Construct)
OLDNEW
« no previous file with comments | « tools/grit/grit/grd_reader_unittest.py ('k') | tools/grit/grit/node/misc_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698