From: Finn B. <bc...@us...> - 2000-12-04 21:43:22
|
Update of /cvsroot/jython/jython/Tools/jythonc In directory slayer.i.sourceforge.net:/tmp/cvs-serv23829 Modified Files: ImportName.py compile.py depend.py jar.py Log Message: Added very simplistic support for resourcefiles. The resource must be specified with an absolute path to be recognized. I.e. public static String[] __depends__ = new String[] { "/org/python/modules/ucnhash.dat", } in a java module will cause the named resource to be included in the resulting jar. Index: ImportName.py =================================================================== RCS file: /cvsroot/jython/jython/Tools/jythonc/ImportName.py,v retrieving revision 2.4 retrieving revision 2.5 diff -C2 -r2.4 -r2.5 *** ImportName.py 2000/11/17 12:44:21 2.4 --- ImportName.py 2000/12/04 21:43:18 2.5 *************** *** 34,37 **** --- 34,39 ---- def importName(name): + if name[0] == "/": + return Resource(name) try: names = name.split('.') *************** *** 61,64 **** --- 63,72 ---- return importName(name) + class Resource: + def __init__(self, name): + self.name = name + def getDepends(self): + return [] + class Namespace: Index: compile.py =================================================================== RCS file: /cvsroot/jython/jython/Tools/jythonc/compile.py,v retrieving revision 2.15 retrieving revision 2.16 diff -C2 -r2.15 -r2.16 *** compile.py 2000/11/30 08:54:55 2.15 --- compile.py 2000/12/04 21:43:18 2.16 *************** *** 264,267 **** --- 264,269 ---- m.addEvents(attrs, self.events, mod.name) self.addJavaClass(m.name, mod.name) + elif isinstance(m, ImportName.Resource): + self.javadepends[m.name] = mod.name if self.dependencies.has_key(m): Index: depend.py =================================================================== RCS file: /cvsroot/jython/jython/Tools/jythonc/depend.py,v retrieving revision 2.4 retrieving revision 2.5 diff -C2 -r2.4 -r2.5 *** depend.py 2000/11/17 12:44:21 2.4 --- depend.py 2000/12/04 21:43:18 2.5 *************** *** 134,137 **** --- 134,154 ---- return openResource(res) + def getZipName(self): + return '/'.join(self.classname.split('.')) + '.class' + + class ResourceEntry: + def __init__(self, name): + self.name = name + + def __repr__(self): + return "ResourceEntry(%s)" % (self.name) + + def getInputStream(self): + import java + return java.lang.Class.getResourceAsStream("".__class__, self.name) + + def getZipName(self): + return self.name + ##class ZipEntry: *************** *** 165,168 **** --- 182,187 ---- def depends(name): + if name[0] == '/': + return ResourceEntry(name), [] ze = getFile(name) ip = ze.getInputStream() Index: jar.py =================================================================== RCS file: /cvsroot/jython/jython/Tools/jythonc/jar.py,v retrieving revision 2.5 retrieving revision 2.6 diff -C2 -r2.5 -r2.6 *** jar.py 2000/11/17 12:44:21 2.5 --- jar.py 2000/12/04 21:43:18 2.6 *************** *** 50,54 **** def addEntry(self, entry): ! outfile = SLASH.join(entry.classname.split('.')) + '.class' if self.jar_entries.has_key(outfile): return --- 50,54 ---- def addEntry(self, entry): ! outfile = entry.getZipName() if self.jar_entries.has_key(outfile): return *************** *** 83,87 **** for entry in self.entries: ! outfile = SLASH.join(entry.classname.split('.')) + '.class' instream = entry.getInputStream() self.zipfile.putNextEntry(ZipEntry(outfile)) --- 83,87 ---- for entry in self.entries: ! outfile = entry.getZipName() instream = entry.getInputStream() self.zipfile.putNextEntry(ZipEntry(outfile)) |