def assign(self): content = self._content if content is not None: definition = ( types.declaration((self.content_symbol,)), content) return types.definitions((definition,))
def __init__(self, declaration, expression=None, dictionary=None): if not isinstance(declaration, types.declaration): declaration = types.declaration((declaration,)) if len(declaration) == 1: variable = declaration[0] else: variable = u"(%s,)" % ", ".join(declaration) if declaration.global_scope and dictionary is not None: variable = "%s['%s'] = %s" % (dictionary, variable, variable) if expression is not None: self.assign = Assign(expression, variable) self.declaration = declaration self.dictionary = dictionary
def __init__(self, declaration, expression=None, dictionary=None): if not isinstance(declaration, types.declaration): declaration = types.declaration((declaration, )) if len(declaration) == 1: variable = declaration[0] else: variable = u"(%s,)" % ", ".join(declaration) if declaration.global_scope and dictionary is not None: variable = "%s['%s'] = %s" % (dictionary, variable, variable) if expression is not None: self.assign = Assign(expression, variable) self.declaration = declaration self.dictionary = dictionary
def declaration(self, string): """Variable declaration. >>> declaration = ExpressionTranslator().declaration Single variable: >>> declaration("variable") declaration('variable') Multiple variables: >>> declaration("variable1,variable2") declaration('variable1', 'variable2') >>> declaration("variable1, variable2") declaration('variable1', 'variable2') Repeat not allowed: >>> declaration('repeat') Traceback (most recent call last): ... ValueError: Invalid variable name 'repeat' (reserved). >>> declaration('_disallowed') Traceback (most recent call last): ... ValueError: Invalid variable name '_disallowed' (starts with an underscore). """ variables = [] for var in string.split(','): var = var.strip() if var in ('repeat',): raise ValueError, "Invalid variable name '%s' (reserved)." % var if var.startswith('_') and not var.startswith('_tmp'): raise ValueError( "Invalid variable name '%s' (starts with an underscore)." % var) variables.append(var) return types.declaration(variables)
def assign(self): content = self._content if content is not None: definition = (types.declaration( (self.content_symbol, )), content) return types.definitions((definition, ))