def get_tags(context: Dict[str, Any], doctree: nodes.document, config: Dict[str, Any]) -> str: # Set length of description try: desc_len = int(config["ogp_description_length"]) except ValueError: desc_len = DEFAULT_DESCRIPTION_LENGTH # Get the title and parse any html in it htp = HTMLTextParser() htp.feed(context["title"]) htp.close() # Parse/walk doctree for metadata (tag/description) mcv = OGMetadataCreatorVisitor(desc_len, [htp.text, htp.text_outside_tags]) doctree.walkabout(mcv) tags = "\n " # title tag tags += make_tag("og:title", htp.text) # type tag tags += make_tag("og:type", config["ogp_type"]) # url tag # Get the URL of the specific page page_url = urljoin(config["ogp_site_url"], context["pagename"] + context["file_suffix"]) tags += make_tag("og:url", page_url) # site name tag site_name = config["ogp_site_name"] if site_name: tags += make_tag("og:site_name", site_name) # description tag tags += make_tag("og:description", mcv.description) # image tag # Get the image from the config image_url = config["ogp_image"] if image_url: tags += make_tag("og:image", image_url) # Add image alt text (either provided by config or from site_name) ogp_image_alt = config["ogp_image_alt"] if isinstance(ogp_image_alt, str): tags += make_tag("og:image:alt", ogp_image_alt) elif ogp_image_alt and site_name: tags += make_tag("og:image:alt", site_name) elif ogp_image_alt and htp.text: tags += make_tag("og:image:alt", htp.text) # custom tags tags += "\n".join(config["ogp_custom_meta_tags"]) return tags
def get_description( doctree: nodes.document, description_length: int, known_titles: Iterable[str] = None, document: nodes.document = None, ): mcv = DescriptionParser(description_length, known_titles, document) doctree.walkabout(mcv) return mcv.description
def get_description( doctree: nodes.document, description_length: int, known_titles: Iterable[str] = None, document: nodes.document = None, ): mcv = DescriptionParser(description_length, known_titles, document) doctree.walkabout(mcv) # Parse quotation so they won't break html tags if smart quotes are disabled return mcv.description.replace('"', """)
def pick_codes(doctree: nodes.document) -> List[Code]: """Pick code snippet from document.""" picker = CodePicker(doctree) doctree.walkabout(picker) return picker.codes