swc_ecma_transforms 0.30.0

rust port of babel and closure compiler.
Documentation
#!/usr/bin/env python3


from os import listdir
from os.path import isfile, join

files = [f for f in listdir('./fixtures') if isfile(join('./fixtures', f))]

fm = {}

for f in files:
    name = join('./fixtures', f)
    if '.DS_Store' in f:
        continue
    test_name, file_type = f.rsplit('_', 1)
    if file_type == 'input.mjs':
        file_type = 'input.js'
    if file_type == 'input.mjsz':
        file_type = 'input.js'
    if file_type == 'output.mjs':
        file_type = 'output.js'
    if file_type == 'output.mjsz':
        file_type = 'output.js'


    if file_type == 'exec.mjs':
        file_type = 'exec.js'
    if file_type == 'exec.mjsz':
        file_type = 'exec.js'

    if not test_name in fm:
        fm[test_name] = {}
    with open(name, "r") as f:
        fm[test_name][file_type] = f.read()


for name in fm:
    m = fm[name]
    name = name.replace('-', '_')

    print()
    print('// {}'.format(name))
    if 'exec.js' in m:
        if 'options.json' in m:
            print('test_exec!(syntax(), |_| tr(r#"{}"#), {}_exec, r#"\n{}\n"#);'.format(
                m['options.json'],name, m['exec.js']
            ))
        else:
            print('test_exec!(syntax(), |_| tr(Default::default()), {}_exec, r#"\n{}\n"#);'.format(
                name, m['exec.js']
            ))
    elif 'input.js' in m and 'output.js' in m:
        if 'options.json' in m:
            print('test!(syntax(),|_| tr(r#"{}"#), {}, r#"\n{}\n"#, r#"\n{}\n"#);'.format(
                m['options.json'], name, m['input.js'], m['output.js']
            ))
        else:
            print('test!(syntax(),|_| tr(Default::default()), {}, r#"\n{}\n"#, r#"\n{}\n"#);'.format(
                name, m['input.js'], m['output.js']
            ))
    elif 'stdout.txt' in m:
        pass
    else:
        print(m.keys())
        raise Exception(name, m)