def test_image_latex(): """ """ # "![a title](path/to/image.png){#label1 .class-name a=5}" in_json = ( {"blocks": [ {"t": "Para", "c": [ {"t": "Image", "c": [ ["label1", ["class-name"], [["a", "5"]]], [{"t": "Str", "c": "a"}, {"t": "Space"}, {"t": "Str", "c": "title"}], ["path/to/image.png", "fig:"]]}]}], "pandoc-api-version": [1, 17, 5, 1], "meta": {}} ) out_string = apply_filter( in_json, format_label_elements.main, "latex", in_format="json") assert out_string.strip() == "\n".join([ r"\begin{figure}[]", r"\hypertarget{label1}{%", r"\begin{center}", r"\adjustimage{max size={0.9\linewidth}{0.9\paperheight},}" r"{path/to/image.png}", r"\end{center}", r"\caption{a title}\label{label1}", "}", r"\end{figure}" ])
def test_math_md_to_rst(): in_str = [ "$$a = b$$ {#eq:id1}", "$$c &= d \\\\ other &= e$$ {#a env=align .unnumbered}", ] out_string = apply_filter( in_str, [prepare_labels.main, format_label_elements.main], in_format="markdown", out_format="rst", ) assert out_string.strip() == "\n".join([ ".. math::", " :nowrap:", " :label: eq:id1", "", r" \begin{equation}a = b\end{equation}", "", "", "", ".. math::", " :nowrap:", " :label: a", "", r" \begin{align*}c &= d \\ other &= e\end{align*}", ])
def test_rst_directive_with_options_to_rst(): in_string = [ '.. dir::', ' :maxdepth: 2', ' :numbered:', '', ' abc', ' xyz', '', ' new paragraph', '' ] out_string = apply_filter( in_string, [prepare_raw.main, format_raw_spans.main], "rst") assert out_string == "\n".join([ '.. dir::', ' :maxdepth: 2', ' :numbered:', '', ' abc', ' xyz', '', ' new paragraph', "", "" ])
def test_citations_latex(): in_string = [ '@label1', '', '[@label1;@label2]', '', '[an internal link](#label2)' '', '[an external link](http://something.org)', '', '![a citation @label](path/to/image.png)', ] out_string = apply_filter( in_string, [prepare_raw.main, format_cite_elements.main], "latex") assert out_string.strip() == "\n".join([ "\\cite{label1}", "", "\\cite{label1,label2}", "", "\\cref{label2} \\href{http://something.org}{an external link}", "", "\\begin{figure}", "\\centering", "\\includegraphics{path/to/image.png}", "\\caption{a citation \\cite{label}}", "\\end{figure}" ])
def test_image_rst(): """ """ # "![a title](path/to/image.png){#label1 .class-name a=5}" in_json = ( {"blocks": [ {"t": "Para", "c": [ {"t": "Image", "c": [ ["label1", ["class-name"], [["a", "5"]]], [{"t": "Str", "c": "a"}, {"t": "Space"}, {"t": "Str", "c": "title"}], ["path/to/image.png", "fig:"]]}]}], "pandoc-api-version": [1, 17, 5, 1], "meta": {}} ) out_string = apply_filter( in_json, format_label_elements.main, "rst", in_format="json") assert out_string.strip() == "\n".join([ ".. figure:: path/to/image.png", " :alt: a title", " :figclass: class-name", " :name: label1", "", " a title" ])
def test_latex_to_rst_with_numref(): """""" in_string = [ "---", "ipub:", " pandoc:", " use_numref: true", "---", "", r"\cref{label1} \Cref{label2} \cite{a-cite-key_2019}", "", r"\ref{label3} \todo[inline]{something todo}", "", r"\todo{something else todo}" ] out_string = apply_filter(in_string, [prepare_raw.main, format_cite_elements.main, format_raw_spans.main], "rst") assert out_string.strip() == "\n".join([ ":numref:`label1` :numref:`label2` :cite:`a-cite-key_2019`", "", ":ref:`label3`", "", ".. todo:: something todo" "", "", "", "", ".. todo:: something else todo" ])
def test_rst_directive_with_options_to_rst(): in_string = [ ".. dir::", " :maxdepth: 2", " :numbered:", "", " abc", " xyz", "", " new paragraph", "", ] out_string = apply_filter( in_string, [prepare_raw.main, format_raw_spans.main], "rst" ) assert out_string == "\n".join( [ ".. dir::", " :maxdepth: 2", " :numbered:", "", " abc", " xyz", "", " new paragraph", "", "", ] )
def test_citations_rst(): in_string = [ '@label1', '', '[an internal link](#label2)' '', '[an external link](http://something.org)', '', '![a citation @label](path/to/image.png)', ] out_string = apply_filter( in_string, [prepare_raw.main, format_cite_elements.main], "rst") assert out_string.strip() == "\n".join([ ":cite:`label1`", "", ":ref:`label2` `an external link <http://something.org>`__", "", ".. figure:: path/to/image.png", " :alt: a citation :cite:`label`", "", " a citation :cite:`label`" ])
def test_latex_to_rst(): """ """ in_string = [ r"\cref{label1} \Cref{label2} \cite{a-cite-key_2019}", "", "\\cite{label1,label2}", "", r"\ref{label3} \todo{something todo}", "", r"\todo{something else todo}" ] out_string = apply_filter(in_string, [prepare_raw.main, format_cite_elements.main, format_raw_spans.main], "rst") assert out_string == "\n".join([ ":ref:`label1` :ref:`label2` :cite:`a-cite-key_2019`", "", ":cite:`label1,label2`", "", ":ref:`label3`", "", ".. todo:: something todo", "", "", "", ".. todo:: something else todo", "", "" ])
def test_image_html(): """ """ # "![a title](path/to/image.png){#label1 .class-name a=5}" in_json = ( {"blocks": [ {"t": "Para", "c": [ {"t": "Image", "c": [ ["label1", ["class-name"], [["a", "5"]]], [{"t": "Str", "c": "a"}, {"t": "Space"}, {"t": "Str", "c": "title"}], ["path/to/image.png", "fig:"]]}]}], "pandoc-api-version": [1, 17, 5, 1], "meta": {}} ) out_string = apply_filter( in_json, format_label_elements.main, "html", in_format="json") assert out_string.strip() == "\n".join([ '<p><a id="label1" class="anchor-link" name="#label1">' '<img src="path/to/image.png" title="fig:" alt="a title" id="label1" ' 'class="class-name" data-a="5" />' '</a></p>' ])
def test_table_html(data_regression): """ """ in_string = ['a b', '- -', 'x y', '', 'Table: Caption +@label'] out_string = apply_filter(in_string, main, 'html') parser = HTML2JSONParser() parser.feed(out_string) data_regression.check(parser.parsed)
def test_para_html(data_regression): """ """ in_string = ['+@label{ .class a=1} xyz *@label2* @label3{ .b}'] out_string = apply_filter(in_string, main, 'html') parser = HTML2JSONParser() parser.feed(out_string) data_regression.check(parser.parsed)
def test_rst_cite_to_latex(): in_string = ["a :ref:`label` b"] out_string = apply_filter( in_string, [prepare_raw.main, format_cite_elements.main], "latex" ) assert out_string.strip() == "\n".join([r"a \ref{label} b"])
def test_html_to_latex_label(): in_string = ["[some text](#alabel)"] out_string = apply_filter( in_string, [prepare_raw.main, format_cite_elements.main], "latex" ) assert out_string == "\n".join([r"\cref{alabel}"])
def test_rst_label_to_rst(): in_string = [".. _alabel:"] out_string = apply_filter( in_string, [prepare_raw.main, format_raw_spans.main], "rst" ) assert out_string.strip() == "\n".join([".. _alabel:"])
def test_rst_known_role_to_rst(): in_string = ["a :py:func:`label` b"] out_string = apply_filter( in_string, [prepare_raw.main, format_raw_spans.main], "rst" ) assert out_string.strip() == "\n".join(["a :py:func:`label` b"])
def test_image_html(data_regression): in_string = [ '![a title with a @label1 +@label2 {.nclass x=3}](path/to/image.png)' ] out_string = apply_filter(in_string, main, 'html') parser = HTML2JSONParser() parser.feed(out_string) data_regression.check(parser.parsed)
def test_math_span_rst(): in_json = { "blocks": [{ "t": "Para", "c": [{ "t": "Span", "c": [ ["a", ["labelled-Math"], [["b", "2"]]], [{ "t": "Math", "c": [{ "t": "DisplayMath" }, "a=1"] }], ], }], }], "pandoc-api-version": [1, 17, 5, 1], "meta": { "$$references": { "t": "MetaMap", "c": { "a": { "t": "MetaMap", "c": { "type": { "t": "MetaString", "c": "Math" }, "number": { "t": "MetaString", "c": "1" }, }, } }, } }, } out_string = apply_filter(in_json, format_label_elements.main, "rst", in_format="json") assert out_string.strip() == "\n".join([ ".. math::", " :nowrap:", " :label: a", "", r" \begin{equation}a=1\end{equation}", ])
def test_math_span_html(): in_json = { "blocks": [{ "t": "Para", "c": [{ "t": "Span", "c": [ ["a", ["labelled-Math"], [["b", "2"]]], [{ "t": "Math", "c": [{ "t": "DisplayMath" }, "a=1"] }], ], }], }], "pandoc-api-version": [1, 17, 5, 1], "meta": { "$$references": { "t": "MetaMap", "c": { "a": { "t": "MetaMap", "c": { "type": { "t": "MetaString", "c": "Math" }, "number": { "t": "MetaString", "c": "1" }, }, } }, } }, } out_string = apply_filter(in_json, format_label_elements.main, "html", in_format="json") assert out_string.strip() == "\n".join([ '<p><a id="a" class="anchor-link" name="#a">' "<br />" '<span class="math display"><em>a</em> = 1</span>' "<br />" "</a></p>" ])
def test_para_rst(): """ """ in_string = [ "+@label{.class a=1} xyz *@label2* @label3{.b}", "", "(@label4{})", "", "(@label5{.b} x)" ] out_string = apply_filter(in_string, main, "rst") assert out_string.strip() == "\n".join( ["@label xyz *@label2* @label3", "", "(@label4)", "", "(@label5 x)"])
def test_rst_directive_to_rst(): in_string = [".. versionchanged:: v0.8.3", "", " abc", "", " xyz"] out_string = apply_filter( in_string, [prepare_raw.main, format_raw_spans.main], "rst" ) assert out_string.strip() == "\n".join( [".. versionchanged:: v0.8.3", "", " abc", "", " xyz"] )
def test_cite_in_table_caption(): in_string = ["a b", "- -", "1 2", "", "Table: Caption \\cite{a}"] out_string = apply_filter( in_string, [prepare_raw.main, format_cite_elements.main], "markdown" ) assert out_string == "\n".join( [" a b", " --- ---", " 1 2", "", " : Caption [@a]"] )
def test_para_rst(): """ """ in_string = [ '+@label{.class a=1} xyz *@label2* @label3{.b}', '', '(@label4{})', '', '(@label5{.b} x)' ] out_string = apply_filter(in_string, main, 'rst') assert out_string.strip() == '\n'.join( ['@label xyz *@label2* @label3', '', '(@label4)', '', '(@label5 x)'])
def test_multiple_references_rst(): """ """ in_string = ["multiple references +[@fig:id; @tbl:id; @eq:id1]"] out_string = apply_filter(in_string, [prepare_cites.main, format_cite_elements.main], "rst") print(out_string) assert out_string == "\n".join( ["multiple references :ref:`fig:id`, :ref:`tbl:id` and :ref:`eq:id1`"])
def test_reference_prefixes_rst(): """ """ in_string = ["(?@key1 &@key2 %@key3 =@key4)"] out_string = apply_filter(in_string, [prepare_cites.main, format_cite_elements.main], "rst") print(out_string) assert out_string == "\n".join( ["(:ref:`key1` :gls:`key2` :glsc:`key3` :eq:`key4`)"])
def test_reference_prefixes_latex(): """ """ in_string = ["(?@key1 &@key2 =@key3)"] out_string = apply_filter(in_string, [prepare_cites.main, format_cite_elements.main], "latex") print(out_string) assert out_string == "\n".join( ["(\\Cref{key1} \\gls{key2} \\eqref{key3})"])
def test_multiple_references_latex(): """ """ in_string = ["multiple references +[@fig:id; @tbl:id; @eq:id1]"] out_string = apply_filter(in_string, [prepare_cites.main, format_cite_elements.main], "latex") print(out_string) assert out_string == "\n".join( ["multiple references \\cref{fig:id,tbl:id,eq:id1}"])
def test_rst_cite_to_rst(): in_string = [ 'a :ref:`label` b' ] out_string = apply_filter( in_string, [prepare_raw.main, format_cite_elements.main], "rst") assert out_string.strip() == "\n".join([ 'a :ref:`label` b' ])
def test_html_to_latex_cite(): in_string = [ 'surrounding <cite data-cite="cite_key">text</cite> text' "", '<cite data-cite="cite_key2"></cite>', ] out_string = apply_filter( in_string, [prepare_raw.main, format_cite_elements.main], "latex" ) assert out_string == "\n".join( [r"surrounding \cite{cite_key} text \cite{cite_key2}"] )
def test_table_html(): """ """ in_string = ["a b", "- -", "x y", "", "Table: Caption +@label"] out_string = apply_filter(in_string, main, "html") assert out_string.strip() == "\n".join([ '<table>', '<caption>Caption ' '<span class="attribute-Cite" data-latex="cref" data-rst="numref">' '<span class="citation" data-cites="label">@label</span>' '</span></caption>', '<thead>', '<tr class="header">', '<th>a</th>', '<th>b</th>', '</tr>', '</thead>', '<tbody>', '<tr class="odd">', '<td>x</td>', '<td>y</td>', '</tr>', '</tbody>', '</table>' ])