def _safe_repr(val): # FIXME: actually not safe at all. Needs to escape and all. if is_string(val): if len(val.splitlines()) > 1: return '"""%s"""' % (val,) else: return '"%s"' % (val,) else: return repr(val)
def make_node(self, lst): "make a branch of nodes" if is_string(lst): lst = [x for x in split_path(lst) if x and x != '.'] cur = self for x in lst: if x == '..': cur = cur.parent continue if getattr(cur, 'children', {}): if x in cur.children: cur = cur.children[x] continue else: cur.children = {} cur = self.__class__(x, cur) return cur
def _test_impl(self, data, ref): res = [] while True: tok = self.lexer.token() if not tok: break res.append(tok.type) if is_string(ref): ref = split(ref) try: assert_equal(res, ref) except AssertionError: e = extract_exception() cnt = 0 for i, j in zip(res, ref): if not i == j: break cnt += 1 print("Break at index %d" % cnt) raise e
def find_node(self, lst): "read the file system, make the nodes as needed" if is_string(lst): lst = [x for x in split_path(lst) if x and x != '.'] cur = self for x in lst: if x == '..': cur = cur.parent continue try: if x in cur.children: cur = cur.children[x] continue except: cur.children = {} # optimistic: create the node first then look if it was correct to do so cur = self.__class__(x, cur) try: os.stat(cur.abspath()) except: del cur.parent.children[x] return None ret = cur try: while not getattr(cur.parent, 'cache_isdir', None): cur = cur.parent cur.cache_isdir = True except AttributeError: pass return ret