Пример #1
0
 def _generate(self, source):
     content = []
     content.append(
         blocks.Html([
             '<!DOCTYPE html>',
             '<html>',
             '<head>',
             '<title>{}</title>'.format(self._title),
             '<link rel="stylesheet" href="style.css">',
             '<link rel="stylesheet" href="highlight.css">',
             '<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">',
             '<script src="marked.js"></script>',
             '<script src="script.js"></script>',
             '<script src="highlight.js"></script>',
             '<script>hljs.initHighlightingOnLoad();</script>',
             MATHJAX_SCRIPTS,
             '</head>',
             '<body>',
             '<article>',
         ]))
     content.append(blocks.Code())
     excluding = False  # Range exclude.
     for lineno, line in enumerate(source.split('\n')):
         lineno += 1  # Line numbers are 1-based indices.
         line = line.rstrip()
         if isinstance(content[-1], blocks.Code) and line.startswith('"""'):
             line = line[3:]
             content.append(blocks.Text())
         if isinstance(content[-1], blocks.Text) and line.endswith('"""'):
             line = line[:-3]
             content[-1].append(line)
             content.append(blocks.Code())
             continue
         if isinstance(content[-1], blocks.Text):
             content[-1].append(line)
         elif line == '# handout: begin-exclude':
             excluding = True
         elif line == '# handout: end-exclude':
             excluding = False
         elif excluding:
             pass
         elif line.endswith('# handout: exclude'):
             pass
         else:
             content[-1].append(line)
         blocks_ = self._blocks[lineno]
         if blocks_:
             for block in blocks_:
                 content.append(block)
             content.append(blocks.Code())
     content.append(blocks.Html([
         '</article>',
         '</body>',
         '</html>',
     ]))
     return ''.join(block.render() for block in content)
Пример #2
0
 def _generate(self, source):
     content = [blocks.Html([
         '<!doctype html>',
         '<html lang="zh-cn">',
         '<head>',
         '<meta charset="UTF-8">',
         '<meta name="viewport" content="width=device-width, initial-scale=1.0">',
         '<meta http-equiv="X-UA-Compatible" content="ie=edge">',
         '<title>{}</title>'.format(self._title),
         '<link rel="stylesheet" href="style.css">',
         '<link rel="stylesheet" href="highlight.css">',
         '<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">',
         '<script src="marked.js"></script>',
         '<script src="script.js"></script>',
         '<script src="highlight.js"></script>',
         '<script>hljs.initHighlightingOnLoad();</script>',
         '</head>',
         '<body>',
         '<article>',
     ]), blocks.Code()]
     for lineno, line in enumerate(source.split('\n')):
         lineno += 1  # Line numbers are 1-based indices.
         line = line.rstrip()
         if isinstance(content[-1], blocks.Code) and line.startswith('"""'):
             line = line[3:]
             content.append(blocks.Text())
         if isinstance(content[-1], blocks.Text) and line.endswith('"""'):
             line = line[:-3]
             content[-1].append(line)
             content.append(blocks.Code())
             continue
         if not line.endswith('# handout: exclude'):
             content[-1].append(line)
         blocks_ = self._blocks[lineno]
         if blocks_:
             for block in blocks_:
                 content.append(block)
             content.append(blocks.Code())
     content.append(blocks.Html([
         '</article>',
         '</body>',
         '</html>',
     ]))
     return ''.join(block.render() for block in content)
Пример #3
0
 def _generate(self, source):
     content = []
     content.append(
         blocks.Html([
             '<html>',
             '<head>',
             '<title>Handout</title>',
             '<link rel="stylesheet" href="style.css">',
             '<link rel="stylesheet" href="highlight.css">',
             '<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">',
             '<script src="marked.js"></script>',
             '<script src="script.js"></script>',
             '<script src="highlight.js"></script>',
             '<script>hljs.initHighlightingOnLoad();</script>',
             '</head>',
             '<body>',
             '<article>',
         ]))
     content.append(blocks.Code())
     for lineno, line in enumerate(source.split('\n')):
         lineno += 1  # Line numbers are 1-based indices.
         line = line.rstrip()
         if isinstance(content[-1], blocks.Code) and line.startswith('"""'):
             line = line[3:]
             content.append(blocks.Text())
         if isinstance(content[-1], blocks.Text) and line.endswith('"""'):
             line = line[:-3]
             content[-1].append(line)
             content.append(blocks.Code())
             continue
         if not line.endswith('# handout=exclude'):
             content[-1].append(line)
         blocks_ = self._blocks[lineno]
         if blocks_:
             for block in blocks_:
                 content.append(block)
             content.append(blocks.Code())
     content.append(blocks.Html([
         '</article>',
         '</body>',
         '</html>',
     ]))
     return ''.join(block.render() for block in content)