[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")
+