def read(self): f = open(self.filepath) logger.info('read ' + self.filepath) content = f.read() f.close() meta_regex = re.compile( r"^\s*(?:-|=){3,}\s*\n((?:.|\n)+?)\n\s*(?:-|=){3,}\s*\n*", re.MULTILINE ) match = re.match(meta_regex, content) if not match: logger.error("No metadata in: %s" % self.filepath) return None meta = match.group(1) meta = re.sub(r'\r\n|\r|\n', '\n', meta) dct = {} k = v = None for meta in meta.split('\n'): meta = meta.replace('\t', ' ') if meta.startswith(' ') and k: dct[k] = dct[k] + '\n' + meta.lstrip() if ':' in meta and not meta.startswith(' '): index = meta.find(':') k, v = meta[:index], meta[index + 1:] k, v = k.rstrip(), v.lstrip() dct[k] = to_unicode(v) text = to_unicode(content[match.end():]) dct['content'] = markdown(text) return dct
def read(self): f = open(self.filepath) logger.info('read ' + self.filepath) content = f.read() f.close() extra_setting = {'initial_header_level': '2'} parts = publish_parts( content, writer_name='html', settings_overrides=extra_setting, ) # get docinfo docinfo = [] content = parts['docinfo'].replace('\n', '') if not content: return parts dom = minidom.parseString(content.encode('utf-8')) nodes = dom.getElementsByTagName('tr') for node in nodes: docinfo.append(self._node_to_pairs(node)) parts['docinfo'] = docinfo return parts
def read(self): f = open(self.filepath) logger.info('read ' + self.filepath) content = f.read() f.close() meta_regex = re.compile( r"^\s*(?:-|=){3,}\s*\n((?:.|\n)+?)\n\s*(?:-|=){3,}\s*\n*", re.MULTILINE) match = re.match(meta_regex, content) if not match: logger.error("No metadata in: %s" % self.filepath) return None meta = match.group(1) meta = re.sub(r'\r\n|\r|\n', '\n', meta) dct = {} k = v = None for meta in meta.split('\n'): meta = meta.replace('\t', ' ') if meta.startswith(' ') and k: dct[k] = dct[k] + '\n' + meta.lstrip() if ':' in meta and not meta.startswith(' '): index = meta.find(':') k, v = meta[:index], meta[index + 1:] k, v = k.rstrip(), v.lstrip() dct[k] = to_unicode(v) text = to_unicode(content[match.end():]) dct['content'] = markdown(text) return dct
def copy_to(source, dest): if os.path.exists(dest) and os.stat(source).st_mtime < os.stat(dest).st_mtime: logger.info('Ignore ' + source) return False make_folder(dest) logger.info('copy ' + source) shutil.copy(source, dest) return True
def copy_to(source, dest): if os.path.exists(dest) and \ os.stat(source).st_mtime < os.stat(dest).st_mtime: logger.info('Ignore ' + source) return False make_folder(dest) logger.info('copy ' + source) shutil.copy(source, dest) return True
def write(self, params, tpl, dest): dest = os.path.join(self.deploydir, dest) logger.info('write ' + dest) make_folder(dest) f = open(dest, 'w') html = self.render(tpl, params) f.write(html.encode('utf-8')) f.close() return
def __init__(self): if self.first_runing: logger.info('Load Writer: %s' % self.writer_type) # calc all posts if not namespace.allposts: for f in _walk(self.postdir): reader = detect_reader(f) if reader: namespace.allposts.append(reader.render()) else: namespace.allfiles.append(f)
def build(config_file): begin = time.time() if not os.path.exists(config_file): answer = raw_input('This is not a Felix Felicis repo, ' 'would you like to create one?(Y/n) ') if answer.lower() == 'n': sys.exit(1) return return create() init_config(config_file) init_post() logger.info('Starting readers') for reader in ns.readers.values(): if reader: import_module(reader)().start() logger.info('Starting writers') for writer in ns.writers.values(): if writer: import_module(writer)().start() logger.info('Running writers') for writer in ns.writers.values(): if writer: import_module(writer)().run() for error in ns.storage.errors: logger.error('Invalid Post: %s' % error) end = time.time() logger.info('Total time: %s' % (end - begin)) return
def _calc_rel_posts(self): public_posts = [] secret_posts = [] for post in namespace.allposts: if post.public: public_posts.append(post) else: logger.info('Secrect Post: %s' % post.destination) secret_posts.append(post) public_posts = sort_posts(public_posts) i = 0 count = len(public_posts) for post in public_posts: if i > 0: public_posts[i].prev = public_posts[i - 1] if i + 1 < count: public_posts[i].next = public_posts[i + 1] i += 1 posts = public_posts posts.extend(secret_posts) return posts
def build(config_file): if not os.path.exists(config_file): answer = raw_input('This is not a Felix Felicis repo, would you like to create one?(Y/n) ') if 'n' == answer.lower(): sys.exit(1) return return create() init(config_file) begin = time.time() for reader in namespace.readers.values(): import_module(reader)().start() for writer in namespace.writers.values(): import_module(writer)().start() for writer in namespace.writers.values(): import_module(writer)().run() end = time.time() logger.info('Total time: %s' % (end - begin)) return
def build(config_file): if not os.path.exists(config_file): answer = raw_input('This is not a Felix Felicis repo, ' 'would you like to create one?(Y/n) ') if 'n' == answer.lower(): sys.exit(1) return return create() init(config_file) begin = time.time() for reader in namespace.readers.values(): import_module(reader)().start() for writer in namespace.writers.values(): import_module(writer)().start() for writer in namespace.writers.values(): import_module(writer)().run() end = time.time() logger.info('Total time: %s' % (end - begin)) return
def __init__(self): logger.info('Load Writer: %s' % self.writer_type)