#!/usr/bin/env python from dataclasses import dataclass, field import sys, re, os, enum, itertools from functools import partial, partialmethod from time import sleep from operator import itemgetter from defl import log, cl, Path, Undefined, Null, Assert, Time, Obj, Dunder from defl import CLIError from defl._typing_ import * import defl from defl._configFormats_ import ConfigInput, ConfigOutput from defl.markdown_ import * from defl.testing_ import Test, Tester, TestState tester = Tester(name=__file__) markdownTestData = defl.Dath(__file__).parent / 'markdown.txt' markdownTestData = markdownTestData.readText() def genny(text): yield defl.formatMultiLineStr(text, dedent=True, filt=True, join=False) confIn = ConfigInput(text).markdown() # print(defl.jdumps(confIn, colorize=True)) yield confIn confOut = ConfigOutput(confIn).markdown() # print(confOut) assert isinstance(confOut, str) yield defl.formatMultiLineStr(confOut, dedent=True, filt=True, join=False) # @tester.add() # TODO def mdList(): gen = genny(""" - 1 - 2 - 3 - 4 """) dedent = next(gen) outp = ['- 1', ' - 2', ' - 3', ' - 4'] Assert(dedent) == outp Assert(next(gen)) == [ { 'typ': 'list', 'lines': ['1'], 'children': [ {'typ': 'list', 'lines': ['2']}, {'typ': 'list', 'lines': ['3']}, {'typ': 'list', 'lines': ['4']}, ], } ] Assert(next(gen)) == a # @tester.add() # TODO def mdTable(): gen = genny( """ | a | bb |ccc | | ------ | -----------|---| | 1| 444| aaa| | 22|55 |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb| | 333|6|c| """ ) dedent = next(gen) outp = [ '| a | bb |ccc |', '| ------ | -----------|---|', '| 1| 444| aaa|', '| 22|55 |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|', '| 333|6|c|', ] Assert(dedent) == outp Assert(next(gen)) == [ { 'typ': 'table', 'lines': [ {'a': '1', 'bb': '444', 'ccc': 'aaa'}, {'a': '22', 'bb': '55', 'ccc': 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'}, {'a': '333', 'bb': '6', 'ccc': 'c'}, ], } ] Assert(next(gen)) == outp @tester.add() def csv(): a = ['a,b,c', '1,2,3', '4,5,6'] res = ConfigInput.Csv(a) Assert(res) == [{'a': '1', 'b': '2', 'c': '3'}, {'a': '4', 'b': '5', 'c': '6'}] log.info(tester.run()) tester.exitWithStatus()