def vertical_card(card_data: JSONType) -> Element: assert "title" in card_data and "text" in card_data title = card_data["title"] text = convert_text(card_data["text"]) content = [] if "image" in card_data: content.append( Plain( Image(url=card_data["image"], title=title, classes=["card-img-top"]))) body = [ Header(Str(title), level=3, classes=["card-title"]), Div(*text, classes=["card-text"]) ] if "link" in card_data: body.append( Plain( Link(Str(card_data["link"]["content"]), url=card_data["link"]["href"], classes=["btn", "btn-secondary", "mt-auto", "mx-4"]))) content.append( Div(*body, classes=["card-body", "d-flex", "flex-column"])) content = Div(Div(*content, classes=["card", "h-100", "rounded-lg"]), classes=["col"]) return content
def horizontal_card(card_data: JSONType) -> Element: assert "title" in card_data and "text" in card_data title = card_data["title"] text = convert_text(card_data["text"]) content = [] body = [ Header(Str(title), level=3, classes=["card-title"]), Div(*text, classes=["card-text"]) ] if "link" in card_data: body.append( Plain( Link(Str(card_data["link"]["content"]), url=card_data["link"]["href"], classes=["btn", "btn-secondary", "mt-auto", "mx-4"]))) card_img = Div(Plain( Image(url=card_data["image"], title=title, attributes={"width": "100%"})), classes=["col-4"]) card_body = Div(Div(*body, classes=["card-body"]), classes=["col-8"]) if card_data["imageLocation"] == "Left": content = [card_img, card_body] else: content = [card_body, card_img] content = Div(Div(*content, classes=["row", "no-gutters"]), classes=["card", "rounded-lg"]) return content
def to_html(elem, code): div = Div(classes=mapping[code]['classes']) # prepare content # icon icon = Span(classes=mapping[code]['icon-classes'], attributes={'aria-hidden': 'true'}) # title title = [icon, Space] if len(elem.content[0].content[1:]) == 0: title.append(Str(mapping[code]['title'])) else: title.append(Str(elem.content[0].content[1:])) header = Header(*title, level=4, classes=['alert-heading']) # title = pf.Strong() # title.content = elem.content[0].content[1:] # if len(title.content) == 0: # title.content.append(pf.Str(' ' + mapping[code]['title'])) # para = pf.Para(icon, title) # div.content.extend(icon) div.content.append(header) div.content.extend(elem.content[1:]) return div
def get_header(attrib, suffix): if not suffix: header_attribute = 'header' else: header_attribute = SPLIT_DIAGRAM_NAME_FORMAT.format('header', suffix) if header_attribute in attrib: header_str = attrib[header_attribute] if header_str: msgs = header_str.split(',', 1) if len(msgs) != 2: level = 1 title_str = msgs[0] else: try: level = int(msgs[0].strip()) title_str = msgs[1] except: level = 1 title_str = msgs[1] ident = make_new_ident(re.sub('[ \t\n]', '-', title_str)) identities.add(ident) title = [Str(title_str)] header = Header(*title, level=level, identifier=ident) return header return None
def insert_references(self, doc): def references(): defns = [] for elem in self.links.values(): defns.append( DefinitionItem( [de_code(item, Strong) for item in elem.content], [Definition(Para(Str(elem.url)))], ), ) return DefinitionList(*defns) for (idx, elem) in enumerate(doc.content): if isinstance(elem, Header) and elem.level == 1 and \ stringify(elem) == 'COPYRIGHT': break doc.content.insert(idx, references()) doc.content.insert(idx, Header(Str('REFERENCES'), level=1))
def prepare(doc): # Insert title title = doc.get_metadata('title') if title: title_elem = Header(Str(title), level=1, identifier='title') doc.content.insert(0, title_elem)
def finalize(doc): """ Finalize document. Arguments --------- doc: pandoc document """ # Loop on all listings definition if doc.format == "latex": # Add header-includes if necessary if "header-includes" not in doc.metadata: doc.metadata["header-includes"] = MetaList() # Convert header-includes to MetaList if necessary elif not isinstance(doc.metadata["header-includes"], MetaList): doc.metadata["header-includes"] = MetaList( doc.metadata["header-includes"]) doc.metadata["header-includes"].append( MetaInlines(RawInline(r"\usepackage{tocloft}", "tex"))) i = 0 listof = [] for category, definition in doc.defined.items(): if definition["listing-title"] is not None: if doc.format == "latex": latex_category = re.sub("[^a-z]+", "", category) latex = (r"\newlistof{%s}{%s}{%s}" r"\renewcommand{\cft%stitlefont}{\cfttoctitlefont}" % ( latex_category, latex_category, convert_text( Plain(*definition["listing-title"]), input_format="panflute", output_format="latex", ), latex_category, )) doc.metadata["header-includes"].append( MetaInlines(RawInline(latex, "tex"))) listof.append(r"\listof%s" % latex_category) else: classes = ["pandoc-numbering-listing"] + definition["classes"] if definition["listing-unnumbered"]: classes.append("unnumbered") if definition["listing-unlisted"]: classes.append("unlisted") if definition["listing-identifier"] is False: header = Header(*definition["listing-title"], level=1, classes=classes) elif definition["listing-identifier"] is True: header = Header(*definition["listing-title"], level=1, classes=classes) header = convert_text( convert_text(header, input_format="panflute", output_format="markdown"), output_format="panflute", )[0] else: header = Header( *definition["listing-title"], level=1, classes=classes, identifier=definition["listing-identifier"]) doc.content.insert(i, header) i = i + 1 table = table_other(doc, category, definition) if table: doc.content.insert(i, table) i = i + 1 if doc.format == "latex": header = ( r"\ifdef{\mainmatter}" r"{\let\oldmainmatter\mainmatter\renewcommand{\mainmatter}[0]{%s\oldmainmatter}}" r"{}") doc.metadata["header-includes"].append( MetaInlines(RawInline(header % "\n".join(listof), "tex"))) latex = r"\ifdef{\mainmatter}{}{%s}" doc.content.insert(0, RawBlock(latex % "\n".join(listof), "tex"))