Add icon list for wiki pages.

This commit is contained in:
Sergey Vartanov 2021-11-19 09:54:05 +03:00
parent d12166143a
commit da8e64b992

View file

@ -7,7 +7,7 @@ from typing import Optional
from map_machine.map_configuration import MapConfiguration from map_machine.map_configuration import MapConfiguration
from map_machine.osm.osm_reader import Tags from map_machine.osm.osm_reader import Tags
from map_machine.pictogram.icon import ShapeExtractor from map_machine.pictogram.icon import Icon, ShapeExtractor
from map_machine.scheme import Scheme from map_machine.scheme import Scheme
from map_machine.workspace import Workspace from map_machine.workspace import Workspace
@ -20,7 +20,7 @@ EXTRACTOR: ShapeExtractor = ShapeExtractor(
HEADER_PATTERN: re.Pattern = re.compile("==?=?.*==?=?") HEADER_PATTERN: re.Pattern = re.compile("==?=?.*==?=?")
SEE_ALSO_HEADER_PATTERN: re.Pattern = re.compile("==\\s*See also\\s*==") SEE_ALSO_HEADER_PATTERN: re.Pattern = re.compile("==\\s*See also\\s*==")
EXAMPLE_HEADER_PATTERN: re.Pattern = re.compile("==\\s*Example\\s*==") EXAMPLE_HEADER_PATTERN: re.Pattern = re.compile("==\\s*Example.*==")
RENDERING_HEADER_PATTERN: re.Pattern = re.compile( RENDERING_HEADER_PATTERN: re.Pattern = re.compile(
"===\\s*\\[\\[Röntgen]] icons\\s*===" "===\\s*\\[\\[Röntgen]] icons\\s*==="
) )
@ -32,7 +32,7 @@ def generate_table(
row_values: list[str], row_values: list[str],
column_key: str, column_key: str,
column_values: list[str], column_values: list[str],
) -> str: ) -> tuple[str, list[Icon]]:
""" """
Generate Röntgen icon table for the OpenStreetMap wiki page. Generate Röntgen icon table for the OpenStreetMap wiki page.
@ -42,6 +42,7 @@ def generate_table(
:param column_key: tag key to be used in columns :param column_key: tag key to be used in columns
:param column_values: list of tag values to be used in columns :param column_values: list of tag values to be used in columns
""" """
icons: list[Icon] = []
text: str = '{| class="wikitable"\n' text: str = '{| class="wikitable"\n'
if column_key is not None: if column_key is not None:
@ -82,10 +83,11 @@ def generate_table(
text += ( text += (
f"| [[Image:Röntgen {icon.main_icon.get_name()}.svg|32px]]\n" f"| [[Image:Röntgen {icon.main_icon.get_name()}.svg|32px]]\n"
) )
icons.append(icon.main_icon)
text += "|}\n" text += "|}\n"
return text return text, icons
def generate_new_text( def generate_new_text(
@ -95,7 +97,7 @@ def generate_new_text(
row_values: list[str], row_values: list[str],
column_key: str, column_key: str,
column_values: list[str], column_values: list[str],
) -> Optional[str]: ) -> tuple[Optional[str], list[Icon]]:
""" """
Generate Röntgen icon table for the OpenStreetMap wiki page. Generate Röntgen icon table for the OpenStreetMap wiki page.
@ -108,9 +110,10 @@ def generate_new_text(
:return: new wiki page text :return: new wiki page text
""" """
wiki_text: str wiki_text: str
icons = []
if row_key: if row_key:
wiki_text = generate_table( wiki_text, icons = generate_table(
tags, row_key, row_values, column_key, column_values tags, row_key, row_values, column_key, column_values
) )
else: else:
@ -124,10 +127,12 @@ def generate_new_text(
f"[[Image:Röntgen {icon.extra_icons[0].get_name()}.svg|32px]]." f"[[Image:Röntgen {icon.extra_icons[0].get_name()}.svg|32px]]."
f"\n" f"\n"
) )
icons.append(icon.extra_icons[0])
else: else:
wiki_text = ( wiki_text = (
f"[[Image:Röntgen {icon.main_icon.get_name()}.svg|32px]]\n" f"[[Image:Röntgen {icon.main_icon.get_name()}.svg|32px]]\n"
) )
icons.append(icon.main_icon)
lines: list[str] = old_text.split("\n") lines: list[str] = old_text.split("\n")
@ -149,7 +154,7 @@ def generate_new_text(
+ wiki_text + wiki_text
+ "\n" + "\n"
+ "\n".join(lines[end:]) + "\n".join(lines[end:])
) ), icons
example_header: Optional[int] = None example_header: Optional[int] = None
@ -168,6 +173,6 @@ def generate_new_text(
+ wiki_text + wiki_text
+ "\n" + "\n"
+ "\n".join(lines[example_header:]) + "\n".join(lines[example_header:])
) ), icons
return None return None, []