mirror of https://github.com/eyhc1/rendercv.git
renderer: style HTML (#96)
This commit is contained in:
parent
0a5afc7294
commit
ee6f92059e
|
@ -1082,7 +1082,7 @@ class LocaleCatalog(RenderCVBaseModel):
|
||||||
validate_default=True, # To initialize the locale catalog with the default values
|
validate_default=True, # To initialize the locale catalog with the default values
|
||||||
)
|
)
|
||||||
to: Optional[str] = pydantic.Field(
|
to: Optional[str] = pydantic.Field(
|
||||||
default="--",
|
default="–", # en dash
|
||||||
title='Translation of "To"',
|
title='Translation of "To"',
|
||||||
description=(
|
description=(
|
||||||
"The word or character used to indicate a range in the locale (e.g.,"
|
"The word or character used to indicate a range in the locale (e.g.,"
|
||||||
|
|
|
@ -745,12 +745,19 @@ def get_an_item_with_a_specific_attribute_value(
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
# Only one Jinja2 environment is needed for all the templates:
|
||||||
|
jinja2_environment: Optional[jinja2.Environment] = None
|
||||||
|
|
||||||
|
|
||||||
def setup_jinja2_environment() -> jinja2.Environment:
|
def setup_jinja2_environment() -> jinja2.Environment:
|
||||||
"""Setup and return the Jinja2 environment for templating the $\\LaTeX$ files.
|
"""Setup and return the Jinja2 environment for templating the $\\LaTeX$ files.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
jinja2.Environment: The theme environment.
|
jinja2.Environment: The theme environment.
|
||||||
"""
|
"""
|
||||||
|
global jinja2_environment
|
||||||
|
|
||||||
|
if jinja2_environment is None:
|
||||||
# create a Jinja2 environment:
|
# create a Jinja2 environment:
|
||||||
# we need to add the current working directory because custom themes might be used.
|
# we need to add the current working directory because custom themes might be used.
|
||||||
themes_directory = pathlib.Path(__file__).parent / "themes"
|
themes_directory = pathlib.Path(__file__).parent / "themes"
|
||||||
|
@ -773,7 +780,9 @@ def setup_jinja2_environment() -> jinja2.Environment:
|
||||||
environment.filters["make_it_bold"] = make_matched_part_bold
|
environment.filters["make_it_bold"] = make_matched_part_bold
|
||||||
environment.filters["make_it_underlined"] = make_matched_part_underlined
|
environment.filters["make_it_underlined"] = make_matched_part_underlined
|
||||||
environment.filters["make_it_italic"] = make_matched_part_italic
|
environment.filters["make_it_italic"] = make_matched_part_italic
|
||||||
environment.filters["make_it_nolinebreak"] = make_matched_part_non_line_breakable
|
environment.filters["make_it_nolinebreak"] = (
|
||||||
|
make_matched_part_non_line_breakable
|
||||||
|
)
|
||||||
environment.filters["make_it_something"] = make_matched_part_something
|
environment.filters["make_it_something"] = make_matched_part_something
|
||||||
environment.filters["divide_length_by"] = divide_length_by
|
environment.filters["divide_length_by"] = divide_length_by
|
||||||
environment.filters["abbreviate_name"] = abbreviate_name
|
environment.filters["abbreviate_name"] = abbreviate_name
|
||||||
|
@ -785,7 +794,9 @@ def setup_jinja2_environment() -> jinja2.Environment:
|
||||||
)
|
)
|
||||||
environment.filters["escape_latex_characters"] = escape_latex_characters
|
environment.filters["escape_latex_characters"] = escape_latex_characters
|
||||||
|
|
||||||
return environment
|
jinja2_environment = environment
|
||||||
|
|
||||||
|
return jinja2_environment
|
||||||
|
|
||||||
|
|
||||||
def generate_latex_file(
|
def generate_latex_file(
|
||||||
|
@ -1042,10 +1053,8 @@ def pdf_to_pngs(pdf_file_path: pathlib.Path) -> list[pathlib.Path]:
|
||||||
|
|
||||||
|
|
||||||
def markdown_to_html(markdown_file_path: pathlib.Path) -> pathlib.Path:
|
def markdown_to_html(markdown_file_path: pathlib.Path) -> pathlib.Path:
|
||||||
"""Convert a markdown file to HTML.
|
"""Convert a markdown file to HTML with the same name and in the same directory.
|
||||||
|
It uses `rendercv/themes/main.j2.html` as the Jinja2 template.
|
||||||
RenderCV doesn't produce an HTML file as the final output, but generates it for
|
|
||||||
users to easily copy and paste the HTML into Grammarly for proofreading purposes.
|
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
markdown_file_path (pathlib.Path): The path to the markdown file to convert.
|
markdown_file_path (pathlib.Path): The path to the markdown file to convert.
|
||||||
|
@ -1056,14 +1065,25 @@ def markdown_to_html(markdown_file_path: pathlib.Path) -> pathlib.Path:
|
||||||
if not markdown_file_path.is_file():
|
if not markdown_file_path.is_file():
|
||||||
raise FileNotFoundError(f"The file {markdown_file_path} doesn't exist!")
|
raise FileNotFoundError(f"The file {markdown_file_path} doesn't exist!")
|
||||||
|
|
||||||
html_file_path = (
|
|
||||||
markdown_file_path.parent / f"{markdown_file_path.stem}_PASTETOGRAMMARLY.html"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Convert the markdown file to HTML:
|
# Convert the markdown file to HTML:
|
||||||
html = markdown.markdown(markdown_file_path.read_text(encoding="utf-8"))
|
markdown_text = markdown_file_path.read_text(encoding="utf-8")
|
||||||
|
html_body = markdown.markdown(markdown_text)
|
||||||
|
|
||||||
# write html into a file:
|
# Get the title of the markdown content:
|
||||||
|
title = re.search(r"# (.*)\n", markdown_text)
|
||||||
|
if title is None:
|
||||||
|
title = ""
|
||||||
|
else:
|
||||||
|
title = title.group(1)
|
||||||
|
|
||||||
|
jinja2_environment = setup_jinja2_environment()
|
||||||
|
html_template = jinja2_environment.get_template("main.j2.html")
|
||||||
|
html = html_template.render(html_body=html_body, title=title)
|
||||||
|
|
||||||
|
# Write html into a file:
|
||||||
|
html_file_path = (
|
||||||
|
markdown_file_path.parent / f"{markdown_file_path.stem}_OPENINBROWSER_AND.html"
|
||||||
|
)
|
||||||
html_file_path.write_text(html, encoding="utf-8")
|
html_file_path.write_text(html, encoding="utf-8")
|
||||||
|
|
||||||
return html_file_path
|
return html_file_path
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>
|
||||||
|
<<title>>
|
||||||
|
</title>
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.5.1/github-markdown-light.min.css"
|
||||||
|
integrity="sha512-Pmhg2i/F7+5+7SsdoUqKeH7UAZoVMYb1sxGOoJ0jWXAEHP0XV2H4CITyK267eHWp2jpj7rtqWNkmEOw1tNyYpg=="
|
||||||
|
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
<style>
|
||||||
|
.markdown-body {
|
||||||
|
box-sizing: border-box;
|
||||||
|
min-width: 200px;
|
||||||
|
max-width: 980px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.markdown-body {
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<article class="markdown-body">
|
||||||
|
<<html_body|indent(8)>>
|
||||||
|
</article>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
Loading…
Reference in New Issue