#!/usr/bin/env python3

"""Reads an iXBRL file on input, and outputs a key-value representation,
keys and values are separated by pipe character.
"""

import datetime
from lxml import etree as ET
import sys
import argparse
import json

from ixbrl_parse.ixbrl import parse

maxwidth=40

parser = argparse.ArgumentParser(
    description=__doc__
)
parser.add_argument('input', metavar='input', nargs=1,
                    help='Input iXBRL file')
parser.add_argument('--separator', '-s',
                    default="|",
                    help="Output field separator, (default: |)")

# Parse arguments
args = parser.parse_args(sys.argv[1:])

tree = ET.parse(args.input[0])

i = parse(tree)

def dump(d, prefix=[]):
    for k, v in d.items():
        key = prefix + [k]
        if isinstance(v, dict):
            dump(v, key)
        else:
            print("%s%s%s" % (".".join(key), args.separator, str(v)[:40]))

rels = i.to_dict()

dump(rels)

