inside . That is the article heading. So we should replace that too.
Simplest: use base_html and then replace the title placeholder and heading placeholder. Use .replace to replace the old default title and heading string. But careful: if title or heading contains special characters that appear elsewhere, replace may incorrectly replace other parts. But it's fine.
We need to store the default title and heading string from Article.get_title() and Article.get_heading().
Implement:
default_title = Article.get_title()
default_heading = Article.get_heading()
Then we can do:
new_html = base_html.replace(f"{default_title}", f"{title}")
new_html = new_html.replace(f"", f"")
But what about body? The body is not directly inserted as a placeholder in the staticmethod generate_html. So we cannot override body easily. But the requirement mentions body optional argument. But the article body is huge; maybe we can return just the body string. But the body refers to the article's body content, which is a long string of HTML with ", f"")
Replace body placeholder: we need to find the body portion of basehtml. The body string returned by Article.getbody() contains the entire article body content (without tags). In base_html, the article body content is included within tags after . So we need to find the start of and replace the content inside with body. We can use regex or find the body string and replace it.
Better: we can locate the tag start and the closing tag, and replace content inside with body param (which includes tags? But body string returned by Article.get_body() does not include tags; it's the content inside article, but includes " and contains article body content. So if we want to override body, we should replace content between and with body string plus appropriate tags? But base_html includes tags. So we should not replace tags themselves; only the inner content. But body string might include tags; but we can just treat body param as the inner content. But Article.get_body() returns body string that is inserted inside tags. So our override should replace that content inside tags with body param. So we can do:
find the part inside and in basehtml. Use basehtml.find("") and basehtml.find("") to get indices. But the basehtml contains ... ..."""
@staticmethod
def generate_html() -> str:
title = ...
heading = ...
body = ...
html = f""" ..."""
Ok.
Now we will add:
def generate_html(title=None, heading=None, body=None):
default_title = Article.get_title()
default_heading = Article.get_heading()
default_body = Article.get_body()
if title is None:
title = default_title
if heading is None:
heading = default_heading
if body is None:
body = default_body
base_html = Article.generate_html()
# Replace title
This is an example page from a small project called Pydoc. This example is useful for demonstrating how the test suite for pydoc looks like.
Getting Started
Installation
To install pydoc, run:
pip install pydoc
'''
Optional helper that returns the same string as Article.generate_html
def generate_html():
"""
Helper function that returns the full HTML document.
This can be useful if you prefer to call it without
accessing the Article class directly.
"""
return Article().generate_html()
No comments yet. Be the first to comment!