Coverage for /pythoncovmergedfiles/medio/medio/src/underscore/underscore/constant_finder.py: 74%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# Copyright (c) 2013 Huan Do, http://huan.do
3import ast
5from assignment_manager import AssignmentManager
6from utils import value_of
8class ConstantFinder(ast.NodeVisitor):
10 def __init__(self, env):
11 self.env = env
12 self.assignment_manager = AssignmentManager()
14 def visit_Constant(self, node):
15 if not hasattr(node, 'isdoc'):
16 value = value_of(node)
17 return self.add_constant(node, value)
19 visit_Num = visit_Str = visit_Constant
21 def visit_FunctionDef(self, node):
22 if (isinstance(node.body[0], ast.Expr) and
23 isinstance(node.body[0].value, ast.Str)):
24 node.body[0].value.isdoc = True
25 self.generic_visit(node)
27 visit_ClassDef = visit_FunctionDef
29 def add_constant(self, node, value):
30 if value not in self.env.constants and not hasattr(node, 'isdoc'):
31 decl = self.env.generate_new_decl()
32 self.assignment_manager.add_assignment(decl.name, node)
33 self.env.constants[value] = decl