renamed files; implemented command_entry; wrote real test and added test file structure
This commit is contained in:
1 parent
92c7aa8934
commit
d08aff8dd1
8 files changed
+82
-27
No files matched your search
@@ -1,6 +1,9 @@
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/python,pycharm+all,macos
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=python,pycharm+all,macos
|
||||
|
||||
### Custom ###
|
||||
tests/test_project_test_result
|
||||
|
||||
### macOS ###
|
||||
# General
|
||||
.DS_Store
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import bs4
|
||||
import sys
|
||||
import os
|
||||
from glob import glob
|
||||
from .formatters import formatters
|
||||
|
||||
|
||||
def convert_file(path: str, overwrite: bool = False) -> None:
|
||||
with open(path, "r") as file:
|
||||
soup = bs4.BeautifulSoup(file, "html.parser")
|
||||
|
||||
for formatter in formatters:
|
||||
formatter.format(soup)
|
||||
|
||||
if overwrite:
|
||||
out_path = path
|
||||
else:
|
||||
out_path = path.replace(".html", ".n.html")
|
||||
with open(out_path, "w") as file:
|
||||
file.write("{% load static %}\n")
|
||||
# indent=4 will be re added when https://github.com/python/typeshed/pull/11855 is accepted
|
||||
file.write(soup.prettify(formatter=bs4.formatter.HTMLFormatter()))
|
||||
|
||||
|
||||
def convert_dir(path: str, overwrite: bool = False) -> None:
|
||||
for filepath in glob(f"{path}/**/*.html", recursive=True):
|
||||
convert_file(filepath, overwrite)
|
||||
|
||||
|
||||
def command_entry() -> None:
|
||||
path = os.path.abspath(sys.argv[1])
|
||||
if os.path.isdir(path):
|
||||
convert_dir(path)
|
||||
elif os.path.isfile(path):
|
||||
convert_file(path)
|
||||
@@ -1,18 +0,0 @@
|
||||
import bs4
|
||||
from .formatters import formatters
|
||||
|
||||
|
||||
def main() -> None:
|
||||
with open("test.html", "r") as file:
|
||||
soup = bs4.BeautifulSoup(file, "html.parser")
|
||||
|
||||
for formatter in formatters:
|
||||
formatter.format(soup)
|
||||
|
||||
with open("out.html", "w") as file:
|
||||
file.write("{% load static %}\n")
|
||||
file.write(soup.prettify(formatter=bs4.formatter.HTMLFormatter(indent=4)))
|
||||
|
||||
|
||||
def command_entry() -> None:
|
||||
print("ok")
|
||||
+1
-1
@@ -37,7 +37,7 @@ Homepage = ""
|
||||
Issues = ""
|
||||
|
||||
[project.scripts]
|
||||
html_to_django = "html_to_django.main:command_entry"
|
||||
html_to_django = "html_to_django.converter:command_entry"
|
||||
|
||||
[tool.hatch.version]
|
||||
path = "html_to_django/__about__.py"
|
||||
@@ -1,8 +0,0 @@
|
||||
from html_to_django import main
|
||||
from unittest import TestCase
|
||||
|
||||
|
||||
class TestTocHTMLParser(TestCase):
|
||||
def test_command_entry(self):
|
||||
main.command_entry()
|
||||
self.assertEqual(0, 0)
|
||||
File renamed without changes.
@@ -0,0 +1,22 @@
|
||||
{% load static %}
|
||||
{% block content %}
|
||||
{% for i in items %}
|
||||
<p>
|
||||
{{ i.text }}
|
||||
</p>
|
||||
{% if i.selectable %}
|
||||
<p>
|
||||
Select Me
|
||||
</p>
|
||||
{% elif i.other %}
|
||||
<p>
|
||||
Else if
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
Else
|
||||
</p>
|
||||
<img src="{% static 'images/cool_image.png' %}"/>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,21 @@
|
||||
import os
|
||||
import filecmp
|
||||
import shutil
|
||||
from unittest import TestCase
|
||||
from html_to_django import converter
|
||||
|
||||
|
||||
class ConverterTests(TestCase):
|
||||
def test_convert_file(self):
|
||||
shutil.copytree(
|
||||
os.path.abspath("tests/test_project"),
|
||||
os.path.abspath("tests/test_project_test_result"),
|
||||
dirs_exist_ok=True
|
||||
)
|
||||
converter.convert_file(
|
||||
os.path.abspath("tests/test_project_test_result/test.html")
|
||||
)
|
||||
self.assertTrue(filecmp.cmp(
|
||||
os.path.abspath("tests/test_project_test_result/test.n.html"),
|
||||
os.path.abspath("tests/test_project_expected_result/test.n.html")
|
||||
))
|
||||
Reference in new issue
Block a user