コード例 #1
0
ファイル: test_token.py プロジェクト: wna-se/markdown-it-py
def test_token():
    token = Token("name", "tag", 0)
    assert token.as_dict() == {
        "type": "name",
        "tag": "tag",
        "nesting": 0,
        "attrs": None,
        "map": None,
        "level": 0,
        "children": None,
        "content": "",
        "markup": "",
        "info": "",
        "meta": {},
        "block": False,
        "hidden": False,
    }
    token.attrSet("a", "b")
    assert token.attrGet("a") == "b"
    token.attrJoin("a", "c")
    assert token.attrGet("a") == "b c"
    token.attrPush(["x", "y"])
    assert token.attrGet("x") == "y"
    assert token.attrIndex("a") == 0
    assert token.attrIndex("x") == 1
    assert token.attrIndex("j") == -1
コード例 #2
0
def test_comment_token():
    md = MarkdownIt("commonmark").use(myst_block_plugin)
    tokens = md.parse("\n\n% abc \n%def")
    expected_token = Token(
        type="myst_line_comment",
        tag="",
        nesting=0,
        map=[2, 4],
        level=0,
        children=None,
        content=" abc\ndef",
        markup="%",
        info="",
        meta={},
        block=True,
        hidden=False,
    )
    expected_token.attrSet("class", "myst-line-comment")
    assert tokens == [expected_token]
コード例 #3
0
def test_block_token():
    md = MarkdownIt("commonmark").use(myst_block_plugin)
    tokens = md.parse("+++")
    expected_token = Token(
        type="myst_block_break",
        tag="hr",
        nesting=0,
        map=[0, 1],
        level=0,
        children=None,
        content="",
        markup="+++",
        info="",
        meta={},
        block=True,
        hidden=False,
    )
    expected_token.attrSet("class", "myst-block")
    assert tokens == [expected_token]

    tokens = md.parse("\n+ + + abc")
    expected_token = Token(
        type="myst_block_break",
        tag="hr",
        nesting=0,
        map=[1, 2],
        level=0,
        children=None,
        content="abc",
        markup="+++",
        info="",
        meta={},
        block=True,
        hidden=False,
    )
    expected_token.attrSet("class", "myst-block")
    assert tokens == [expected_token]
コード例 #4
0
    def _anchor_func(state: StateCore):
        for (idx, token) in enumerate(state.tokens):
            if token.type != "heading_open":
                continue
            level = int(token.tag[1])
            if level not in selected_levels:
                continue
            inline_token = state.tokens[idx + 1]
            assert inline_token.children is not None
            title = "".join(child.content for child in inline_token.children
                            if child.type in ["text", "code_inline"])
            slug = unique_slug(slug_func(title), slugs)
            token.attrSet("id", slug)

            if permalink:
                link_open = Token(
                    "link_open",
                    "a",
                    1,
                )
                link_open.attrSet("class", "header-anchor")
                link_open.attrSet("href", f"#{slug}")
                link_tokens = [
                    link_open,
                    Token("html_block", "", 0, content=permalinkSymbol),
                    Token("link_close", "a", -1),
                ]
                if permalinkBefore:
                    inline_token.children = (
                        link_tokens + ([Token("text", "", 0, content=" ")]
                                       if permalinkSpace else []) +
                        inline_token.children)
                else:
                    inline_token.children.extend(
                        ([Token("text", "", 0, content=" "
                                )] if permalinkSpace else []) + link_tokens)