Author: Lars Wassermann <[email protected]>
Branch: 
Changeset: r407:82471b6e5fad
Date: 2013-05-22 15:59 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/82471b6e5fad/

Log:    added named primitive FilePlugin>>primitiveDirectoryLookup

diff --git a/spyvm/plugins/fileplugin.py b/spyvm/plugins/fileplugin.py
--- a/spyvm/plugins/fileplugin.py
+++ b/spyvm/plugins/fileplugin.py
@@ -1,12 +1,34 @@
 from spyvm import model, error
 from spyvm.plugins.plugin import Plugin
-from spyvm.primitives import PrimitiveFailedError
+from spyvm.primitives import PrimitiveFailedError, index1_0
 
 
 FilePlugin = Plugin()
 
-
 @FilePlugin.expose_primitive(unwrap_spec=[object])
 def primitiveDirectoryDelimitor(interp, s_frame, w_rcvr):
     import os
     return interp.space.wrap_char(os.path.sep)
+
[email protected]_primitive(unwrap_spec=[object, str, index1_0])
+def primitiveDirectoryLookup(interp, s_frame, w_file_directory, full_path, 
index):
+       import os
+       print full_path
+       if full_path == '':
+               contents = os.listdir(os.path.sep)
+       else:
+               if not os.path.isdir(full_path):
+                       raise PrimitiveFailedError
+               contents = os.listdir(full_path)
+       space = interp.space
+       if index >= len(contents):
+               return space.w_nil
+       name = sorted(contents)[index]
+       file_path = os.path.join(full_path, name)
+       assert os.path.exists(file_path)
+       creationTime = space.wrap_int(0)
+       modificationTime = space.wrap_int(0)
+       dirFlag = space.w_true if os.path.isdir(file_path) else space.w_false
+       fileSize = space.wrap_int(os.path.getsize(file_path))
+       return space.wrap_list([space.wrap_string(name), creationTime, 
modificationTime, dirFlag, fileSize])
+
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to