"""General load/parse wrapper

In process of being factored out of "trans", as I wanted to reuse this
code for python.py 

Should be configured by __init__.py, I think.

"""

__version__ = "$Revision: 1.1 $"
# $Source: /sources/public/2007/asn/loader.py,v $

import sys


class FooError(Exception):
    """Base class for errors in the email package."""

    # use raise FooError('Message')

def guess_language(filename):
    if filename.endswith(".asn"):
        return "asn0701"
    if filename.endswith(".asn0701"):
        return "asn0701"
    if filename.endswith(".rnc"):
        return "rnc"
    if filename.endswith(".owl"):
        return "owl"
    if filename.endswith(".rdf"):
        return "rdf"
    if filename.endswith(".py"):
        return "python"

def load(filename, parser=None):
    if filename == "-":
        inp = sys.stdin
    else:
        inp = open(filename, "r")

    if not parser:
        parser = guess_language(filename)
        if not parser:
            print >>sys.stderr, "can't guess a parser; please specify one"
            sys.exit(1)

    pmod=__import__(parser, globals(), locals(), [])    
    p = pmod.Parser()
    model = p.readModel(inp)
    return model


if __name__ == "__main__":
    import doctest, sys
    doctest.testmod(sys.modules[__name__])
