mirror of https://github.com/tLDP/python-tldp
inspect for classes and modules
This commit is contained in:
parent
03881d20de
commit
eb4e3d8c38
|
@ -6,22 +6,36 @@ from __future__ import absolute_import, division, print_function
|
||||||
import os
|
import os
|
||||||
import inspect
|
import inspect
|
||||||
|
|
||||||
from .utils import logger, makefh
|
from tldp.utils import logger, makefh
|
||||||
from . import doctypes
|
|
||||||
|
import tldp.doctypes
|
||||||
|
|
||||||
|
|
||||||
def listDoctypes():
|
def getDoctypeMembers(membertype):
|
||||||
'''returns a list of tldp.doctypes Python classes
|
'''returns a list of tldp.doctypes; convenience function'''
|
||||||
|
found = list()
|
||||||
|
for name, member in inspect.getmembers(tldp.doctypes, membertype):
|
||||||
|
logger.debug("Located %s %s (%r).", membertype.__name__, name, member)
|
||||||
|
found.append(member)
|
||||||
|
return found
|
||||||
|
|
||||||
|
|
||||||
|
def getDoctypeModules():
|
||||||
|
'''returns a list of the modules known in tldp.doctypes
|
||||||
|
|
||||||
This is the canonical list of doctypes which are recognized and capable of
|
This is the canonical list of doctypes which are recognized and capable of
|
||||||
being processed into outputs. See tldp.doctypes for more information.
|
being processed into outputs. See tldp.doctypes for more information.
|
||||||
'''
|
'''
|
||||||
kdt = list()
|
return getDoctypeMembers(inspect.ismodule)
|
||||||
for name, member in inspect.getmembers(doctypes, inspect.isclass):
|
|
||||||
logger.debug("Located class %s (%r).", name, member)
|
|
||||||
kdt.append(member)
|
def getDoctypeClasses():
|
||||||
logger.debug("Capable of handling %s document classes.", len(kdt))
|
'''returns a list of the classes known in tldp.doctypes
|
||||||
return kdt
|
|
||||||
|
This is the canonical list of doctypes which are recognized and capable of
|
||||||
|
being processed into outputs. See tldp.doctypes for more information.
|
||||||
|
'''
|
||||||
|
return getDoctypeMembers(inspect.isclass)
|
||||||
|
|
||||||
|
|
||||||
def guess(thing):
|
def guess(thing):
|
||||||
|
@ -56,7 +70,7 @@ def guess(thing):
|
||||||
logger.debug("%s no file extension, skipping %s.", stem, ext)
|
logger.debug("%s no file extension, skipping %s.", stem, ext)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
possible = [t for t in knowndoctypes if ext in t.extensions]
|
possible = [t for t in knowndoctypeclasses if ext in t.extensions]
|
||||||
logger.debug("Possible: %r", possible)
|
logger.debug("Possible: %r", possible)
|
||||||
if not possible:
|
if not possible:
|
||||||
logger.debug("%s unknown extension %s.", stem, ext)
|
logger.debug("%s unknown extension %s.", stem, ext)
|
||||||
|
@ -100,9 +114,10 @@ def guess(thing):
|
||||||
return doctype
|
return doctype
|
||||||
|
|
||||||
|
|
||||||
knowndoctypes = listDoctypes()
|
knowndoctypemodules = getDoctypeModules()
|
||||||
|
knowndoctypeclasses = getDoctypeClasses()
|
||||||
knownextensions = set()
|
knownextensions = set()
|
||||||
for x in knowndoctypes:
|
for x in knowndoctypeclasses:
|
||||||
knownextensions.update(x.extensions)
|
knownextensions.update(x.extensions)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue