[Zope-Checkins] CVS: Zope2 - __init__.py:1.1.2.8
Andreas Jung
andreas@digicool.com
Tue, 29 May 2001 10:25:41 -0400
Update of /cvs-repository/Zope2/lib/python/Products/PluginIndexes/TextIndex/Splitter
In directory yetix:/work/sandboxes/ajung-dropin-registry/lib/python/Products/PluginIndexes/TextIndex/Splitter
Modified Files:
Tag: ajung-dropin-registry
__init__.py
Log Message:
extended support for multiple Splitter.
Not perfect, but it works.
Needs to get some cleanup for 2.4 final.
--- Updated File __init__.py in package Zope2 --
--- __init__.py 2001/05/17 18:27:57 1.1.2.7
+++ __init__.py 2001/05/29 14:25:40 1.1.2.8
@@ -1,22 +1,48 @@
-import os,sys,exceptions
+import os,sys,exceptions,imp,string
+
availableSplitters = (
- ("Splitter" , "Zope Default Splitter"),
+ ("ZopeSplitter" , "Zope Default Splitter"),
("ISO_8859_1_Splitter" , "Werner Strobles ISO Splitter")
)
+
+splitterNames = [ x[0] for x in availableSplitters]
+
+
+def loadModule(name):
+
+ path,filename = os.path.split(name)
+
+ name,ext = os.path.splitext(filename)
+ # HACK !!!!
+ path = [ os.path.join(os.getcwd(),"lib","python",path)]
-splitterNames = map(lambda x: x[0],availableSplitters)
+ fp,pathname,desc = imp.find_module(name,path)
+ try:
+ module = imp.load_module(filename,fp,pathname,desc)
+ finally:
+ if fp: fp.close()
+
+ return module
+
+
def getSplitter(name=None):
if not name in splitterNames and name:
raise exceptions.RuntimeError, "No such splitter '%s'" % name
if not name: name = splitterNames[0]
- if not vars().has_key(name):
- exec( "from %s import Splitter as %s" % (name,name))
+
+ module = None
+ name = "Products/PluginIndexes/TextIndex/Splitter/" + name
+ module = loadModule(name)
+
+ if module: return module.Splitter
+ else: return None
- return vars()[name]
-
+# HACK !!!
+Splitter=getSplitter("ZopeSplitter")
+