Example #1
0
def test_parse_cells_slide_hierarchy():
    tokens = [
        Token.TITLE('# 111\n', level=1),
        Token.AFTER_TITLE(level=1),
        Token.SPLIT('---\n'),
        Token.LINE('foo\n'),
        Token.SPLIT('---\n'),
        Token.LINE('bar\n'),
        Token.TITLE('## secret\n', level=2),
        Token.AFTER_TITLE(level=2),
        Token.LINE('baz\n'),
        Token.TITLE('## secret\n', level=2),
        Token.AFTER_TITLE(level=2),
        Token.START_CODE(language='python'),
        Token.LINE('x = 0\n'),
        Token.END_CODE(),
    ]

    split_rules = {
        SlideType.SLIDE: [Token.TITLE(level=1)],
        SlideType.SUBSLIDE: [Token.AFTER_TITLE(level=1)],
        SlideType.FRAGMENT: [Token.SPLIT()],
        SlideType.CONTINUE: [
            Token.TITLE(level=2),
            Token.START_CODE(),
            Token.END_CODE(),
        ],
        SlideType.SKIP: [Token.AFTER_TITLE(level=2)],
    }
    cells = list(parse_cells(tokens, split_rules))
    assert cells == [
        Cell('markdown', 'slide', ['# 111']),
        Cell('markdown', 'subslide', ['foo']),  # Ignore Token.SPLIT
        Cell('markdown', 'fragment', ['bar']),
        Cell('markdown', '-', ['## secret']),
        Cell('markdown', 'skip', ['baz']),
        Cell('markdown', '-', ['## secret']),  # Go back to normal side
        Cell('code', '-', ['x = 0']),  # START_CODE resets slide type
    ]

    split_rules = {
        SlideType.SLIDE: [Token.TITLE(level=1)],
        SlideType.FRAGMENT: [Token.SPLIT()],
        SlideType.CONTINUE: [Token.START_CODE(),
                             Token.END_CODE()],
        SlideType.SKIP: [Token.AFTER_TITLE(level=2)],
    }
    cells = list(parse_cells(tokens, split_rules))
    assert cells == [
        Cell('markdown', 'slide', ['# 111']),
        Cell('markdown', 'fragment', ['foo']),
        Cell('markdown', 'fragment', ['bar\n', '## secret']),
        Cell('markdown', 'skip', ['baz\n', '## secret']),
        Cell('code', '-', ['x = 0']),
    ]
Example #2
0
def test_parse_cells_no_splits():
    cells = list(parse_cells(TOKENS, {}))
    assert cells == [
        Cell('markdown', 'slide', [
            '# 111\n',
            '\n',
            '* bullet point\n',
            '* bullet point 2\n',
            '\n',
            '```python\n',
            'def random():\n',
            '    return 4\n',
            '```\n',
            '\n',
            '---\n',
            '\n',
            '```python\n',
            'print(random())\n',
            '```\n',
            '\n',
            '---\n',
            '\n',
            'Text.\n',
            '## 222\n',
            '\n',
            '```python skip\n',
            'import itertools\n',
            '```\n',
            '\n',
            'Hello world.',
        ]),
    ]
Example #3
0
def test_parse_cells_horizontal_split():
    split_rules = {SlideType.SUBSLIDE: [Token.SPLIT()]}
    cells = list(parse_cells(TOKENS, split_rules))
    assert cells == [
        Cell('markdown', 'slide', [
            '# 111\n',
            '\n',
            '* bullet point\n',
            '* bullet point 2\n',
            '\n',
            '```python\n',
            'def random():\n',
            '    return 4\n',
            '```',
        ]),
        Cell('markdown', 'subslide', [
            '```python\n',
            'print(random())\n',
            '```',
        ]),
        Cell('markdown', 'subslide', [
            'Text.\n',
            '## 222\n',
            '\n',
            '```python skip\n',
            'import itertools\n',
            '```\n',
            '\n',
            'Hello world.',
        ]),
    ]
Example #4
0
def test_parse_cells_combine_split():
    split_rules = {
        SlideType.SLIDE: [Token.TITLE(level=1)],
        SlideType.SUBSLIDE: [Token.AFTER_TITLE(level=1),
                             Token.TITLE(level=2)],
        SlideType.FRAGMENT: [Token.SPLIT()],
        SlideType.CONTINUE: [Token.START_CODE(),
                             Token.END_CODE()],
        SlideType.SKIP: [Token.START_CODE(skip=True)],
    }
    cells = list(parse_cells(TOKENS, split_rules))
    assert cells == [
        Cell('markdown', 'slide', ['# 111']),
        Cell('markdown', 'subslide', ['* bullet point\n', '* bullet point 2']),
        Cell('code', '-', ['def random():\n', '    return 4']),
        Cell('code', 'fragment', ['print(random())']),
        Cell('markdown', 'fragment', ['Text.']),
        Cell('markdown', 'subslide', ['## 222']),
        Cell('code', 'skip', ['import itertools']),
        Cell('markdown', '-', ['Hello world.']),
    ]
Example #5
0
def test_parse_cells_code_split():
    split_rules = {
        SlideType.CONTINUE: [Token.START_CODE(),
                             Token.END_CODE()],
        SlideType.SKIP: [Token.START_CODE(skip=True)],
    }
    cells = list(parse_cells(TOKENS, split_rules))
    assert cells == [
        Cell('markdown', 'slide', [
            '# 111\n',
            '\n',
            '* bullet point\n',
            '* bullet point 2',
        ]),
        Cell('code', '-', ['def random():\n', '    return 4']),
        Cell('markdown', '-', ['---']),
        Cell('code', '-', ['print(random())']),
        Cell('markdown', '-', ['---\n', '\n', 'Text.\n', '## 222']),
        Cell('code', 'skip', ['import itertools']),
        Cell('markdown', '-', ['Hello world.']),
    ]
Example #6
0
def test_parse_cells_title_splits():
    split_rules = {
        SlideType.SLIDE: [Token.TITLE(level=1)],
        SlideType.SUBSLIDE: [Token.TITLE(level=2)],
    }
    cells = list(parse_cells(TOKENS, split_rules))
    assert cells == [
        Cell('markdown', 'slide', [
            '# 111\n',
            '\n',
            '* bullet point\n',
            '* bullet point 2\n',
            '\n',
            '```python\n',
            'def random():\n',
            '    return 4\n',
            '```\n',
            '\n',
            '---\n',
            '\n',
            '```python\n',
            'print(random())\n',
            '```\n',
            '\n',
            '---\n',
            '\n',
            'Text.',
        ]),
        Cell('markdown', 'subslide', [
            '## 222\n',
            '\n',
            '```python skip\n',
            'import itertools\n',
            '```\n',
            '\n',
            'Hello world.',
        ]),
    ]

    split_rules = {
        SlideType.SLIDE: [Token.TITLE(level=1)],
        SlideType.SUBSLIDE: [Token.AFTER_TITLE(level=1),
                             Token.TITLE(level=2)],
    }
    cells = list(parse_cells(TOKENS, split_rules))
    assert cells == [
        Cell('markdown', 'slide', ['# 111']),
        Cell('markdown', 'subslide', [
            '* bullet point\n',
            '* bullet point 2\n',
            '\n',
            '```python\n',
            'def random():\n',
            '    return 4\n',
            '```\n',
            '\n',
            '---\n',
            '\n',
            '```python\n',
            'print(random())\n',
            '```\n',
            '\n',
            '---\n',
            '\n',
            'Text.',
        ]),
        Cell('markdown', 'subslide', [
            '## 222\n',
            '\n',
            '```python skip\n',
            'import itertools\n',
            '```\n',
            '\n',
            'Hello world.',
        ]),
    ]