Source code for ipypublish.filters_pandoc.tests.test_prepare_labels
import io
import json
import panflute as pf
from jsonextended import edict
from six import u
from panflute import Element, Doc # noqa: F401
from types import FunctionType # noqa: F401
from ipypublish.filters_pandoc.prepare_labels import main
[docs]def apply_to_json(in_json, filter_func):
# type: (dict, FunctionType) -> dict
f = io.StringIO(u(json.dumps(in_json)))
doc = pf.load(f)
new_doc = filter_func(doc) # type: Doc
return new_doc.to_json()
[docs]def test_basic():
"""
$a=1$ {#a b=$2$}
![a](a/b.jpg){b .x a=$1$ b=2}
"""
in_json = {
"meta": {},
"pandoc-api-version": [1, 17, 5, 1],
"blocks": [
{
"t": "Para",
"c": [
{"t": "Math", "c": [{"t": "InlineMath"}, "a=1"]},
{"t": "Space"},
{"t": "Str", "c": "{#a"},
{"t": "Space"},
{"t": "Str", "c": ".a"},
{"t": "Space"},
{"t": "Str", "c": "b="},
{"t": "Math", "c": [{"t": "InlineMath"}, "2"]},
{"t": "Str", "c": "}"},
],
},
{
"t": "Para",
"c": [
{
"t": "Image",
"c": [
["b", ["x"], [["a", "$1$"], ["b", "2"]]],
[{"t": "Str", "c": "a"}],
["a/b.jpg", "fig:"],
],
}
],
},
],
}
out_json = apply_to_json(in_json, main)
assert (
edict.diff(
out_json,
{
"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"},
},
},
"b": {
"t": "MetaMap",
"c": {
"type": {"t": "MetaString", "c": "Image"},
"number": {"t": "MetaString", "c": "1"},
},
},
},
}
},
"blocks": [
{
"t": "Para",
"c": [
{
"t": "Span",
"c": [
["a", ["labelled-Math", "a"], [["b", "2"]]],
[{"t": "Math", "c": [{"t": "InlineMath"}, "a=1"]}],
],
}
],
},
{
"t": "Para",
"c": [
{
"t": "Image",
"c": [
["b", ["x"], [["a", "$1$"], ["b", "2"]]],
[{"t": "Str", "c": "a"}],
["a/b.jpg", "fig:"],
],
}
],
},
],
},
)
== {}
)
[docs]def test_multiple_on_line():
""""
$a=1$ {#a b=$2$} $g=3$ {#gid}
![a](a/b.jpg)
"""
in_json = {
"pandoc-api-version": [1, 17, 5, 1],
"meta": {},
"blocks": [
{
"t": "Para",
"c": [
{"t": "Math", "c": [{"t": "InlineMath"}, "a=1"]},
{"t": "Space"},
{"t": "Str", "c": "{#a"},
{"t": "Space"},
{"t": "Str", "c": "b="},
{"t": "Math", "c": [{"t": "InlineMath"}, "2"]},
{"t": "Str", "c": "}"},
{"t": "Space"},
{"t": "Math", "c": [{"t": "InlineMath"}, "g=3"]},
{"t": "Space"},
{"t": "Str", "c": "{#gid}"},
],
},
{
"t": "Para",
"c": [
{
"t": "Image",
"c": [
["", [], []],
[{"t": "Str", "c": "a"}],
["a/b.jpg", "fig:"],
],
}
],
},
],
}
out_json = apply_to_json(in_json, main)
assert (
edict.diff(
out_json,
{
"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"},
},
},
"gid": {
"t": "MetaMap",
"c": {
"type": {"t": "MetaString", "c": "Math"},
"number": {"t": "MetaString", "c": "2"},
},
},
},
}
},
"blocks": [
{
"t": "Para",
"c": [
{
"t": "Span",
"c": [
["a", ["labelled-Math"], [["b", "2"]]],
[{"t": "Math", "c": [{"t": "InlineMath"}, "a=1"]}],
],
},
{"t": "Space"},
{
"t": "Span",
"c": [
["gid", ["labelled-Math"], []],
[{"t": "Math", "c": [{"t": "InlineMath"}, "g=3"]}],
],
},
],
},
{
"t": "Para",
"c": [
{
"t": "Image",
"c": [
["", [], []],
[{"t": "Str", "c": "a"}],
["a/b.jpg", "fig:"],
],
}
],
},
],
},
)
== {}
)
[docs]def test_with_tables():
"""
Some text
a b c
- - -
1 2 3
4 5 6
Table: Caption. {#tbl:id}
"""
in_json = {
"pandoc-api-version": [1, 17, 5, 1],
"meta": {},
"blocks": [
{
"t": "Para",
"c": [
{"t": "Str", "c": "Some"},
{"t": "Space"},
{"t": "Str", "c": "text"},
],
},
{
"t": "Table",
"c": [
[
{"t": "Str", "c": "Caption."},
{"t": "Space"},
{"t": "Str", "c": "{#tbl:id}"},
],
[
{"t": "AlignDefault"},
{"t": "AlignDefault"},
{"t": "AlignDefault"},
],
[0, 0, 0],
[
[{"t": "Plain", "c": [{"t": "Str", "c": "a"}]}],
[{"t": "Plain", "c": [{"t": "Str", "c": "b"}]}],
[{"t": "Plain", "c": [{"t": "Str", "c": "c"}]}],
],
[
[
[{"t": "Plain", "c": [{"t": "Str", "c": "1"}]}],
[{"t": "Plain", "c": [{"t": "Str", "c": "2"}]}],
[{"t": "Plain", "c": [{"t": "Str", "c": "3"}]}],
],
[
[{"t": "Plain", "c": [{"t": "Str", "c": "4"}]}],
[{"t": "Plain", "c": [{"t": "Str", "c": "5"}]}],
[{"t": "Plain", "c": [{"t": "Str", "c": "6"}]}],
],
],
],
},
],
}
out_json = apply_to_json(in_json, main)
assert (
edict.diff(
out_json,
{
"pandoc-api-version": [1, 17, 5, 1],
"meta": {
"$$references": {
"t": "MetaMap",
"c": {
"tbl:id": {
"t": "MetaMap",
"c": {
"type": {"t": "MetaString", "c": "Table"},
"number": {"t": "MetaString", "c": "1"},
},
}
},
}
},
"blocks": [
{
"t": "Para",
"c": [
{"t": "Str", "c": "Some"},
{"t": "Space"},
{"t": "Str", "c": "text"},
],
},
{
"t": "Div",
"c": [
["tbl:id", ["labelled-Table"], []],
[
{
"t": "Table",
"c": [
[{"t": "Str", "c": "Caption."}, {"t": "Space"}],
[
{"t": "AlignDefault"},
{"t": "AlignDefault"},
{"t": "AlignDefault"},
],
[0, 0, 0],
[
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "a"}],
}
],
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "b"}],
}
],
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "c"}],
}
],
],
[
[
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "1"}],
}
],
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "2"}],
}
],
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "3"}],
}
],
],
[
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "4"}],
}
],
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "5"}],
}
],
[
{
"t": "Plain",
"c": [{"t": "Str", "c": "6"}],
}
],
],
],
],
}
],
],
},
],
},
)
== {}
)