OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 '''Base types for nodes in a GRIT resource tree. | 6 '''Base types for nodes in a GRIT resource tree. |
7 ''' | 7 ''' |
8 | 8 |
9 import collections | 9 import collections |
10 import os | 10 import os |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 def EvaluateExpression(cls, expr, defs, target_platform, extra_variables=None)
: | 462 def EvaluateExpression(cls, expr, defs, target_platform, extra_variables=None)
: |
463 '''Worker for EvaluateCondition (below) and conditions in XTB files.''' | 463 '''Worker for EvaluateCondition (below) and conditions in XTB files.''' |
464 cache_dict = cls.eval_expr_cache[ | 464 cache_dict = cls.eval_expr_cache[ |
465 (tuple(defs.iteritems()), target_platform, extra_variables)] | 465 (tuple(defs.iteritems()), target_platform, extra_variables)] |
466 if expr in cache_dict: | 466 if expr in cache_dict: |
467 return cache_dict[expr] | 467 return cache_dict[expr] |
468 def pp_ifdef(symbol): | 468 def pp_ifdef(symbol): |
469 return symbol in defs | 469 return symbol in defs |
470 def pp_if(symbol): | 470 def pp_if(symbol): |
471 return defs.get(symbol, False) | 471 return defs.get(symbol, False) |
472 platform_assertion = Node.GetPlatformAssertion(target_platform) | |
473 variable_map = { | 472 variable_map = { |
474 'defs' : defs, | 473 'defs' : defs, |
475 'os': target_platform, | 474 'os': target_platform, |
476 'is_linux': platform_assertion == 'is_linux', | 475 |
477 'is_macosx': platform_assertion == 'is_macosx', | 476 # One of these is_xyz assertions gets set to True in the line |
478 'is_win': platform_assertion == 'is_win', | 477 # following this initializer block. |
479 'is_android': platform_assertion == 'is_android', | 478 'is_linux': False, |
480 'is_ios': platform_assertion == 'is_ios', | 479 'is_macosx': False, |
481 # is_posix is not mutually exclusive of the others | 480 'is_win': False, |
| 481 'is_android': False, |
| 482 'is_ios': False, |
| 483 |
| 484 # is_posix is not mutually exclusive of the others and gets |
| 485 # set here, not below. |
482 'is_posix': (target_platform in ('darwin', 'linux2', 'linux3', 'sunos5') | 486 'is_posix': (target_platform in ('darwin', 'linux2', 'linux3', 'sunos5') |
483 or 'bsd' in sys.platform), | 487 or 'bsd' in sys.platform), |
| 488 |
484 'pp_ifdef' : pp_ifdef, | 489 'pp_ifdef' : pp_ifdef, |
485 'pp_if' : pp_if, | 490 'pp_if' : pp_if, |
486 } | 491 } |
| 492 variable_map[Node.GetPlatformAssertion(target_platform)] = True |
| 493 |
487 if extra_variables: | 494 if extra_variables: |
488 variable_map.update(extra_variables) | 495 variable_map.update(extra_variables) |
489 eval_result = cache_dict[expr] = eval(expr, {}, variable_map) | 496 eval_result = cache_dict[expr] = eval(expr, {}, variable_map) |
490 return eval_result | 497 return eval_result |
491 | 498 |
492 def EvaluateCondition(self, expr): | 499 def EvaluateCondition(self, expr): |
493 '''Returns true if and only if the Python expression 'expr' evaluates | 500 '''Returns true if and only if the Python expression 'expr' evaluates |
494 to true. | 501 to true. |
495 | 502 |
496 The expression is given a few local variables: | 503 The expression is given a few local variables: |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
576 def ExpandVariables(self): | 583 def ExpandVariables(self): |
577 '''Whether we need to expand variables on a given node.''' | 584 '''Whether we need to expand variables on a given node.''' |
578 return False | 585 return False |
579 | 586 |
580 | 587 |
581 class ContentNode(Node): | 588 class ContentNode(Node): |
582 '''Convenience baseclass for nodes that can have content.''' | 589 '''Convenience baseclass for nodes that can have content.''' |
583 def _ContentType(self): | 590 def _ContentType(self): |
584 return self._CONTENT_TYPE_MIXED | 591 return self._CONTENT_TYPE_MIXED |
585 | 592 |
OLD | NEW |