import urllib.parse from typing import Iterable from reader import EntrySearchResult, HighlightedString from discord_rss_bot.settings import reader def create_html_for_search_results(search_results: Iterable[EntrySearchResult]) -> str: """Create HTML for the search results. Args: search_results: The search results. Returns: str: The HTML. """ html = "" for result in search_results: if ".summary" in result.content: result_summary = add_span_with_slice(result.content[".summary"]) feed = reader.get_feed(result.feed_url) feed_url = urllib.parse.quote(feed.url) html += f"""

{result.metadata[".title"]}

{result_summary}
""" return html def add_span_with_slice(highlighted_string: HighlightedString) -> str: """Add span tags to the string to highlight the search results. Args: highlighted_string: The highlighted string. Returns: str: The string with added tags. """ for txt_slice in highlighted_string.highlights: before_span = f"{highlighted_string.value[: txt_slice.start]}" span_part = f"{highlighted_string.value[txt_slice.start: txt_slice.stop]}" after_span = f"{highlighted_string.value[txt_slice.stop:]}" return f"{before_span}{span_part}{after_span}"