Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
 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
Esempio n. 8
0
 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)
Esempio n. 9
0
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
Esempio n. 10
0
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
Esempio n. 11
0
 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
Esempio n. 12
0
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
Esempio n. 13
0
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
Esempio n. 14
0
 def __init__(self):
     logger.info('Load Writer: %s' % self.writer_type)
Esempio n. 15
0
 def __init__(self):
     logger.info('Load Writer: %s' % self.writer_type)