NestedText Serializer
Given a JSON document convert it to a NestedText document. To be precise, your output should:
- use inline items only for empty structures: [], {}
- use rest of line strings where possible
- use key items only where necessary
- use 4 spaces for indentation
Judge
(async function*(context: Context): Challenge { // Official test cases from https://github.com/KenKundert/nestedtext_tests const officialTests: Record<string,[unknown, string]> = {"list_8":[[":","~!@#$%^\u0026*()_\u002B-1234567890{}[]|\\:;\u003C\u003E?,./","- value 3","\u0027 : value 4:\u0027","\u003E value 5","#value 6","key 7\u0027 : : value 7","\u0022 value 8 \u0022","\u0027 value 9 \u0027","value \u0027\u0022 10","And Fred said \u0027yabba dabba doo!\u0027 to Barney."],"- :\r\n- ~!@#$%^\u0026*()_\u002B-1234567890{}[]|\\:;\u003C\u003E?,./\r\n- - value 3\r\n- \u0027 : value 4:\u0027\r\n- \u003E value 5\r\n- #value 6\r\n- key 7\u0027 : : value 7\r\n- \u0022 value 8 \u0022\r\n- \u0027 value 9 \u0027\r\n- value \u0027\u0022 10\r\n- And Fred said \u0027yabba dabba doo!\u0027 to Barney.\r\n"],"string_1":[{"what makes it green":"\tgreen\tchilies\t"},"what makes it green: \tgreen\tchilies\t\r\n"],"list_3":[[],"[]\r\n"],"holistic_7":[{"treasurer":{"name":"\t Fumiko\tPurvis \t","address":"\t 3636 Buffalo Ave \t\n\t Topeka, Kansas 20692\t "}},"treasurer:\r\n name: \t Fumiko\tPurvis \t\r\n address:\r\n \u003E \t 3636 Buffalo Ave \t\r\n \u003E \t Topeka, Kansas 20692\t \r\n"],"dict_17":[{"":"","~!@#$%^\u0026*()_\u002B-1234567890{}[]|\\;\u003C\u003E?,./":"~!@#$%^\u0026*()_\u002B-1234567890{}[]|\\:;\u003C\u003E?,./","- key 3":"- value 3","key 4: ":"value 4: ","\u003E key 5":"\u003E value 5","# key 6":"#value 6",": key 7":": value 7","\u0022 key 8 \u0022":"\u0022 value 8 \u0022","\u0027 key 9 \u0027":"\u0027 value 9 \u0027","key 10":"value \u0027\u0022 10","key 11":"And Fred said \u0027yabba dabba doo!\u0027 to Barney.","key \u0022 12":"value \u0027 12","$\u20AC\u00A5\u00A3\u20A9\u20BA\u20BD\u20B9\u0243\u039E\u0204":"$\u20AC\u00A5\u00A3\u20A9\u20BA\u20BD\u20B9\u0243\u039E\u0204","YZEPTGMKk_cmu\u00B5\u03BCnpfazy":"YZEPTGMKk_cmu\u00B5\u03BCnpfazy","a-zA-Z%\u221A{us}{cur}][-^/()\\w\u00B7\u207B\u2070\u00B9\u00B2\u00B3\u2074\u2075\u2076\u2077\u2078\u2079\u00B0\u00C5\u03A9\u01B1\u2126\u2127":"a-zA-Z%\u221A{us}{cur}][-^/()\\w\u00B7\u207B\u2070\u00B9\u00B2\u00B3\u2074\u2075\u2076\u2077\u2078\u2079\u00B0\u00C5\u03A9\u01B1\u2126\u2127"},":\r\n \u003E\r\n~!@#$%^\u0026*()_\u002B-1234567890{}[]|\\;\u003C\u003E?,./: ~!@#$%^\u0026*()_\u002B-1234567890{}[]|\\:;\u003C\u003E?,./\r\n: - key 3\r\n \u003E - value 3\r\n: key 4: \r\n \u003E value 4: \r\n: \u003E key 5\r\n \u003E \u003E value 5\r\n: # key 6\r\n \u003E #value 6\r\n: : key 7\r\n \u003E : value 7\r\n\u0022 key 8 \u0022: \u0022 value 8 \u0022\r\n\u0027 key 9 \u0027: \u0027 value 9 \u0027\r\nkey 10: value \u0027\u0022 10\r\nkey 11: And Fred said \u0027yabba dabba doo!\u0027 to Barney.\r\nkey \u0022 12: value \u0027 12\r\n$\u20AC\u00A5\u00A3\u20A9\u20BA\u20BD\u20B9\u0243\u039E\u0204: $\u20AC\u00A5\u00A3\u20A9\u20BA\u20BD\u20B9\u0243\u039E\u0204\r\nYZEPTGMKk_cmu\u00B5\u03BCnpfazy: YZEPTGMKk_cmu\u00B5\u03BCnpfazy\r\na-zA-Z%\u221A{us}{cur}][-^/()\\w\u00B7\u207B\u2070\u00B9\u00B2\u00B3\u2074\u2075\u2076\u2077\u2078\u2079\u00B0\u00C5\u03A9\u01B1\u2126\u2127: a-zA-Z%\u221A{us}{cur}][-^/()\\w\u00B7\u207B\u2070\u00B9\u00B2\u00B3\u2074\u2075\u2076\u2077\u2078\u2079\u00B0\u00C5\u03A9\u01B1\u2126\u2127\r\n"],"holistic_4":[{"output current":"out","description":"Output current","range":"V(gnda) \u002B 0.5V \u003C V \u003C V(vdda) - 0.5V; -500\u03BCA \u003C= I \u003C= 500\u03BCA","behavior":"current:\n I = On*Iout;\n Vout=V;\n IoutMeas=I with prail=vdda; nrail=gnda","nominal":"V=1.25V\u002B1\u03A9*I"},"output current: out\r\ndescription: Output current\r\nrange: V(gnda) \u002B 0.5V \u003C V \u003C V(vdda) - 0.5V; -500\u03BCA \u003C= I \u003C= 500\u03BCA\r\nbehavior:\r\n \u003E current:\r\n \u003E I = On*Iout;\r\n \u003E Vout=V;\r\n \u003E IoutMeas=I with prail=vdda; nrail=gnda\r\nnominal: V=1.25V\u002B1\u03A9*I\r\n"],"string_multiline_12":["\nthe BS character \\\tBackslash (\\)\nthe SQ character \u0027\tSingle quote (\u0027)\nthe DQ character \u0022\tDouble quote (\u0022)\nthe AB character \u0007\tASCII Bell (BEL)\nthe BS character \b\tASCII Backspace (BS)\nthe FF character \f\tASCII Formfeed (FF)\nthe LF character \n\tASCII Linefeed (LF)\nthe CR character \r\tASCII Carriage Return (CR)\nthe HT character \t\tASCII Horizontal Tab (TAB)\nthe VT character \u000B\tASCII Vertical Tab (VT)\nthe ES character \u001B\tASCII escape character as octal value\nthe ES character \u001B\tASCII escape character as hex value\n","\u003E\r\n\u003E the BS character \\\tBackslash (\\)\r\n\u003E the SQ character \u0027\tSingle quote (\u0027)\r\n\u003E the DQ character \u0022\tDouble quote (\u0022)\r\n\u003E the AB character \u0007\tASCII Bell (BEL)\r\n\u003E the BS character \b\tASCII Backspace (BS)\r\n\u003E the FF character \f\tASCII Formfeed (FF)\r\n\u003E the LF character \r\n\u003E \tASCII Linefeed (LF)\r\n\u003E the CR character \r\n\u003E \tASCII Carriage Return (CR)\r\n\u003E the HT character \t\tASCII Horizontal Tab (TAB)\r\n\u003E the VT character \u000B\tASCII Vertical Tab (VT)\r\n\u003E the ES character \u001B\tASCII escape character as octal value\r\n\u003E the ES character \u001B\tASCII escape character as hex value\r\n\u003E\r\n"],"holistic_1":[{"key 1":"value 1","- key2:":"value2:"," #key3 ":" #value3 ","key 4":{"key 4.1":"value 4.1","key 4.2":"value 4.2","key 4.3":{"key 4.3.1":"value 4.3.1","key 4.3.2":"value 4.3.2"},"key 4.4":["value 4.4.1","value 4.4.2",["value 4.4.3.1","value 4.4.3.2"]]},"key 5":"value 5 part 1","key 6":"value 6 part 1\nvalue 6 part 2","key 7":"value 7 part 1\n\nvalue 7 part 3\n","key 8":["value 8.1","value 8.2"],"key 9":["value 9.1","value 9.2"],"key 10":"This is a multiline string. It should end without a newline.","key 11":"This is a multiline string. It should end with a newline.\n","key 12":"\nThis is another\nmultiline string.\n\nThis continues the same string.\n\n","key 13":""},"key 1: value 1\r\n: - key2:\r\n \u003E value2:\r\n: #key3 \r\n \u003E #value3 \r\nkey 4:\r\n key 4.1: value 4.1\r\n key 4.2: value 4.2\r\n key 4.3:\r\n key 4.3.1: value 4.3.1\r\n key 4.3.2: value 4.3.2\r\n key 4.4:\r\n - value 4.4.1\r\n - value 4.4.2\r\n -\r\n - value 4.4.3.1\r\n - value 4.4.3.2\r\nkey 5: value 5 part 1\r\nkey 6:\r\n \u003E value 6 part 1\r\n \u003E value 6 part 2\r\nkey 7:\r\n \u003E value 7 part 1\r\n \u003E\r\n \u003E value 7 part 3\r\n \u003E\r\nkey 8:\r\n - value 8.1\r\n - value 8.2\r\nkey 9:\r\n - value 9.1\r\n - value 9.2\r\nkey 10: This is a multiline string. It should end without a newline.\r\nkey 11:\r\n \u003E This is a multiline string. It should end with a newline.\r\n \u003E\r\nkey 12:\r\n \u003E\r\n \u003E This is another\r\n \u003E multiline string.\r\n \u003E\r\n \u003E This continues the same string.\r\n \u003E\r\n \u003E\r\nkey 13:\r\n"],"holistic_2":[{"src_dir":"/","excludes":["/dev","/home/*/.cache","/root/*/.cache","/proc","/sys","/tmp","/var/cache","/var/lock","/var/run","/var/tmp"],"keep":{"hourly":"24","daily":"7","weekly":"4","monthly":"12","yearly":"5"},"passphrase":"trouper segregate militia airway pricey sweetmeat tartan bookstall\nobsession charlady twosome silky puffball grubby ranger notation\nrosebud replicate freshen javelin abbot autocue beater byway\n"},"src_dir: /\r\nexcludes:\r\n - /dev\r\n - /home/*/.cache\r\n - /root/*/.cache\r\n - /proc\r\n - /sys\r\n - /tmp\r\n - /var/cache\r\n - /var/lock\r\n - /var/run\r\n - /var/tmp\r\nkeep:\r\n hourly: 24\r\n daily: 7\r\n weekly: 4\r\n monthly: 12\r\n yearly: 5\r\npassphrase:\r\n \u003E trouper segregate militia airway pricey sweetmeat tartan bookstall\r\n \u003E obsession charlady twosome silky puffball grubby ranger notation\r\n \u003E rosebud replicate freshen javelin abbot autocue beater byway\r\n \u003E\r\n"],"inline_dict_01":[[{},{"":""},{"a":"0"},{"a":"k"},{"a":[]},{"a":["b"]},{"a":{}},{"a":{"b":"1"}},{"a":"0","b":"1"},{"a":{"A":"0"},"b":{"B":"1"}},{"a":{"A":"0"},"b":{"B":"1"}},{"a":["1","2","3"],"b":["4","5","6"]},{"a":"0","b":"1"},{"a":[],"b":[]},{"a":["0","1"],"b":["2","3"]},{"a":{},"b":{}},{"a":{"b":"0","c":"1"},"d":{"e":"2","f":"3"}},{"a":"0","b":[]},{"a":[],"b":{}},{"a":{},"b":"0"},{"a":"0"},{"a":"0"},{"a":"0"},{"a":"0"},{"a":"0"},{"a":"0","b":"1"},{"a":"0","b":"1"},{"a":"0","b":"1"},{"key 1":"value 1","key 2":"value 2"}],"-\r\n {}\r\n-\r\n :\r\n \u003E\r\n-\r\n a: 0\r\n-\r\n a: k\r\n-\r\n a:\r\n []\r\n-\r\n a:\r\n - b\r\n-\r\n a:\r\n {}\r\n-\r\n a:\r\n b: 1\r\n-\r\n a: 0\r\n b: 1\r\n-\r\n a:\r\n A: 0\r\n b:\r\n B: 1\r\n-\r\n a:\r\n A: 0\r\n b:\r\n B: 1\r\n-\r\n a:\r\n - 1\r\n - 2\r\n - 3\r\n b:\r\n - 4\r\n - 5\r\n - 6\r\n-\r\n a: 0\r\n b: 1\r\n-\r\n a:\r\n []\r\n b:\r\n []\r\n-\r\n a:\r\n - 0\r\n - 1\r\n b:\r\n - 2\r\n - 3\r\n-\r\n a:\r\n {}\r\n b:\r\n {}\r\n-\r\n a:\r\n b: 0\r\n c: 1\r\n d:\r\n e: 2\r\n f: 3\r\n-\r\n a: 0\r\n b:\r\n []\r\n-\r\n a:\r\n []\r\n b:\r\n {}\r\n-\r\n a:\r\n {}\r\n b: 0\r\n-\r\n a: 0\r\n-\r\n a: 0\r\n-\r\n a: 0\r\n-\r\n a: 0\r\n-\r\n a: 0\r\n-\r\n a: 0\r\n b: 1\r\n-\r\n a: 0\r\n b: 1\r\n-\r\n a: 0\r\n b: 1\r\n-\r\n key 1: value 1\r\n key 2: value 2\r\n"],"holistic_6":[{"vice president":{"name":"Margaret Hodge","address":"2586 Marigold Lane\nTopeka, Kansas 20682","phone":"1-470-974-0398","email":"margarett.hodge@ku.edu","kids":["Arnie","Zach","Maggie"]}},"vice president:\r\n name: Margaret Hodge\r\n address:\r\n \u003E 2586 Marigold Lane\r\n \u003E Topeka, Kansas 20682\r\n phone: 1-470-974-0398\r\n email: margarett.hodge@ku.edu\r\n kids:\r\n - Arnie\r\n - Zach\r\n - Maggie\r\n"],"inline_dict_17":[{"a":{"b":"0","c":"1"},"d":{"e":"2","f":"3"}},"a:\r\n b: 0\r\n c: 1\r\nd:\r\n e: 2\r\n f: 3\r\n"],"dict_18":[{"key 1":"value 1","key\u0027\u00222":"value 2"},"key 1: value 1\r\nkey\u0027\u00222: value 2\r\n"],"holistic_3":[{"tux":"","jux":"lux","dux":["bux","","\n","crux",""," \u2014 "]},"tux:\r\njux: lux\r\ndux:\r\n - bux\r\n -\r\n -\r\n \u003E\r\n \u003E\r\n - crux\r\n -\r\n - \u2014 \r\n"],"dict_02":[{"apricot\n":"8"},": apricot\r\n:\r\n \u003E 8\r\n"],"inline_list_12":[[["11","12","13"],["21","22","23"],["31","32","33"]],"-\r\n - 11\r\n - 12\r\n - 13\r\n-\r\n - 21\r\n - 22\r\n - 23\r\n-\r\n - 31\r\n - 32\r\n - 33\r\n"],"string_5":["","\u003E\r\n"],"string_9":["what makes it green?","\u003E what makes it green?\r\n"],"string_3":[{"key":"value \u0027 value"},"key: value \u0027 value\r\n"],"string_inline_01":[[[],[""],["\u2018a\u2019 \u2018a\u2019"],["\u2018a\u2019\t\t\u2018a\u2019"],["\u2018a\u2019\u00A0\u00A0\u2018a\u2019"],["\u2018a\u2019\u2000\u2000\u2018a\u2019"],["\u2018a\u2019\u2001\u2001\u2018a\u2019"],["\u2018a\u2019\u2002\u2002\u2018a\u2019"],["\u2018a\u2019\u2003\u2003\u2018a\u2019"],["\u2018a\u2019\u2004\u2004\u2018a\u2019"],["\u2018a\u2019\u2005\u2004\u2018a\u2019"],["\u2018a\u2019\u2006\u2006\u2018a\u2019"],["\u2018a\u2019\u2007\u2007\u2018a\u2019"],["\u2018a\u2019\u2008\u2008\u2018a\u2019"],["\u2018a\u2019\u2009\u2009\u2018a\u2019"],["\u2018a\u2019\u200A\u200A\u2018a\u2019"],["\u2018a\u2019\u2028\u2028\u2018a\u2019"],["\u2018a\u2019\u205F\u205F\u2018a\u2019"],["\u2018a\u2019\u3000\u3000\u2018a\u2019"],["\u2018a\u2019\u202F\u202F\u2018a\u2019"]],"-\r\n []\r\n-\r\n -\r\n-\r\n - \u2018a\u2019 \u2018a\u2019\r\n-\r\n - \u2018a\u2019\t\t\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u00A0\u00A0\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2000\u2000\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2001\u2001\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2002\u2002\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2003\u2003\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2004\u2004\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2005\u2004\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2006\u2006\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2007\u2007\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2008\u2008\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2009\u2009\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u200A\u200A\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u2028\u2028\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u205F\u205F\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u3000\u3000\u2018a\u2019\r\n-\r\n - \u2018a\u2019\u202F\u202F\u2018a\u2019\r\n"],"string_2":[{"key":"value \u0022 value"},"key: value \u0022 value\r\n"],"dict_23":[{"key1":"value 1","key2":"value 2","key 3":"value 3","key 4":"value 4","key5":"","key6":""," key7 ":"value 7"," key8 ":"value 8"," \u0027 key9 \u0027 ":"value 9"," \u0022 key10 \u0022 ":"value 10"," \u0022 key11: \u0022 ":"value 11"," \u0022 key12 : \u0022 ":"value 12"," \u0022 key13: ":"value 13"," \u0022 key14 : ":"value 14"," \u0027 key15\u0027: ":"value 15"," \u0027 key16\u0027 : ":"value 16","":"value 17"," \u0027 key18\u0022\u0027 : ":"value 18"," \u0022 key19\u0027\u0022 : ":"value 19"},"key1: value 1\r\nkey2: value 2\r\nkey 3: value 3\r\nkey 4: value 4\r\nkey5:\r\nkey6:\r\n: key7 \r\n \u003E value 7\r\n: key8 \r\n \u003E value 8\r\n: \u0027 key9 \u0027 \r\n \u003E value 9\r\n: \u0022 key10 \u0022 \r\n \u003E value 10\r\n: \u0022 key11: \u0022 \r\n \u003E value 11\r\n: \u0022 key12 : \u0022 \r\n \u003E value 12\r\n: \u0022 key13: \r\n \u003E value 13\r\n: \u0022 key14 : \r\n \u003E value 14\r\n: \u0027 key15\u0027: \r\n \u003E value 15\r\n: \u0027 key16\u0027 : \r\n \u003E value 16\r\n:\r\n \u003E value 17\r\n: \u0027 key18\u0022\u0027 : \r\n \u003E value 18\r\n: \u0022 key19\u0027\u0022 : \r\n \u003E value 19\r\n"],"dict_16":[{"key:":""},"key::\r\n"],"inline_list_01":[[[],[""],["",""],["a"],[":"],[[]],[[""]],[["a"]],[{}],[{"a":"0"}],["a","b"],["","",""],[[],[]],[[],[""]],[["a","b"],["c","d"]],[["a","b"],["c","d"]],[{},{}],[{"a":"0","b":"1"},{"c":"2","d":"3"}],["a",[]],[[],{}],[{},"b"],["a",""],["a","b",""],["a"],["a"],["a"],["a","b"],["a","b"],["a","b"],["",""],["",""],["",""],["a","b","",""],[["11","12","13"],["21","22","23"],["31","32","33"]],["value 1","value 2","value 3",""]],"-\r\n []\r\n-\r\n -\r\n-\r\n -\r\n -\r\n-\r\n - a\r\n-\r\n - :\r\n-\r\n -\r\n []\r\n-\r\n -\r\n -\r\n-\r\n -\r\n - a\r\n-\r\n -\r\n {}\r\n-\r\n -\r\n a: 0\r\n-\r\n - a\r\n - b\r\n-\r\n -\r\n -\r\n -\r\n-\r\n -\r\n []\r\n -\r\n []\r\n-\r\n -\r\n []\r\n -\r\n -\r\n-\r\n -\r\n - a\r\n - b\r\n -\r\n - c\r\n - d\r\n-\r\n -\r\n - a\r\n - b\r\n -\r\n - c\r\n - d\r\n-\r\n -\r\n {}\r\n -\r\n {}\r\n-\r\n -\r\n a: 0\r\n b: 1\r\n -\r\n c: 2\r\n d: 3\r\n-\r\n - a\r\n -\r\n []\r\n-\r\n -\r\n []\r\n -\r\n {}\r\n-\r\n -\r\n {}\r\n - b\r\n-\r\n - a\r\n -\r\n-\r\n - a\r\n - b\r\n -\r\n-\r\n - a\r\n-\r\n - a\r\n-\r\n - a\r\n-\r\n - a\r\n - b\r\n-\r\n - a\r\n - b\r\n-\r\n - a\r\n - b\r\n-\r\n -\r\n -\r\n-\r\n -\r\n -\r\n-\r\n -\r\n -\r\n-\r\n - a\r\n - b\r\n -\r\n -\r\n-\r\n -\r\n - 11\r\n - 12\r\n - 13\r\n -\r\n - 21\r\n - 22\r\n - 23\r\n -\r\n - 31\r\n - 32\r\n - 33\r\n-\r\n - value 1\r\n - value 2\r\n - value 3\r\n -\r\n"],"dict_29":[{"{http://www.kde.org/standards/kcfg/1.0}kcfgfile":"","{http://www.kde.org/standards/kcfg/1.0}group":{"{http://www.kde.org/standards/kcfg/1.0}entry":[{"{http://www.kde.org/standards/kcfg/1.0}default":"250"},{"{http://www.kde.org/standards/kcfg/1.0}default":"krunner,yakuake"}]}},": {http://www.kde.org/standards/kcfg/1.0}kcfgfile\r\n \u003E\r\n: {http://www.kde.org/standards/kcfg/1.0}group\r\n : {http://www.kde.org/standards/kcfg/1.0}entry\r\n -\r\n : {http://www.kde.org/standards/kcfg/1.0}default\r\n \u003E 250\r\n -\r\n : {http://www.kde.org/standards/kcfg/1.0}default\r\n \u003E krunner,yakuake\r\n"],"string_4":[{"key1":"\u0027And Fred said \u0022yabba dabba doo!\u0022 to Barney.\u0027","key2":"\u0022And Fred said \u0027yabba dabba doo!\u0027 to Barney.\u0022","key3":"\u0022And Fred said \u0022yabba dabba doo!\u0022 to Barney.\u0022","key4":"\u0027And Fred said \u0027yabba dabba doo!\u0027 to Barney.\u0027","key5":"And Fred said \u0022yabba dabba doo!\u0022 to Barney.","key6":"And Fred said \u0027yabba dabba doo!\u0027 to Barney."},"key1: \u0027And Fred said \u0022yabba dabba doo!\u0022 to Barney.\u0027\r\nkey2: \u0022And Fred said \u0027yabba dabba doo!\u0027 to Barney.\u0022\r\nkey3: \u0022And Fred said \u0022yabba dabba doo!\u0022 to Barney.\u0022\r\nkey4: \u0027And Fred said \u0027yabba dabba doo!\u0027 to Barney.\u0027\r\nkey5: And Fred said \u0022yabba dabba doo!\u0022 to Barney.\r\nkey6: And Fred said \u0027yabba dabba doo!\u0027 to Barney.\r\n"],"holistic_5":[{"president":{"name":"Katheryn McDaniel","address":"138 Almond Street\nTopeka, Kansas 20697","phone":{"cell":"1-210-835-5297","home":"1-210-478-8470"},"email":"KateMcD@aol.com","kids":["Joanie","Terrance"]}},"president:\r\n name: Katheryn McDaniel\r\n address:\r\n \u003E 138 Almond Street\r\n \u003E Topeka, Kansas 20697\r\n phone:\r\n cell: 1-210-835-5297\r\n home: 1-210-478-8470\r\n email: KateMcD@aol.com\r\n kids:\r\n - Joanie\r\n - Terrance\r\n"],"dict_01":[{"key1":"","key2":""},"key1:\r\nkey2:\r\n"],"string_multiline_01":["\n","\u003E\r\n\u003E\r\n"],"list_1":[["",""],"-\r\n-\r\n"],"string_multiline_02":["\nLorem Ipsum\n\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, \nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo \nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse \ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat \nnon proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n\n\n Sed ut perspiciatis unde omnis iste natus error sit voluptatem\naccusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab \nillo inventore veritatis et quasi architecto beatae vitae dicta sunt \nexplicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit \naut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem \nsequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit \namet, consectetur, adipisci velit, sed quia non numquam eius modi tempora \nincidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad \nminima veniam, quis nostrum exercitationem ullam corporis suscipit \nlaboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum \niure reprehenderit qui in ea voluptate velit esse quam nihil molestiae \nconsequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?\u0022\n","\u003E\r\n\u003E Lorem Ipsum\r\n\u003E\r\n\u003E Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\r\n\u003E tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, \r\n\u003E quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo \r\n\u003E consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse \r\n\u003E cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat \r\n\u003E non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\r\n\u003E\r\n\u003E\r\n\u003E Sed ut perspiciatis unde omnis iste natus error sit voluptatem\r\n\u003E accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab \r\n\u003E illo inventore veritatis et quasi architecto beatae vitae dicta sunt \r\n\u003E explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit \r\n\u003E aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem \r\n\u003E sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit \r\n\u003E amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora \r\n\u003E incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad \r\n\u003E minima veniam, quis nostrum exercitationem ullam corporis suscipit \r\n\u003E laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum \r\n\u003E iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae \r\n\u003E consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?\u0022\r\n\u003E\r\n"],"string_8":["what makes it green?\r\n","\u003E what makes it green?\r\n\u003E\r\n"],"string_7":["what makes it green?","\u003E what makes it green?\r\n"],"string_inline_02":[[{},{"a":""},{"a":"\u2018a\u2019 \u2018a\u2019"},{"a":"\u2018a\u2019\t\t\u2018a\u2019"},{"a":"\u2018a\u2019\u00A0\u00A0\u2018a\u2019"},{"a":"\u2018a\u2019\u2000\u2000\u2018a\u2019"},{"a":"\u2018a\u2019\u2001\u2001\u2018a\u2019"},{"a":"\u2018a\u2019\u2002\u2002\u2018a\u2019"},{"a":"\u2018a\u2019\u2003\u2003\u2018a\u2019"},{"a":"\u2018a\u2019\u2004\u2004\u2018a\u2019"},{"a":"\u2018a\u2019\u2005\u2004\u2018a\u2019"},{"a":"\u2018a\u2019\u2006\u2006\u2018a\u2019"},{"a":"\u2018a\u2019\u2007\u2007\u2018a\u2019"},{"a":"\u2018a\u2019\u2008\u2008\u2018a\u2019"},{"a":"\u2018a\u2019\u2009\u2009\u2018a\u2019"},{"a":"\u2018a\u2019\u200A\u200A\u2018a\u2019"},{"a":"\u2018a\u2019\u2028\u2028\u2018a\u2019"},{"a":"\u2018a\u2019\u205F\u205F\u2018a\u2019"},{"a":"\u2018a\u2019\u3000\u3000\u2018a\u2019"},{"a":"\u2018a\u2019\u202F\u202F\u2018a\u2019"}],"-\r\n {}\r\n-\r\n a:\r\n-\r\n a: \u2018a\u2019 \u2018a\u2019\r\n-\r\n a: \u2018a\u2019\t\t\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u00A0\u00A0\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2000\u2000\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2001\u2001\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2002\u2002\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2003\u2003\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2004\u2004\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2005\u2004\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2006\u2006\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2007\u2007\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2008\u2008\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2009\u2009\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u200A\u200A\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u2028\u2028\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u205F\u205F\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u3000\u3000\u2018a\u2019\r\n-\r\n a: \u2018a\u2019\u202F\u202F\u2018a\u2019\r\n"],"dict_03":[{" key-a\u0022 : key-b\u0027 : key-c ":"value"},": key-a\u0022 : key-b\u0027 : key-c \r\n \u003E value\r\n"],"list_2":[["A","B","C",["D1","D2"],"E"],"- A\r\n- B\r\n- C\r\n-\r\n - D1\r\n - D2\r\n- E\r\n"],"dict_04":[{},"{}\r\n"],"dict_28":[{"tether":{"disclose":"paranoid clunk gaggle","prolong":"stove banish","navel":"-clipboard organist signify","crane":"-washout honey guarantor=aircrew","inure":"fondle = 10k\u03A9*dissect"},"majesty":{"fatten":"washbowl flagon gentile hairstyle","static":"lender busby","niece":"-humpback adduce ferryboat","reservoir":"-dally idiot enlarge=avalanche","wally":"divorcee = 10k\u03A9*fugue"},"banner":{"scepter":"trollop living giddy","lager":"piper glacier","debunk":"-trapeze person matron","pecan":"-uncanny perform megaton=profiteer","register":"answer = 10k\u03A9*trend"},"monolith":{"partitive":"bookie outcome buckskin","roller":"pixie fraud","change":"scullery-roach rubber reveal\u002Bpayoff","simulator":"smock fritter consign=chateau","narrow":"betrothal = 10k\u03A9*trooper - landau"},"reinstate":{"dramatist":"pasture glade enslave upright","kinky":"deuce birdie","bathroom":"people-layoff fluke flood\u002Bsonata","heart":"loiter feature scamper=drivel","vendetta":"nauseate = 10k\u03A9*hoodlum - signboard"},"overstate":{"deter":"clitoris treachery reading","saddlebag":"doodle enunciate","cherub":"cupboard-shingle refuge reefer\u002Banimate","overcome":"gasometer crease bazooka=thriller","poplar":"centipede = 10k\u03A9*headman - dewlap"},"[testament:blight] spangle":{"otter":"adherent disguise electrode biplane","stormy":"curfew neuter","spaceman":"addict = snowman*(anxiety\u002Bembitter)*bayonet kestrel liken","hardy thinner":"\u0027pretend","belief":"sphere","sachet":"fortnight: twitch(hopper) rebut duodenum=bottom; pleat=onward.\nfrizz: galley(genealogy) advantage whelk=-sprawl; waist=-immigrant."},"[mongrel:sequester] prism":{"bairn":"easterner racketeer shortfall bootlace amoeba","canopy":"refuse profit","snuggle":"baritone = scrounger*(supplier\u002Bclobber)*flutter agate simplify","edition industry":"\u0027castle","tenth":"rhyme","scrunch":"ledge: exporter(wrongdoer) levitate daiquiri=subsidize; bulletin=reason.\njackpot: butcher(frequent) medicine memento=-diaphragm; ointment=-raving."},"[frogman:alleyway] fatigue":{"hyena":"believer timepiece infuriate sixty","cache":"bootee scoopful","laborer":"egoist = lunatic*(obeisance\u002Bvoice)*gambit nickel queer","scraggy doggie":"\u0027cedar","requisite":"pastor","teacher":"toboggan: champion(dominion) adieu golfer=linen; divorce=stake.\nfireguard: vineyard(confide) seashore diddle=-dartboard; genuflect=-fidget."},"install":{"abide":"waistline","skunk":"coarsen nuisance","briar":"eviction = glide \u0026\u0026 !reliquary overfeed resent","magnum accident":"\u0027quince","nightmare":"cheapen"},"withdraw":{"chalice":"noble canard","siphon":"utility overhead","butler":"aspirin.starlet \u003C heater \u003C brace.blockade","juggler":"crumpet = sunny \u002B slattern \u002B persuade. cataclysm = scolding.","betake":"projector.insulator","hearth":"convector"},"surgery":{"sunbathe":"decathlon","fixation":"heighten watcher","stretchy":"-washday \u003C burnish \u003C debrief","scabbard":"reward"},"intercede barony":{"busker":"yachtsman-fleshpot sandbag flummox","vestry":"panorama","sanction":"drench=\u0022%keyboard\u0022"},"harmony creaky":{"physicist":"gauge-doublet bungalow clink","swerve":"cleanser","royalty":"essay=\u0022%honeymoon\u0022;\nextol = \u0022swampy\u0022;\nalmshouse = \u0022\u0022."},"caterwaul imitation":{"dunce":"bodice sitcom chipmunk","profane":"monocle","sortie":"impute=\u0022%covert\u0022"},"menace":{"dredge":"miasma litigant broil","bishop":"medley","inquest":"scourer=\u0022%gamma\u0022; mesmerize=\u0027ballcock"},"mattock":{"taint":"buttery combatant stalwart","oculist":"implicate","support":"closure=\u0027snake; phoenix=\u0022%smoothie\u0022"},"chance":{"riposte":"crusade","scripture":"cathode","doorstep":"dukedom=screening; lifebuoy=\u0022%crackle\u0022","salesman":"shimmer cobweb spool=butter."},"asset":{"overthrow":"dainty","chancy":"bough psychotic","sultana":"father hormone caliber=mayday."},"pollinate":{"doctor":"masochist","strangler":"saloon ensemble shower","tuxedo":"inject=\u0027strategy;\npurport={toffee,ripper}.","citadel":"shrew repellent dairymaid=laser; elevator=biped.\nresound garage mistreat=rebuild; scree=choke.\nanchor begrudge slalom=reassert; molester=chopper.\ndizzy outbreak snifter=tussle; remove=survive.\nnoodle panegyric importune=native; accredit=loser."},"acquit invest gravity":{"remain":"beetroot maroon cliche ninety","bookmark":"munch","commodore":"plank=sundry;\nprick=rehear;\nbonnet=\u0022banana\u0022","transfer":"blister project adjective=slinky; uncover=salty.\nbowler acquiesce nobody=syllabus; bushy=fossilize."},"horror megalith":{"spurt":"flower towpath rejoicing dowry rupture","recur":"capacity","tract":"goatee=\u0027graze;\nliqueur=\u0022scream\u0022;\ndetain=prefigure;\nspill={eggplant,poach}","plunger":"cutting dislocate prince=spongy; flirt=debut.\nneurone cricketer shredder=property; break=octagon; plutocrat=lapwing.\nsofty expert tycoon=qualify; coachman=heretic.\nredwood notebook heath=blackjack; frump=washstand.\nloose keeper applaud=destroyer; intention=hymnal.\npotentate brasserie souvenir=tumor; masseur=hasten.\nsanctify report touchdown=afford; combat=impart.\nbrute elder bisexual=penknife; treadmill=thesaurus.\ntissue sickly dimmer=dowdy; cylinder=actor.\nawakening robotic fascia=paperboy; scalp=length; seashell=50\u03BCA.\nlarch fashion crack=scorpion; explicate=retire.\nmature lapel incline=dressing; thwack=rivet.\nneologism phonetic zebra=upstage; realtor=showpiece.\nevacuee stride softener=ditty; earth=bookcase.\nuproot cross titter=constrict; specific=wayside.\noverwrite overshoot quandary=panther; cartwheel=ratio."},"informer payroll":{"sequin":"armadillo exclaim foray cuckoo","lynch":"punchbowl","trump":"bedeck=quota;\nmachete=croupier;\nalpine=\u0022response\u0022;\nvegetable=slowdown.","whisker":"lottery sheath moonlight=chamber.\nfantasize pullover stool=eject."},"barbarity, allude, whittle":{"militant":"garret dictate sweeper","extension":"senator","justify":"taxicab=ferry;\nparagraph=spokesman;\npolitic=codpiece;\ngrizzle=clerk;\nperturb=mudguard;\ndecade=\u0022sickness\u0022","broad":"ceramic morsel sahib=gelding.\ngravy shoddy fixative=scramble.\nsmelt beatnik describe=duckling.\nbourbon crusader tabloid=wordy."},"extenuate, promoter":{"store":"treasury dumpling emotion skirmish","epitaph":"incumbent","yearning":"adjudge=\u0027yearbook;\nmaneuver=\u0022infer\u0022;\ncabaret=deception;\nhostel={fossil,diagnose}","sporran":"alphabet counter haughty=ceiling; treadle=reedy.\nhierarchy hardship troll=detractor; holocaust=deafen; gangway=translate.\nthought termite limousine=hustle; tweed=majorette.\nbatten swindler parkland=outsider; crawl=prevail.\nprovision fabric indict=amaze; weight=commando.\nextend cabal charge=admit; umlaut=steel.\nstrength councilor entity=address; encamp=slake.\ntrespass soapbox knoll=befriend; aggregate=allusion.\nsequel fingertip billfold=staunch; particle=combine.\nsediment intellect organizer=blurry; fatty=beard; revel=50\u03BCA.\ntoxin steak panacea=elite; scavenge=acoustic.\nfarmyard resign presage=peasant; jumble=regret.\nberry valet alchemist=greasy; clonk=eyesore.\ntreat temper antenatal=interlink; hurtle=catchy.\nobtain seaweed offender=cameo; jostle=reprove.\nrigidity radish braise=scoot; petty=marquee."},"menage, quail":{"outspread":"share pinion fruitcake portend","reference":"appendix","daily":"scrapbook=rejoin;\ndrier=agonize;\nsewer=\u0022dollop\u0022;\nbistro=ratepayer.","flabby":"pentagon rotor science=besiege.\nspider distance shaggy=mayor.\nstatement venture priory=seance.\nsextet riddle shabby=stationer."},"jelly, exude":{"naught":"misread sandbank speculate","espresso":"dispel","oilman":"amalgam=additive;\ntatty=unsettle;\nlousy=\u0022clamber\u0022;\nradiator = \u0022paring, anatomist\u0022;\nsidle=thatch.","episode":"council whiplash muscle=carriage.\nbaseline nymph tantrum=spoof; prognosis=trundle; friend=plump.comedy.\ninduct tubby compost=crank.\nfamily stately expunge=echelon."},"holding, scruple":{"ramrod":"tableau beret","flatten":"tributary","cobra":"hunchback=bumpy;\nlorry=\u0022inkling\u0022;\nholler = \u0022pedant, lifeboat\u0022;\nbutchery=antique.","decree":"embroil numskull stigma=explosion.\ngrand bonus accord=scarf.\namplifier prattle submerge=justice.\ngrace arrowhead athlete=shaver."}},"tether:\r\n disclose: paranoid clunk gaggle\r\n prolong: stove banish\r\n navel: -clipboard organist signify\r\n crane: -washout honey guarantor=aircrew\r\n inure: fondle = 10k\u03A9*dissect\r\nmajesty:\r\n fatten: washbowl flagon gentile hairstyle\r\n static: lender busby\r\n niece: -humpback adduce ferryboat\r\n reservoir: -dally idiot enlarge=avalanche\r\n wally: divorcee = 10k\u03A9*fugue\r\nbanner:\r\n scepter: trollop living giddy\r\n lager: piper glacier\r\n debunk: -trapeze person matron\r\n pecan: -uncanny perform megaton=profiteer\r\n register: answer = 10k\u03A9*trend\r\nmonolith:\r\n partitive: bookie outcome buckskin\r\n roller: pixie fraud\r\n change: scullery-roach rubber reveal\u002Bpayoff\r\n simulator: smock fritter consign=chateau\r\n narrow: betrothal = 10k\u03A9*trooper - landau\r\nreinstate:\r\n dramatist: pasture glade enslave upright\r\n kinky: deuce birdie\r\n bathroom: people-layoff fluke flood\u002Bsonata\r\n heart: loiter feature scamper=drivel\r\n vendetta: nauseate = 10k\u03A9*hoodlum - signboard\r\noverstate:\r\n deter: clitoris treachery reading\r\n saddlebag: doodle enunciate\r\n cherub: cupboard-shingle refuge reefer\u002Banimate\r\n overcome: gasometer crease bazooka=thriller\r\n poplar: centipede = 10k\u03A9*headman - dewlap\r\n: [testament:blight] spangle\r\n otter: adherent disguise electrode biplane\r\n stormy: curfew neuter\r\n spaceman: addict = snowman*(anxiety\u002Bembitter)*bayonet kestrel liken\r\n hardy thinner: \u0027pretend\r\n belief: sphere\r\n sachet:\r\n \u003E fortnight: twitch(hopper) rebut duodenum=bottom; pleat=onward.\r\n \u003E frizz: galley(genealogy) advantage whelk=-sprawl; waist=-immigrant.\r\n: [mongrel:sequester] prism\r\n bairn: easterner racketeer shortfall bootlace amoeba\r\n canopy: refuse profit\r\n snuggle: baritone = scrounger*(supplier\u002Bclobber)*flutter agate simplify\r\n edition industry: \u0027castle\r\n tenth: rhyme\r\n scrunch:\r\n \u003E ledge: exporter(wrongdoer) levitate daiquiri=subsidize; bulletin=reason.\r\n \u003E jackpot: butcher(frequent) medicine memento=-diaphragm; ointment=-raving.\r\n: [frogman:alleyway] fatigue\r\n hyena: believer timepiece infuriate sixty\r\n cache: bootee scoopful\r\n laborer: egoist = lunatic*(obeisance\u002Bvoice)*gambit nickel queer\r\n scraggy doggie: \u0027cedar\r\n requisite: pastor\r\n teacher:\r\n \u003E toboggan: champion(dominion) adieu golfer=linen; divorce=stake.\r\n \u003E fireguard: vineyard(confide) seashore diddle=-dartboard; genuflect=-fidget.\r\ninstall:\r\n abide: waistline\r\n skunk: coarsen nuisance\r\n briar: eviction = glide \u0026\u0026 !reliquary overfeed resent\r\n magnum accident: \u0027quince\r\n nightmare: cheapen\r\nwithdraw:\r\n chalice: noble canard\r\n siphon: utility overhead\r\n butler: aspirin.starlet \u003C heater \u003C brace.blockade\r\n juggler: crumpet = sunny \u002B slattern \u002B persuade. cataclysm = scolding.\r\n betake: projector.insulator\r\n hearth: convector\r\nsurgery:\r\n sunbathe: decathlon\r\n fixation: heighten watcher\r\n stretchy: -washday \u003C burnish \u003C debrief\r\n scabbard: reward\r\nintercede barony:\r\n busker: yachtsman-fleshpot sandbag flummox\r\n vestry: panorama\r\n sanction: drench=\u0022%keyboard\u0022\r\nharmony creaky:\r\n physicist: gauge-doublet bungalow clink\r\n swerve: cleanser\r\n royalty:\r\n \u003E essay=\u0022%honeymoon\u0022;\r\n \u003E extol = \u0022swampy\u0022;\r\n \u003E almshouse = \u0022\u0022.\r\ncaterwaul imitation:\r\n dunce: bodice sitcom chipmunk\r\n profane: monocle\r\n sortie: impute=\u0022%covert\u0022\r\nmenace:\r\n dredge: miasma litigant broil\r\n bishop: medley\r\n inquest: scourer=\u0022%gamma\u0022; mesmerize=\u0027ballcock\r\nmattock:\r\n taint: buttery combatant stalwart\r\n oculist: implicate\r\n support: closure=\u0027snake; phoenix=\u0022%smoothie\u0022\r\nchance:\r\n riposte: crusade\r\n scripture: cathode\r\n doorstep: dukedom=screening; lifebuoy=\u0022%crackle\u0022\r\n salesman: shimmer cobweb spool=butter.\r\nasset:\r\n overthrow: dainty\r\n chancy: bough psychotic\r\n sultana: father hormone caliber=mayday.\r\npollinate:\r\n doctor: masochist\r\n strangler: saloon ensemble shower\r\n tuxedo:\r\n \u003E inject=\u0027strategy;\r\n \u003E purport={toffee,ripper}.\r\n citadel:\r\n \u003E shrew repellent dairymaid=laser; elevator=biped.\r\n \u003E resound garage mistreat=rebuild; scree=choke.\r\n \u003E anchor begrudge slalom=reassert; molester=chopper.\r\n \u003E dizzy outbreak snifter=tussle; remove=survive.\r\n \u003E noodle panegyric importune=native; accredit=loser.\r\nacquit invest gravity:\r\n remain: beetroot maroon cliche ninety\r\n bookmark: munch\r\n commodore:\r\n \u003E plank=sundry;\r\n \u003E prick=rehear;\r\n \u003E bonnet=\u0022banana\u0022\r\n transfer:\r\n \u003E blister project adjective=slinky; uncover=salty.\r\n \u003E bowler acquiesce nobody=syllabus; bushy=fossilize.\r\nhorror megalith:\r\n spurt: flower towpath rejoicing dowry rupture\r\n recur: capacity\r\n tract:\r\n \u003E goatee=\u0027graze;\r\n \u003E liqueur=\u0022scream\u0022;\r\n \u003E detain=prefigure;\r\n \u003E spill={eggplant,poach}\r\n plunger:\r\n \u003E cutting dislocate prince=spongy; flirt=debut.\r\n \u003E neurone cricketer shredder=property; break=octagon; plutocrat=lapwing.\r\n \u003E softy expert tycoon=qualify; coachman=heretic.\r\n \u003E redwood notebook heath=blackjack; frump=washstand.\r\n \u003E loose keeper applaud=destroyer; intention=hymnal.\r\n \u003E potentate brasserie souvenir=tumor; masseur=hasten.\r\n \u003E sanctify report touchdown=afford; combat=impart.\r\n \u003E brute elder bisexual=penknife; treadmill=thesaurus.\r\n \u003E tissue sickly dimmer=dowdy; cylinder=actor.\r\n \u003E awakening robotic fascia=paperboy; scalp=length; seashell=50\u03BCA.\r\n \u003E larch fashion crack=scorpion; explicate=retire.\r\n \u003E mature lapel incline=dressing; thwack=rivet.\r\n \u003E neologism phonetic zebra=upstage; realtor=showpiece.\r\n \u003E evacuee stride softener=ditty; earth=bookcase.\r\n \u003E uproot cross titter=constrict; specific=wayside.\r\n \u003E overwrite overshoot quandary=panther; cartwheel=ratio.\r\ninformer payroll:\r\n sequin: armadillo exclaim foray cuckoo\r\n lynch: punchbowl\r\n trump:\r\n \u003E bedeck=quota;\r\n \u003E machete=croupier;\r\n \u003E alpine=\u0022response\u0022;\r\n \u003E vegetable=slowdown.\r\n whisker:\r\n \u003E lottery sheath moonlight=chamber.\r\n \u003E fantasize pullover stool=eject.\r\nbarbarity, allude, whittle:\r\n militant: garret dictate sweeper\r\n extension: senator\r\n justify:\r\n \u003E taxicab=ferry;\r\n \u003E paragraph=spokesman;\r\n \u003E politic=codpiece;\r\n \u003E grizzle=clerk;\r\n \u003E perturb=mudguard;\r\n \u003E decade=\u0022sickness\u0022\r\n broad:\r\n \u003E ceramic morsel sahib=gelding.\r\n \u003E gravy shoddy fixative=scramble.\r\n \u003E smelt beatnik describe=duckling.\r\n \u003E bourbon crusader tabloid=wordy.\r\nextenuate, promoter:\r\n store: treasury dumpling emotion skirmish\r\n epitaph: incumbent\r\n yearning:\r\n \u003E adjudge=\u0027yearbook;\r\n \u003E maneuver=\u0022infer\u0022;\r\n \u003E cabaret=deception;\r\n \u003E hostel={fossil,diagnose}\r\n sporran:\r\n \u003E alphabet counter haughty=ceiling; treadle=reedy.\r\n \u003E hierarchy hardship troll=detractor; holocaust=deafen; gangway=translate.\r\n \u003E thought termite limousine=hustle; tweed=majorette.\r\n \u003E batten swindler parkland=outsider; crawl=prevail.\r\n \u003E provision fabric indict=amaze; weight=commando.\r\n \u003E extend cabal charge=admit; umlaut=steel.\r\n \u003E strength councilor entity=address; encamp=slake.\r\n \u003E trespass soapbox knoll=befriend; aggregate=allusion.\r\n \u003E sequel fingertip billfold=staunch; particle=combine.\r\n \u003E sediment intellect organizer=blurry; fatty=beard; revel=50\u03BCA.\r\n \u003E toxin steak panacea=elite; scavenge=acoustic.\r\n \u003E farmyard resign presage=peasant; jumble=regret.\r\n \u003E berry valet alchemist=greasy; clonk=eyesore.\r\n \u003E treat temper antenatal=interlink; hurtle=catchy.\r\n \u003E obtain seaweed offender=cameo; jostle=reprove.\r\n \u003E rigidity radish braise=scoot; petty=marquee.\r\nmenage, quail:\r\n outspread: share pinion fruitcake portend\r\n reference: appendix\r\n daily:\r\n \u003E scrapbook=rejoin;\r\n \u003E drier=agonize;\r\n \u003E sewer=\u0022dollop\u0022;\r\n \u003E bistro=ratepayer.\r\n flabby:\r\n \u003E pentagon rotor science=besiege.\r\n \u003E spider distance shaggy=mayor.\r\n \u003E statement venture priory=seance.\r\n \u003E sextet riddle shabby=stationer.\r\njelly, exude:\r\n naught: misread sandbank speculate\r\n espresso: dispel\r\n oilman:\r\n \u003E amalgam=additive;\r\n \u003E tatty=unsettle;\r\n \u003E lousy=\u0022clamber\u0022;\r\n \u003E radiator = \u0022paring, anatomist\u0022;\r\n \u003E sidle=thatch.\r\n episode:\r\n \u003E council whiplash muscle=carriage.\r\n \u003E baseline nymph tantrum=spoof; prognosis=trundle; friend=plump.comedy.\r\n \u003E induct tubby compost=crank.\r\n \u003E family stately expunge=echelon.\r\nholding, scruple:\r\n ramrod: tableau beret\r\n flatten: tributary\r\n cobra:\r\n \u003E hunchback=bumpy;\r\n \u003E lorry=\u0022inkling\u0022;\r\n \u003E holler = \u0022pedant, lifeboat\u0022;\r\n \u003E butchery=antique.\r\n decree:\r\n \u003E embroil numskull stigma=explosion.\r\n \u003E grand bonus accord=scarf.\r\n \u003E amplifier prattle submerge=justice.\r\n \u003E grace arrowhead athlete=shaver.\r\n"],"inline_dict_18":[{"key 1":{"k1.1":"v1.1","k1.2":"v1.2","k1.3":"v1.3"},"key 2":{"k2.1":"v2.1","k2.2":"v2.2","k2.3":"v2.3"},"key 3":{"k3.1":"v3.1","k3.2":"v3.2","k3.3":"v3.3"},"key 4":{"k4.1":"v4.1","k4.2":"v4.2","k4.3":"v4.3"}},"key 1:\r\n k1.1: v1.1\r\n k1.2: v1.2\r\n k1.3: v1.3\r\nkey 2:\r\n k2.1: v2.1\r\n k2.2: v2.2\r\n k2.3: v2.3\r\nkey 3:\r\n k3.1: v3.1\r\n k3.2: v3.2\r\n k3.3: v3.3\r\nkey 4:\r\n k4.1: v4.1\r\n k4.2: v4.2\r\n k4.3: v4.3\r\n"],"dict_24":[{"\u0027a":"\u0027: a","\u0027b: ":"\u0027: b"},"\u0027a: \u0027: a\r\n: \u0027b: \r\n \u003E \u0027: b\r\n"],"dict_20":[{"-#:\u0027\u003E":"-#:\u0022\u003E:","-#:\u0022\u003E":"-#:\u0027\u003E:","-#\u0027\\\u0027\u003E:":"-#\u0022\\\u0022\u003E::","-#\u0022\\\u0022\u003E:":"-#\u0027\\\u0027\u003E::",":-#:\u0027\u003E":":-#:\u0022\u003E:",":-#:\u0022\u003E":":-#:\u0027\u003E:",":-#\u0027\\\u0027\u003E:":":-#\u0022\\\u0022\u003E::",":-#\u0022\\\u0022\u003E:":":-#\u0027\\\u0027\u003E::","\u003E:-#:\u0027\u003E":"\u003E:-#:\u0022\u003E:","\u003E:-#:\u0022\u003E":"\u003E:-#:\u0027\u003E:","\u003E:-#\u0027\\\u0027\u003E:":"\u003E:-#\u0022\\\u0022\u003E::","\u003E:-#\u0022\\\u0022\u003E:":"\u003E:-#\u0027\\\u0027\u003E::"},"-#:\u0027\u003E: -#:\u0022\u003E:\r\n-#:\u0022\u003E: -#:\u0027\u003E:\r\n-#\u0027\\\u0027\u003E:: -#\u0022\\\u0022\u003E::\r\n-#\u0022\\\u0022\u003E:: -#\u0027\\\u0027\u003E::\r\n:-#:\u0027\u003E: :-#:\u0022\u003E:\r\n:-#:\u0022\u003E: :-#:\u0027\u003E:\r\n:-#\u0027\\\u0027\u003E:: :-#\u0022\\\u0022\u003E::\r\n:-#\u0022\\\u0022\u003E:: :-#\u0027\\\u0027\u003E::\r\n\u003E:-#:\u0027\u003E: \u003E:-#:\u0022\u003E:\r\n\u003E:-#:\u0022\u003E: \u003E:-#:\u0027\u003E:\r\n\u003E:-#\u0027\\\u0027\u003E:: \u003E:-#\u0022\\\u0022\u003E::\r\n\u003E:-#\u0022\\\u0022\u003E:: \u003E:-#\u0027\\\u0027\u003E::\r\n"],"dict_26":[{"A":{"B:":""},"C :":"","D":"","E":"","F1\nF2":""},"A:\r\n B::\r\nC ::\r\nD:\r\nE:\r\n: F1\r\n: F2\r\n \u003E\r\n"],"dict_25":[{"This is a key that is\nspread over multiple lines.\nLike normal multiline strings,\nit can contain any character\nwithout restriction.":"This is its value","Here is another multiline key.\nBut in this case it has an empty value.":"","This is another multiline key,\nthis one with a multiline value.":"Here is the multiline value.\nIt is paired with a multiline key.","here is a simple key":"with a simple value","Here is a multiline key\nwith a list value.":["0","1"],"Here is a multiline key\nwith a dictionary value.":{"a":"a","b":"b"},"here is another simple key":"with another simple value","here is a multiline key: that kind of looks a dict item":"a multiline value","This is another multiline key,\nthis one with a dictionary as a value that has a multiline key.":{"This is another multiline key,\nthis one with a multiline value.":"Here is the multiline value.\nIt is paired with a multiline key."},"This a multiline key with a blank second line.\n":"yabba dabba doo"},": This is a key that is\r\n: spread over multiple lines.\r\n: Like normal multiline strings,\r\n: it can contain any character\r\n: without restriction.\r\n \u003E This is its value\r\n: Here is another multiline key.\r\n: But in this case it has an empty value.\r\n \u003E\r\n: This is another multiline key,\r\n: this one with a multiline value.\r\n \u003E Here is the multiline value.\r\n \u003E It is paired with a multiline key.\r\nhere is a simple key: with a simple value\r\n: Here is a multiline key\r\n: with a list value.\r\n - 0\r\n - 1\r\n: Here is a multiline key\r\n: with a dictionary value.\r\n a: a\r\n b: b\r\nhere is another simple key: with another simple value\r\n: here is a multiline key: that kind of looks a dict item\r\n \u003E a multiline value\r\n: This is another multiline key,\r\n: this one with a dictionary as a value that has a multiline key.\r\n : This is another multiline key,\r\n : this one with a multiline value.\r\n \u003E Here is the multiline value.\r\n \u003E It is paired with a multiline key.\r\n: This a multiline key with a blank second line.\r\n:\r\n \u003E yabba dabba doo\r\n"],"inline_list_14":[{"key 1":["v1","v2","v3",""]},"key 1:\r\n - v1\r\n - v2\r\n - v3\r\n -\r\n"]}; let tests = Object.entries(officialTests); shuffle(tests); tests = tests.slice(25); function assertEqualsExceptNewlines(output: string, expected: string): TestCase { [output, expected] = [output, expected].map(x => x.replaceAll("\r","")) const testCase = new TestCase( undefined, expected == output ? "Pass" : "Fail", { "Diff": { expected, output } } ); context.testCases.push(testCase); return testCase; } for (const [name, [input, output]] of tests) { yield assertEqualsExceptNewlines((await context.run(JSON.stringify(input))).text, output).setName(name); } return context.noFailures(); })
Example Code
const fs = require("fs"); const input = JSON.parse(fs.readFileSync(0) + ""); const output = dump(input); process.stdout.write(output); // https://github.com/fidian/nestedtext/blob/master/src/dump.ts function dump(content, options = {}) { options = { indent: options.indent || " ", newline: options.newline || "\n" }; return dumpValue(content, "", options, content); } function hasNewlines(content) { return content.includes("\n") || content.includes("\r"); } function mapLines(content, indent, options, token) { const lines = content.split(/\r?\n|\r/); return lines.map((item) => `${indent}${token}${item ? ' ' : ''}${item}${options.newline}`).join(''); } function throwError(culprit, message) { const error = new Error(message); error.culprit = culprit; throw error; } function dumpValue(value, indent, options, culprit) { if (Array.isArray(value)) { return dumpArray(value, indent, options); } if (typeof value === "object" && value !== null) { return dumpObject(value, indent, options); } if (typeof value === "string") { return dumpString(value, indent, options); } throwError(culprit, "Invalid value"); } function dumpString(value, indent, options) { if (hasNewlines(value)) { return mapLines(value, indent, options, '>'); } if (value) { return `${indent}> ${value}${options.newline}`; } return `${indent}>${options.newline}`; } function dumpArray(value, indent, options) { if (value.length === 0) { return `${indent}[]${options.newline}`; } return value .map((item) => { if (typeof item === "string" && !hasNewlines(item)) { if (item) { return `${indent}- ${item}${options.newline}`; } return `${indent}-${options.newline}`; } return `${indent}-${options.newline}${dumpValue(item, indent + options.indent, options, item)}`; }) .join(''); } function dumpObject(value, indent, options) { if (Object.keys(value).length === 0) { return `${indent}{}${options.newline}`; } return Object.entries(value) .map(([key, item]) => { if (hasNewlines(key) || key === '' || /^[[{\s]/.test(key) || /[-#>:] /.test(key)) { const keyStr = mapLines(key, indent, options, ':'); const valueStr = dumpValue(item, indent + options.indent, options, key); return `${keyStr}${valueStr}`; } if (typeof item !== "string" || hasNewlines(item)) { const keyStr = `${indent}${key}:${options.newline}`; const valueStr = dumpValue(item, indent + options.indent, options, key); return `${keyStr}${valueStr}`; } if (item) { return `${indent}${key}: ${item}${options.newline}`; } return `${indent}${key}:${options.newline}`; }) .join(''); }