コード例 #1
0
ファイル: contexts.py プロジェクト: apalala/grako
 def _extend_cst(self, node):
     if node is None:
         return
     previous = self.cst
     if previous is None:
         self.cst = self._copy_node(node)
     elif is_list(node):
         if is_list(previous):
             previous.extend(node)
         else:
             self.cst = [previous] + node
     elif is_list(previous):
         previous.append(node)
     else:
         self.cst = [previous, node]
コード例 #2
0
 def _extend_cst(self, node):
     if node is None:
         return
     previous = self.cst
     if previous is None:
         self.cst = self._copy_node(node)
     elif is_list(node):
         if is_list(previous):
             previous.extend(node)
         else:
             self.cst = [previous] + node
     elif is_list(previous):
         previous.append(node)
     else:
         self.cst = [previous, node]
コード例 #3
0
 def _copy_node(self, node):
     if node is None:
         return None
     elif is_list(node):
         return node[:]
     else:
         return node
コード例 #4
0
ファイル: contexts.py プロジェクト: apalala/grako
 def _copy_node(self, node):
     if node is None:
         return None
     elif is_list(node):
         return node[:]
     else:
         return node
コード例 #5
0
 def walk(self, node, *args, **kwargs):
     supers_walk = super(DepthFirstWalker, self).walk
     if isinstance(node, Node):
         children = [self.walk(c, *args, **kwargs) for c in node.children()]
         return supers_walk(node, children, *args, **kwargs)
     elif isinstance(node, collections.Mapping):
         return {n: self.walk(e, *args, **kwargs) for n, e in node.items()}
     elif is_list(node):
         return [self.walk(e, *args, **kwargs) for e in iter(node)]
     else:
         return supers_walk(node, [], *args, **kwargs)
コード例 #6
0
ファイル: walkers.py プロジェクト: apalala/grako
 def walk(self, node, *args, **kwargs):
     supers_walk = super(DepthFirstWalker, self).walk
     if isinstance(node, Node):
         children = [self.walk(c, *args, **kwargs) for c in node.children()]
         return supers_walk(node, children, *args, **kwargs)
     elif isinstance(node, collections.Mapping):
         return {n: self.walk(e, *args, **kwargs) for n, e in node.items()}
     elif is_list(node):
         return [self.walk(e, *args, **kwargs) for e in iter(node)]
     else:
         return supers_walk(node, [], *args, **kwargs)
コード例 #7
0
ファイル: ast.py プロジェクト: johnfkraus/pyparseurl
    def set(self, key, value, force_list=False):
        key = self._safekey(key)

        previous = self.get(key, None)
        if previous is None:
            if force_list:
                super(AST, self).__setitem__(key, [value])
            else:
                super(AST, self).__setitem__(key, value)
            self._order.append(key)
        elif is_list(previous):
            previous.append(value)
        else:
            super(AST, self).__setitem__(key, [previous, value])
        return self
コード例 #8
0
ファイル: ast.py プロジェクト: waveform80/grako
    def set(self, key, value, force_list=False):
        key = self._safekey(key)

        previous = self.get(key, None)
        if previous is None:
            if force_list:
                super(AST, self).__setitem__(key, [value])
            else:
                super(AST, self).__setitem__(key, value)
            self._order.append(key)
        elif is_list(previous):
            previous.append(value)
        else:
            super(AST, self).__setitem__(key, [previous, value])
        return self
コード例 #9
0
ファイル: ast.py プロジェクト: johnfkraus/pyparseurl
 def copy(self):
     return AST(
         (k, v[:] if is_list(v) else v)
         for k, v in self.items()
     )
コード例 #10
0
ファイル: ast.py プロジェクト: waveform80/grako
 def copy(self):
     return AST((k, v[:] if is_list(v) else v) for k, v in self.items())