#!/usr/bin/env python
import glob
import json
import sys


def add_triple_quotes(string):
    return '\n"""%s"""]\n' % string


def join_list(lst):
    return "".join(lst)


for input_file_path in glob.glob(sys.argv[1]):
    output_file_path = input_file_path.replace('.ipynb', '.py')

    with open(input_file_path) as json_file:
        data = json.load(json_file)

    count = 1
    output_dict = dict()
    syntax_dict = dict()
    markdown_dict = dict()

    for i in range(len(data['cells'])):
        ct = str(count)
        if 'execution_count' in data['cells'][i]:
            cell_output = data['cells'][i]['outputs']
            cell_output = cell_output[0] if len(cell_output) > 0 else ''

            if 'evalue' in cell_output:
                output_dict[ct] = add_triple_quotes(join_list(cell_output['evalue']))
            elif 'data' in cell_output:
                if 'text/plain' in cell_output['data']:
                    output_dict[ct] = add_triple_quotes(join_list(cell_output['data']['text/plain']))
            elif 'text' in cell_output:
                output_dict[ct] = add_triple_quotes(join_list(cell_output['text']))
            else:
                output_dict[ct] = cell_output
        else:
            output_dict[ct] = ''

        if data['cells'][i]['cell_type'] == 'code':
            syntax_dict[ct] = join_list(data['cells'][i]['source'])
            markdown_dict[ct] = ""
        elif data['cells'][i]['cell_type'] == 'markdown':
            markdown_dict[ct] = join_list(data['cells'][i]['source'])
            syntax_dict[ct] = ""

        count += 1

    with open(output_file_path, 'w') as f:
        for i in range(1, count):
            num = str(i)
            if markdown_dict[num] != '':
                f.write(add_triple_quotes(markdown_dict[num]))
            f.write(syntax_dict[num])
            if output_dict[num] != '':
                f.write(output_dict[num])
            f.write('\n\n')
