Skip to content

Instantly share code, notes, and snippets.

@rbdixon
Created April 26, 2018 18:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbdixon/490e2bc39be0b93efc2bc79ade5d497b to your computer and use it in GitHub Desktop.
Save rbdixon/490e2bc39be0b93efc2bc79ade5d497b to your computer and use it in GitHub Desktop.
Pandoc: YAML multiline string with embedded table parsing
$ diff -C 2 passes.gron fails.gron
*** passes.gron 2018-04-26 14:18:00.000000000 -0400
--- fails.gron 2018-04-26 14:19:36.000000000 -0400
***************
*** 61,85 ****
json.meta.table.c[0].c[4][1][1][0].c[0].t = "Str";
json.meta.table.c[0].c[4][1][1][0].t = "Plain";
- json.meta.table.c[0].c[4][2] = [];
- json.meta.table.c[0].c[4][2][0] = [];
- json.meta.table.c[0].c[4][2][0][0] = {};
- json.meta.table.c[0].c[4][2][0][0].c = [];
- json.meta.table.c[0].c[4][2][0][0].c[0] = {};
- json.meta.table.c[0].c[4][2][0][0].c[0].c = "A";
- json.meta.table.c[0].c[4][2][0][0].c[0].t = "Str";
- json.meta.table.c[0].c[4][2][0][0].t = "Plain";
- json.meta.table.c[0].c[4][2][1] = [];
- json.meta.table.c[0].c[4][2][1][0] = {};
- json.meta.table.c[0].c[4][2][1][0].c = [];
- json.meta.table.c[0].c[4][2][1][0].c[0] = {};
- json.meta.table.c[0].c[4][2][1][0].c[0].c = "B";
- json.meta.table.c[0].c[4][2][1][0].c[0].t = "Str";
- json.meta.table.c[0].c[4][2][1][0].t = "Plain";
json.meta.table.c[0].t = "Table";
json.meta.table.c[1] = {};
json.meta.table.c[1].c = [];
json.meta.table.c[1].c[0] = {};
! json.meta.table.c[1].c[0].c = "x";
json.meta.table.c[1].c[0].t = "Str";
json.meta.table.c[1].t = "Plain";
json.meta.table.t = "MetaBlocks";
--- 61,90 ----
json.meta.table.c[0].c[4][1][1][0].c[0].t = "Str";
json.meta.table.c[0].c[4][1][1][0].t = "Plain";
json.meta.table.c[0].t = "Table";
json.meta.table.c[1] = {};
json.meta.table.c[1].c = [];
json.meta.table.c[1].c[0] = {};
! json.meta.table.c[1].c[0].c = "|";
json.meta.table.c[1].c[0].t = "Str";
+ json.meta.table.c[1].c[1] = {};
+ json.meta.table.c[1].c[1].t = "Space";
+ json.meta.table.c[1].c[2] = {};
+ json.meta.table.c[1].c[2].c = "A";
+ json.meta.table.c[1].c[2].t = "Str";
+ json.meta.table.c[1].c[3] = {};
+ json.meta.table.c[1].c[3].t = "Space";
+ json.meta.table.c[1].c[4] = {};
+ json.meta.table.c[1].c[4].c = "|";
+ json.meta.table.c[1].c[4].t = "Str";
+ json.meta.table.c[1].c[5] = {};
+ json.meta.table.c[1].c[5].t = "Space";
+ json.meta.table.c[1].c[6] = {};
+ json.meta.table.c[1].c[6].c = "B";
+ json.meta.table.c[1].c[6].t = "Str";
+ json.meta.table.c[1].c[7] = {};
+ json.meta.table.c[1].c[7].t = "Space";
+ json.meta.table.c[1].c[8] = {};
+ json.meta.table.c[1].c[8].c = "|";
+ json.meta.table.c[1].c[8].t = "Str";
json.meta.table.c[1].t = "Plain";
json.meta.table.t = "MetaBlocks";
{"blocks":[{"t":"Para","c":[{"t":"Str","c":"Text"}]}],"pandoc-api-version":[1,17,4,2],"meta":{"table":{"t":"MetaBlocks","c":[{"t":"Table","c":[[{"t":"Str","c":"Title"}],[{"t":"AlignLeft"},{"t":"AlignLeft"}],[0,0],[[{"t":"Plain","c":[{"t":"Str","c":"A"}]}],[{"t":"Plain","c":[{"t":"Str","c":"B"}]}]],[[[{"t":"Plain","c":[{"t":"Str","c":"A"}]}],[{"t":"Plain","c":[{"t":"Str","c":"B"}]}]],[[{"t":"Plain","c":[{"t":"Str","c":"A"}]}],[{"t":"Plain","c":[{"t":"Str","c":"B"}]}]]]]},{"t":"Plain","c":[{"t":"Str","c":"|"},{"t":"Space"},{"t":"Str","c":"A"},{"t":"Space"},{"t":"Str","c":"|"},{"t":"Space"},{"t":"Str","c":"B"},{"t":"Space"},{"t":"Str","c":"|"}]}]}}}

table: |- Table: Title

A B
A B
A B
A B
...
Text
# cat test_passes.md| pandoc --from markdown -t json|gron|grep table
json.meta.table = {};
json.meta.table.c = [];
json.meta.table.c[0] = {};
json.meta.table.c[0].c = [];
json.meta.table.c[0].c[0] = [];
json.meta.table.c[0].c[0][0] = {};
json.meta.table.c[0].c[0][0].c = "Title";
json.meta.table.c[0].c[0][0].t = "Str";
json.meta.table.c[0].c[1] = [];
json.meta.table.c[0].c[1][0] = {};
json.meta.table.c[0].c[1][0].t = "AlignLeft";
json.meta.table.c[0].c[1][1] = {};
json.meta.table.c[0].c[1][1].t = "AlignLeft";
json.meta.table.c[0].c[2] = [];
json.meta.table.c[0].c[2][0] = 0;
json.meta.table.c[0].c[2][1] = 0;
json.meta.table.c[0].c[3] = [];
json.meta.table.c[0].c[3][0] = [];
json.meta.table.c[0].c[3][0][0] = {};
json.meta.table.c[0].c[3][0][0].c = [];
json.meta.table.c[0].c[3][0][0].c[0] = {};
json.meta.table.c[0].c[3][0][0].c[0].c = "A";
json.meta.table.c[0].c[3][0][0].c[0].t = "Str";
json.meta.table.c[0].c[3][0][0].t = "Plain";
json.meta.table.c[0].c[3][1] = [];
json.meta.table.c[0].c[3][1][0] = {};
json.meta.table.c[0].c[3][1][0].c = [];
json.meta.table.c[0].c[3][1][0].c[0] = {};
json.meta.table.c[0].c[3][1][0].c[0].c = "B";
json.meta.table.c[0].c[3][1][0].c[0].t = "Str";
json.meta.table.c[0].c[3][1][0].t = "Plain";
json.meta.table.c[0].c[4] = [];
json.meta.table.c[0].c[4][0] = [];
json.meta.table.c[0].c[4][0][0] = [];
json.meta.table.c[0].c[4][0][0][0] = {};
json.meta.table.c[0].c[4][0][0][0].c = [];
json.meta.table.c[0].c[4][0][0][0].c[0] = {};
json.meta.table.c[0].c[4][0][0][0].c[0].c = "A";
json.meta.table.c[0].c[4][0][0][0].c[0].t = "Str";
json.meta.table.c[0].c[4][0][0][0].t = "Plain";
json.meta.table.c[0].c[4][0][1] = [];
json.meta.table.c[0].c[4][0][1][0] = {};
json.meta.table.c[0].c[4][0][1][0].c = [];
json.meta.table.c[0].c[4][0][1][0].c[0] = {};
json.meta.table.c[0].c[4][0][1][0].c[0].c = "B";
json.meta.table.c[0].c[4][0][1][0].c[0].t = "Str";
json.meta.table.c[0].c[4][0][1][0].t = "Plain";
json.meta.table.c[0].c[4][1] = [];
json.meta.table.c[0].c[4][1][0] = [];
json.meta.table.c[0].c[4][1][0][0] = {};
json.meta.table.c[0].c[4][1][0][0].c = [];
json.meta.table.c[0].c[4][1][0][0].c[0] = {};
json.meta.table.c[0].c[4][1][0][0].c[0].c = "A";
json.meta.table.c[0].c[4][1][0][0].c[0].t = "Str";
json.meta.table.c[0].c[4][1][0][0].t = "Plain";
json.meta.table.c[0].c[4][1][1] = [];
json.meta.table.c[0].c[4][1][1][0] = {};
json.meta.table.c[0].c[4][1][1][0].c = [];
json.meta.table.c[0].c[4][1][1][0].c[0] = {};
json.meta.table.c[0].c[4][1][1][0].c[0].c = "B";
json.meta.table.c[0].c[4][1][1][0].c[0].t = "Str";
json.meta.table.c[0].c[4][1][1][0].t = "Plain";
json.meta.table.c[0].t = "Table";
json.meta.table.c[1] = {};
json.meta.table.c[1].c = [];
json.meta.table.c[1].c[0] = {};
json.meta.table.c[1].c[0].c = "|";
json.meta.table.c[1].c[0].t = "Str";
json.meta.table.c[1].c[1] = {};
json.meta.table.c[1].c[1].t = "Space";
json.meta.table.c[1].c[2] = {};
json.meta.table.c[1].c[2].c = "A";
json.meta.table.c[1].c[2].t = "Str";
json.meta.table.c[1].c[3] = {};
json.meta.table.c[1].c[3].t = "Space";
json.meta.table.c[1].c[4] = {};
json.meta.table.c[1].c[4].c = "|";
json.meta.table.c[1].c[4].t = "Str";
json.meta.table.c[1].c[5] = {};
json.meta.table.c[1].c[5].t = "Space";
json.meta.table.c[1].c[6] = {};
json.meta.table.c[1].c[6].c = "B";
json.meta.table.c[1].c[6].t = "Str";
json.meta.table.c[1].c[7] = {};
json.meta.table.c[1].c[7].t = "Space";
json.meta.table.c[1].c[8] = {};
json.meta.table.c[1].c[8].c = "|";
json.meta.table.c[1].c[8].t = "Str";
json.meta.table.c[1].t = "Plain";
json.meta.table.t = "MetaBlocks";
{"blocks":[{"t":"Para","c":[{"t":"Str","c":"Text"}]}],"pandoc-api-version":[1,17,4,2],"meta":{"table":{"t":"MetaBlocks","c":[{"t":"Table","c":[[{"t":"Str","c":"Title"}],[{"t":"AlignLeft"},{"t":"AlignLeft"}],[0,0],[[{"t":"Plain","c":[{"t":"Str","c":"A"}]}],[{"t":"Plain","c":[{"t":"Str","c":"B"}]}]],[[[{"t":"Plain","c":[{"t":"Str","c":"A"}]}],[{"t":"Plain","c":[{"t":"Str","c":"B"}]}]],[[{"t":"Plain","c":[{"t":"Str","c":"A"}]}],[{"t":"Plain","c":[{"t":"Str","c":"B"}]}]],[[{"t":"Plain","c":[{"t":"Str","c":"A"}]}],[{"t":"Plain","c":[{"t":"Str","c":"B"}]}]]]]},{"t":"Plain","c":[{"t":"Str","c":"x"}]}]}}}

table: |- Table: Title

A B
A B
A B
A B

x ... Text

# cat test_passes.md| pandoc --from markdown -t json|gron|grep table
json.meta.table = {};
json.meta.table.c = [];
json.meta.table.c[0] = {};
json.meta.table.c[0].c = [];
json.meta.table.c[0].c[0] = [];
json.meta.table.c[0].c[0][0] = {};
json.meta.table.c[0].c[0][0].c = "Title";
json.meta.table.c[0].c[0][0].t = "Str";
json.meta.table.c[0].c[1] = [];
json.meta.table.c[0].c[1][0] = {};
json.meta.table.c[0].c[1][0].t = "AlignLeft";
json.meta.table.c[0].c[1][1] = {};
json.meta.table.c[0].c[1][1].t = "AlignLeft";
json.meta.table.c[0].c[2] = [];
json.meta.table.c[0].c[2][0] = 0;
json.meta.table.c[0].c[2][1] = 0;
json.meta.table.c[0].c[3] = [];
json.meta.table.c[0].c[3][0] = [];
json.meta.table.c[0].c[3][0][0] = {};
json.meta.table.c[0].c[3][0][0].c = [];
json.meta.table.c[0].c[3][0][0].c[0] = {};
json.meta.table.c[0].c[3][0][0].c[0].c = "A";
json.meta.table.c[0].c[3][0][0].c[0].t = "Str";
json.meta.table.c[0].c[3][0][0].t = "Plain";
json.meta.table.c[0].c[3][1] = [];
json.meta.table.c[0].c[3][1][0] = {};
json.meta.table.c[0].c[3][1][0].c = [];
json.meta.table.c[0].c[3][1][0].c[0] = {};
json.meta.table.c[0].c[3][1][0].c[0].c = "B";
json.meta.table.c[0].c[3][1][0].c[0].t = "Str";
json.meta.table.c[0].c[3][1][0].t = "Plain";
json.meta.table.c[0].c[4] = [];
json.meta.table.c[0].c[4][0] = [];
json.meta.table.c[0].c[4][0][0] = [];
json.meta.table.c[0].c[4][0][0][0] = {};
json.meta.table.c[0].c[4][0][0][0].c = [];
json.meta.table.c[0].c[4][0][0][0].c[0] = {};
json.meta.table.c[0].c[4][0][0][0].c[0].c = "A";
json.meta.table.c[0].c[4][0][0][0].c[0].t = "Str";
json.meta.table.c[0].c[4][0][0][0].t = "Plain";
json.meta.table.c[0].c[4][0][1] = [];
json.meta.table.c[0].c[4][0][1][0] = {};
json.meta.table.c[0].c[4][0][1][0].c = [];
json.meta.table.c[0].c[4][0][1][0].c[0] = {};
json.meta.table.c[0].c[4][0][1][0].c[0].c = "B";
json.meta.table.c[0].c[4][0][1][0].c[0].t = "Str";
json.meta.table.c[0].c[4][0][1][0].t = "Plain";
json.meta.table.c[0].c[4][1] = [];
json.meta.table.c[0].c[4][1][0] = [];
json.meta.table.c[0].c[4][1][0][0] = {};
json.meta.table.c[0].c[4][1][0][0].c = [];
json.meta.table.c[0].c[4][1][0][0].c[0] = {};
json.meta.table.c[0].c[4][1][0][0].c[0].c = "A";
json.meta.table.c[0].c[4][1][0][0].c[0].t = "Str";
json.meta.table.c[0].c[4][1][0][0].t = "Plain";
json.meta.table.c[0].c[4][1][1] = [];
json.meta.table.c[0].c[4][1][1][0] = {};
json.meta.table.c[0].c[4][1][1][0].c = [];
json.meta.table.c[0].c[4][1][1][0].c[0] = {};
json.meta.table.c[0].c[4][1][1][0].c[0].c = "B";
json.meta.table.c[0].c[4][1][1][0].c[0].t = "Str";
json.meta.table.c[0].c[4][1][1][0].t = "Plain";
json.meta.table.c[0].c[4][2] = [];
json.meta.table.c[0].c[4][2][0] = [];
json.meta.table.c[0].c[4][2][0][0] = {};
json.meta.table.c[0].c[4][2][0][0].c = [];
json.meta.table.c[0].c[4][2][0][0].c[0] = {};
json.meta.table.c[0].c[4][2][0][0].c[0].c = "A";
json.meta.table.c[0].c[4][2][0][0].c[0].t = "Str";
json.meta.table.c[0].c[4][2][0][0].t = "Plain";
json.meta.table.c[0].c[4][2][1] = [];
json.meta.table.c[0].c[4][2][1][0] = {};
json.meta.table.c[0].c[4][2][1][0].c = [];
json.meta.table.c[0].c[4][2][1][0].c[0] = {};
json.meta.table.c[0].c[4][2][1][0].c[0].c = "B";
json.meta.table.c[0].c[4][2][1][0].c[0].t = "Str";
json.meta.table.c[0].c[4][2][1][0].t = "Plain";
json.meta.table.c[0].t = "Table";
json.meta.table.c[1] = {};
json.meta.table.c[1].c = [];
json.meta.table.c[1].c[0] = {};
json.meta.table.c[1].c[0].c = "x";
json.meta.table.c[1].c[0].t = "Str";
json.meta.table.c[1].t = "Plain";
json.meta.table.t = "MetaBlocks";
@rbdixon
Copy link
Author

rbdixon commented Apr 26, 2018

$ pandoc --version
pandoc 2.1.3
Compiled with pandoc-types 1.17.4.2, texmath 0.10.1.1, skylighting 0.7.1
Default user data directory: /Users/rbdixon/.pandoc
Copyright (C) 2006-2018 John MacFarlane
Web:  http://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment