#!/usr/bin/env python3

"""Reads an iXBRL file on input, and outputs an RDF representation.

The -f option selects RDF output format.  Supported formats are:
n3 (N3 format, the default), xml (RDF/XML) and ntriples (N-triples).
"""

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

from rdflib import Graph, Literal, RDF, URIRef
from rdflib.namespace import XSD

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('--format', '-f',
                    default="n3",
                    help='Output format (default: n3)')

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

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

i = parse(tree)

rels = i.get_triples()

g = Graph()

for rel in rels:
    g.add((
        rel[0], rel[1], rel[2]
    ))

print(g.serialize(format=args.format).decode("utf-8"))

