예제 #1
0
    def test_empty_observable(self):
        text = '----->'

        expected_result = [{
            'obs': [[],
                    [
                        {
                            'ts': '-'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'ts': '-'
                        },
                    ], '>']
        }]

        idl = Idl()
        ast = idl.parse(text)
        self.assertEqual(expected_result, ast)
예제 #2
0
    def test_child_observable(self):
        text = '+-a->'

        expected_result = [{
            'obs': [[], '+',
                    [
                        {
                            'ts': '-',
                            'item': None
                        },
                        {
                            'ts': None,
                            'item': 'a'
                        },
                        {
                            'ts': '-',
                            'item': None
                        },
                    ], '>'],
            'op':
            None
        }]

        idl = Idl()
        ast = idl.parse(text)
        print(ast)
        self.assertEqual(expected_result, ast)
예제 #3
0
 def render_marble(text, outfname):
     with open('/home/erik/temp', 'a') as w:
         w.write('render marble ' + text + '\n')
         w.flush()
     idl = Idl()
     ast = idl.parse(text)
     marble = create_marble_from_ast(ast)
     render_to_file(marble, outfname, default_theme)
예제 #4
0
    def test_operator(self):
        text = '[ map(i: i*2) ]'

        expected_result = [{'op': ['[', ' map(i: i*2) ', ']']}]

        idl = Idl()
        ast = idl.parse(text)
        print(ast)
        self.assertEqual(expected_result, ast)
예제 #5
0
def main():
    args = parse_arguments()

    idl_file = open(args.input, 'r')
    idl_text = idl_file.read()

    idl = Idl()
    ast = idl.parse(idl_text)

    #print(ast)
    marble = create_marble_from_ast(ast)
    render_to_file(marble, args.output, default_theme)
예제 #6
0
def render_marble(self, node):
    refname, outfname = generate_name(self, node)
    if os.path.exists(outfname):
        return refname, outfname

    ensuredir(os.path.dirname(outfname))
    idl = Idl()
    ast = idl.parse(node['text'])

    marble = create_marble_from_ast(ast)
    render_to_file(marble, outfname, default_theme)
    return refname, outfname
예제 #7
0
    def test_multiple_observables(self):
        text = '''-a-b->
-1-2->
'''

        expected_result = [{
            'obs': [[],
                    [
                        {
                            'ts': '-'
                        },
                        {
                            'item': 'a'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'item': 'b'
                        },
                        {
                            'ts': '-'
                        },
                    ], '>']
        }, {
            'obs': [[],
                    [
                        {
                            'ts': '-'
                        },
                        {
                            'item': '1'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'item': '2'
                        },
                        {
                            'ts': '-'
                        },
                    ], '>']
        }]

        idl = Idl()
        ast = idl.parse(text)
        print(ast)
        self.assertEqual(expected_result, ast)
예제 #8
0
    def test_observable_skipspan(self):
        text = '  -a-b-c-->'

        expected_result = [{
            'obs': [[' ', ' '],
                    [
                        {
                            'ts': '-',
                            'item': None
                        },
                        {
                            'ts': None,
                            'item': 'a'
                        },
                        {
                            'ts': '-',
                            'item': None
                        },
                        {
                            'ts': None,
                            'item': 'b'
                        },
                        {
                            'ts': '-',
                            'item': None
                        },
                        {
                            'ts': None,
                            'item': 'c'
                        },
                        {
                            'ts': '-',
                            'item': None
                        },
                        {
                            'ts': '-',
                            'item': None
                        },
                    ], '>'],
            'op':
            None
        }]

        idl = Idl()
        ast = idl.parse(text)
        print(ast)
        self.assertEqual(expected_result, ast)
예제 #9
0
    def test_higer_order_observable(self):
        text = '-+->'

        expected_result = [{
            'obs': [[], [
                {
                    'ts': '-'
                },
                {
                    'item': '+'
                },
                {
                    'ts': '-'
                },
            ], '>']
        }]

        idl = Idl()
        ast = idl.parse(text)
        print(ast)
        self.assertEqual(expected_result, ast)
예제 #10
0
    def test_observable_items(self):
        text = '-a-b-c-->'

        expected_result = [{
            'obs': [[],
                    [
                        {
                            'ts': '-'
                        },
                        {
                            'item': 'a'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'item': 'b'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'item': 'c'
                        },
                        {
                            'ts': '-'
                        },
                        {
                            'ts': '-'
                        },
                    ], '>']
        }]

        idl = Idl()
        ast = idl.parse(text)
        print(ast)
        self.assertEqual(expected_result, ast)