Fixed UTF-8 with BOM encoding support

This commit is contained in:
Kamil Krzyśków 2024-03-17 04:43:34 +01:00 committed by Martin Donath
parent 2f1b2e9500
commit 022f14c0eb
8 changed files with 12 additions and 12 deletions

View File

@ -460,7 +460,7 @@ class BlogPlugin(BasePlugin[BlogConfig]):
return config.authors return config.authors
# Open file and parse as YAML # Open file and parse as YAML
with open(file, encoding = "utf-8") as f: with open(file, encoding = "utf-8-sig") as f:
config.config_file_path = os.path.abspath(file) config.config_file_path = os.path.abspath(file)
try: try:
config.load_dict(yaml.load(f, SafeLoader) or {}) config.load_dict(yaml.load(f, SafeLoader) or {})

View File

@ -57,7 +57,7 @@ class Post(Page):
path = os.path.relpath(file.abs_src_path, docs) path = os.path.relpath(file.abs_src_path, docs)
# Read contents and metadata immediately # Read contents and metadata immediately
with open(file.abs_src_path, encoding = "utf-8") as f: with open(file.abs_src_path, encoding = "utf-8-sig") as f:
self.markdown = f.read() self.markdown = f.read()
# Sadly, MkDocs swallows any exceptions that occur during parsing. # Sadly, MkDocs swallows any exceptions that occur during parsing.

View File

@ -437,7 +437,7 @@ def _convert_to_abs(path: str, abs_prefix: str = None) -> str:
# logic. Side effect: It converts the INHERIT path to absolute. # logic. Side effect: It converts the INHERIT path to absolute.
def _load_yaml(abs_src_path: str): def _load_yaml(abs_src_path: str):
with open(abs_src_path, "r", encoding ="utf-8-sig") as file: with open(abs_src_path, encoding ="utf-8-sig") as file:
source = file.read() source = file.read()
try: try:
@ -479,7 +479,7 @@ def _resolve_pattern(abspath: str, return_path: bool = False):
# Get project configuration with resolved absolute paths for validation # Get project configuration with resolved absolute paths for validation
def _get_project_config(project_config_file: str): def _get_project_config(project_config_file: str):
with open(project_config_file, encoding="utf-8") as file: with open(project_config_file, encoding="utf-8-sig") as file:
config = MkDocsConfig(config_file_path = project_config_file) config = MkDocsConfig(config_file_path = project_config_file)
config.load_file(file) config.load_file(file)

View File

@ -254,7 +254,7 @@ class PrivacyPlugin(BasePlugin[PrivacyConfig]):
# Find and extract all external asset URLs # Find and extract all external asset URLs
expr = re.compile(self.assets_expr_map[extension], flags = re.I | re.M) expr = re.compile(self.assets_expr_map[extension], flags = re.I | re.M)
with open(initiator.abs_src_path, encoding = "utf-8") as f: with open(initiator.abs_src_path, encoding = "utf-8-sig") as f:
return [urlparse(url) for url in re.findall(expr, f.read())] return [urlparse(url) for url in re.findall(expr, f.read())]
# Parse template or page HTML and find all external links that need to be # Parse template or page HTML and find all external links that need to be
@ -437,7 +437,7 @@ class PrivacyPlugin(BasePlugin[PrivacyConfig]):
# Patch all links to external assets in the given file # Patch all links to external assets in the given file
def _patch(self, initiator: File): def _patch(self, initiator: File):
with open(initiator.abs_src_path, encoding = "utf-8") as f: with open(initiator.abs_src_path, encoding = "utf-8-sig") as f:
# Replace callback # Replace callback
def replace(match: Match): def replace(match: Match):

View File

@ -460,7 +460,7 @@ class BlogPlugin(BasePlugin[BlogConfig]):
return config.authors return config.authors
# Open file and parse as YAML # Open file and parse as YAML
with open(file, encoding = "utf-8") as f: with open(file, encoding = "utf-8-sig") as f:
config.config_file_path = os.path.abspath(file) config.config_file_path = os.path.abspath(file)
try: try:
config.load_dict(yaml.load(f, SafeLoader) or {}) config.load_dict(yaml.load(f, SafeLoader) or {})

View File

@ -57,7 +57,7 @@ class Post(Page):
path = os.path.relpath(file.abs_src_path, docs) path = os.path.relpath(file.abs_src_path, docs)
# Read contents and metadata immediately # Read contents and metadata immediately
with open(file.abs_src_path, encoding = "utf-8") as f: with open(file.abs_src_path, encoding = "utf-8-sig") as f:
self.markdown = f.read() self.markdown = f.read()
# Sadly, MkDocs swallows any exceptions that occur during parsing. # Sadly, MkDocs swallows any exceptions that occur during parsing.

View File

@ -437,7 +437,7 @@ def _convert_to_abs(path: str, abs_prefix: str = None) -> str:
# logic. Side effect: It converts the INHERIT path to absolute. # logic. Side effect: It converts the INHERIT path to absolute.
def _load_yaml(abs_src_path: str): def _load_yaml(abs_src_path: str):
with open(abs_src_path, "r", encoding ="utf-8-sig") as file: with open(abs_src_path, encoding ="utf-8-sig") as file:
source = file.read() source = file.read()
try: try:
@ -479,7 +479,7 @@ def _resolve_pattern(abspath: str, return_path: bool = False):
# Get project configuration with resolved absolute paths for validation # Get project configuration with resolved absolute paths for validation
def _get_project_config(project_config_file: str): def _get_project_config(project_config_file: str):
with open(project_config_file, encoding="utf-8") as file: with open(project_config_file, encoding="utf-8-sig") as file:
config = MkDocsConfig(config_file_path = project_config_file) config = MkDocsConfig(config_file_path = project_config_file)
config.load_file(file) config.load_file(file)

View File

@ -254,7 +254,7 @@ class PrivacyPlugin(BasePlugin[PrivacyConfig]):
# Find and extract all external asset URLs # Find and extract all external asset URLs
expr = re.compile(self.assets_expr_map[extension], flags = re.I | re.M) expr = re.compile(self.assets_expr_map[extension], flags = re.I | re.M)
with open(initiator.abs_src_path, encoding = "utf-8") as f: with open(initiator.abs_src_path, encoding = "utf-8-sig") as f:
return [urlparse(url) for url in re.findall(expr, f.read())] return [urlparse(url) for url in re.findall(expr, f.read())]
# Parse template or page HTML and find all external links that need to be # Parse template or page HTML and find all external links that need to be
@ -437,7 +437,7 @@ class PrivacyPlugin(BasePlugin[PrivacyConfig]):
# Patch all links to external assets in the given file # Patch all links to external assets in the given file
def _patch(self, initiator: File): def _patch(self, initiator: File):
with open(initiator.abs_src_path, encoding = "utf-8") as f: with open(initiator.abs_src_path, encoding = "utf-8-sig") as f:
# Replace callback # Replace callback
def replace(match: Match): def replace(match: Match):