def get_path_name(self, path_name, allow_file=True, allow_dir=True): """get node for given path""" # make sure path name is a FSString if not isinstance(path_name, FSString): raise ValueError("get_path_name's path must be a FSString") # create and check file name fn = FileName(path_name, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=path_name, node=self) # find node if fn.is_root_path_alias(): # its the root node return self.root_dir else: # find a sub node path = fn.split_path() return self.root_dir.get_path(path, allow_file, allow_dir)
def get_path_name(self, path_name, allow_file=True, allow_dir=True): """get node for given path""" # make sure path name is a FSString if not isinstance(path_name, FSString): raise ValueError("get_path_name's path must be a FSString") # create and check file name fn = FileName(path_name, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=path_name, node=self) # find node if fn.is_root_path_alias(): # its the root node return self.root_dir else: # find a sub node path = fn.split_path() return self.root_dir.get_path(path, allow_file, allow_dir)
def get_create_path_name(self, path_name, suggest_name=None): """get a parent node and path name for creation return: parent_node_or_none, file_name_or_none """ # make sure input is correct if not isinstance(path_name, FSString): raise ValueError( "get_create_path_name's path_name must be a FSString") if suggest_name != None and not isinstance(suggest_name, FSString): raise ValueError( "get_create_path_name's suggest_name must be a FSString") # is root path? fn = FileName(path_name, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=path_name, node=self) # find node if fn.is_root_path_alias(): return self.root_dir, suggest_name else: # try to get path_name as a directory node = self.get_dir_path_name(path_name) if node != None: return node, suggest_name else: # split into dir and file name dn, fn = fn.get_dir_and_base_name() if dn != None: # has a directory -> try to fetch it node = self.get_dir_path_name(dn) else: # no dir -> assume root dir node = self.root_dir if fn != None: # take given name return node, fn else: # use suggested name return node, suggest_name
def get_create_path_name(self, path_name, suggest_name=None): """get a parent node and path name for creation return: parent_node_or_none, file_name_or_none """ # make sure input is correct if not isinstance(path_name, FSString): raise ValueError("get_create_path_name's path_name must be a FSString") if suggest_name != None and not isinstance(suggest_name, FSString): raise ValueError("get_create_path_name's suggest_name must be a FSString") # is root path? fn = FileName(path_name, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=path_name, node=self) # find node if fn.is_root_path_alias(): return self.root_dir, suggest_name else: # try to get path_name as a directory node = self.get_dir_path_name(path_name) if node != None: return node, suggest_name else: # split into dir and file name dn, fn = fn.get_dir_and_base_name() if dn != None: # has a directory -> try to fetch it node = self.get_dir_path_name(dn) else: # no dir -> assume root dir node = self.root_dir if fn != None: # take given name return node, fn else: # use suggested name return node, suggest_name