Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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('"', """)
Exemple #4
0
def pick_codes(doctree: nodes.document) -> List[Code]:
    """Pick code snippet from document."""
    picker = CodePicker(doctree)
    doctree.walkabout(picker)
    return picker.codes