def read_files(self): """ Walks through the project directory and separates files into parseable files (file extensions for which a parser exists) and static files (file extensions for which no parser exists) """ data = OrderedDict() for root, dirs, files in walk_ignore(self.project_dir): pages = [] parseables = [] # parseable files; rename to (pages) static = [] # rename to (static) # check if a parser exists and append to corresponding list for file in files: path = join(root, file) if parser.get_parser_for_filename(path): parseables.append(path) else: static.append(path) # create pages from parseables for path in parseables: static_files = static if root != self.project_dir else [] pages.append(self._create_page(path, static_files)) # assign static files with pages if pages: data[root] = (pages, static) elif static: # dir has static file(s) but no pages. check if one of # the parent dirs has a page and associate the static files # with it has_parent = False if root != self.project_dir: parent_dir = dirname(root) while parent_dir != self.project_dir: if parent_dir in data: data.setdefault(parent_dir, ([], []))[1].\ extend(static) has_parent = True parent_dir = dirname(parent_dir) # if no parent dir could be found, or the file is in the # root dir associate the files with the root of the project dir if not has_parent: data.setdefault(self.project_dir, ([], []))[1].extend(static) return data
def read_files(self): """ Walks through the project directory and separates files into parseable files (file extensions for which a parser exists) and static files (file extensions for which no parser exists) """ data = OrderedDict() for root, _, files in walk_ignore(self.project_dir): pages = [] parseables = [] # parseable files; rename to (pages) static = [] # rename to (static) # check if a parser exists and append to corresponding list for file in files: path = join(root, file) if parser.get_parser_for_filename(path): parseables.append(path) else: static.append(path) # create pages from parseables for path in parseables: static_files = static if root != self.project_dir else [] pages.append(self._create_page(path, static_files)) # assign static files with pages if pages: data[root] = (pages, static) elif static: # dir has static file(s) but no pages. check if one of # the parent dirs has a page and associate the static files # with it has_parent = False if root != self.project_dir: parent_dir = dirname(root) while parent_dir != self.project_dir: if parent_dir in data: data.setdefault(parent_dir, ([], []))[1].\ extend(static) has_parent = True parent_dir = dirname(parent_dir) # if no parent dir could be found, or the file is in the # root dir associate the files with the root of the project dir if not has_parent: data.setdefault(self.project_dir, ([], []))[1].extend(static) return data
def get_parser_class(self): if not self.parser_cls: self.parser_cls = parser.get_parser_for_filename(self['path']) return self.parser_cls