Exemplo n.º 1
0
    def test_html_tag_tree(self) -> None:
        html = """
            <!-- test -->
            <!DOCTYPE html>
            <html>
            <!-- test -->
            <head>
                <title>Test</title>
                <meta charset="utf-8" />
                <link rel="stylesheet" href="style.css" />
            </head>
            <body>
                <p>Hello<br>world!</p>
                <p>Goodbye<!-- test -->world!</p>
            </body>
            </html>
            <!-- test -->
        """

        tree = html_tag_tree(html)

        assert tree.children[0].token is not None
        self.assertEqual(tree.children[0].token.kind, "html_start")
        self.assertEqual(tree.children[0].token.tag, "html")

        assert tree.children[0].children[0].token is not None
        self.assertEqual(tree.children[0].children[0].token.kind, "html_start")
        self.assertEqual(tree.children[0].children[0].token.tag, "head")

        assert tree.children[0].children[0].children[0].token is not None
        self.assertEqual(tree.children[0].children[0].children[0].token.kind,
                         "html_start")
        self.assertEqual(tree.children[0].children[0].children[0].token.tag,
                         "title")

        assert tree.children[0].children[1].token is not None
        self.assertEqual(tree.children[0].children[1].token.kind, "html_start")
        self.assertEqual(tree.children[0].children[1].token.tag, "body")

        assert tree.children[0].children[1].children[0].token is not None
        self.assertEqual(tree.children[0].children[1].children[0].token.kind,
                         "html_start")
        self.assertEqual(tree.children[0].children[1].children[0].token.tag,
                         "p")

        assert tree.children[0].children[1].children[0].children[
            0].token is not None
        self.assertEqual(
            tree.children[0].children[1].children[0].children[0].token.kind,
            "html_singleton")
        self.assertEqual(
            tree.children[0].children[1].children[0].children[0].token.tag,
            "br")

        assert tree.children[0].children[1].children[1].token is not None
        self.assertEqual(tree.children[0].children[1].children[1].token.kind,
                         "html_start")
        self.assertEqual(tree.children[0].children[1].children[1].token.tag,
                         "p")
Exemplo n.º 2
0
    def test_html_tag_tree(self) -> None:
        html = """
            <!-- test -->
            <!DOCTYPE html>
            <html>
            <!-- test -->
            <head>
                <title>Test</title>
                <meta charset="utf-8" />
                <link rel="stylesheet" href="style.css" />
            </head>
            <body>
                <p>Hello<br>world!</p>
                <p>Goodbye<!-- test -->world!</p>
            </body>
            </html>
            <!-- test -->
        """

        tree = html_tag_tree(html)

        def serialize(node: Node) -> object:
            return (
                node.token and (node.token.kind, node.token.tag),
                [serialize(child) for child in node.children],
            )

        expected = (
            None,
            [
                (
                    ("html_start", "html"),
                    [
                        (
                            ("html_start", "head"),
                            [
                                (("html_start", "title"), []),
                                (("html_singleton", "meta"), []),
                                (("html_singleton", "link"), []),
                            ],
                        ),
                        (
                            ("html_start", "body"),
                            [
                                (
                                    ("html_start", "p"),
                                    [(("html_start", "br"), []), (("html_start", "p"), [])],
                                )
                            ],
                        ),
                    ],
                )
            ],
        )
        self.assertEqual(serialize(tree), expected)
Exemplo n.º 3
0
    def test_html_tag_tree(self):
        # type: () -> None
        html = """
            <!-- test -->
            <!DOCTYPE html>
            <html>
            <!-- test -->
            <head>
                <title>Test</title>
                <meta charset="utf-8" />
                <link rel="stylesheet" href="style.css" />
            </head>
            <body>
                <p>Hello<br />world!</p>
                <p>Goodbye<!-- test -->world!</p>
            </body>
            </html>
            <!-- test -->
        """

        tree = html_tag_tree(html)

        self.assertEqual(tree.children[0].token.kind, 'html_start')
        self.assertEqual(tree.children[0].token.tag, 'html')

        self.assertEqual(tree.children[0].children[0].token.kind, 'html_start')
        self.assertEqual(tree.children[0].children[0].token.tag, 'head')

        self.assertEqual(tree.children[0].children[0].children[0].token.kind,
                         'html_start')
        self.assertEqual(tree.children[0].children[0].children[0].token.tag,
                         'title')

        self.assertEqual(tree.children[0].children[1].token.kind, 'html_start')
        self.assertEqual(tree.children[0].children[1].token.tag, 'body')

        self.assertEqual(tree.children[0].children[1].children[0].token.kind,
                         'html_start')
        self.assertEqual(tree.children[0].children[1].children[0].token.tag,
                         'p')

        self.assertEqual(
            tree.children[0].children[1].children[0].children[0].token.kind,
            'html_singleton')
        self.assertEqual(
            tree.children[0].children[1].children[0].children[0].token.tag,
            'br')

        self.assertEqual(tree.children[0].children[1].children[1].token.kind,
                         'html_start')
        self.assertEqual(tree.children[0].children[1].children[1].token.tag,
                         'p')
Exemplo n.º 4
0
    def test_html_tag_tree(self):
        # type: () -> None
        html = """
            <!-- test -->
            <!DOCTYPE html>
            <html>
            <!-- test -->
            <head>
                <title>Test</title>
                <meta charset="utf-8" />
                <link rel="stylesheet" href="style.css" />
            </head>
            <body>
                <p>Hello<br />world!</p>
                <p>Goodbye<!-- test -->world!</p>
            </body>
            </html>
            <!-- test -->
        """

        tree = html_tag_tree(html)

        self.assertEqual(tree.children[0].token.kind, 'html_start')
        self.assertEqual(tree.children[0].token.tag, 'html')

        self.assertEqual(tree.children[0].children[0].token.kind, 'html_start')
        self.assertEqual(tree.children[0].children[0].token.tag, 'head')

        self.assertEqual(tree.children[0].children[0].children[0].token.kind, 'html_start')
        self.assertEqual(tree.children[0].children[0].children[0].token.tag, 'title')

        self.assertEqual(tree.children[0].children[1].token.kind, 'html_start')
        self.assertEqual(tree.children[0].children[1].token.tag, 'body')

        self.assertEqual(tree.children[0].children[1].children[0].token.kind, 'html_start')
        self.assertEqual(tree.children[0].children[1].children[0].token.tag, 'p')

        self.assertEqual(tree.children[0].children[1].children[0].children[0].token.kind, 'html_singleton')
        self.assertEqual(tree.children[0].children[1].children[0].children[0].token.tag, 'br')

        self.assertEqual(tree.children[0].children[1].children[1].token.kind, 'html_start')
        self.assertEqual(tree.children[0].children[1].children[1].token.tag, 'p')