Parcourir la source

Lua : File related fixes and updates

Justin Donaldson il y a 9 ans
Parent
commit
391005bcd3

+ 23 - 9
std/lua/_std/sys/io/File.hx

@@ -22,37 +22,51 @@
 package sys.io;
 import lua.Lua;
 import lua.Io;
+import lua.Os;
+import lua.FileHandle;
 
 @:coreApi
 class File {
-	public static function getContent( path : String ) : String { 
+	public static function getContent( path : String ) : String {
 		var f = Io.open(path, "r");
-		var s = f.read("*all");
+		var s = f.read(All);
 		f.close();
 		return s;
 	}
+
 	public static function append( path : String, binary : Bool = true ) : FileOutput {
-		// var s = getContent(path);
+		return new FileOutput(Io.open(path, "a"));
 
-		return null;
 	}
+
 	public static function copy( srcPath : String, dstPath : String ) : Void {
-		
+		Os.execute('copy $srcPath $dstPath');
 	}
 
 	public static function getBytes( path : String ) : haxe.io.Bytes {
-		return null;
+		var f = read(path, true);
+		var ret = f.readAll();
+		f.close();
+		return ret;
 	}
+
 	public static function read( path : String, binary : Bool = true ) : FileInput {
-		return null;
+		return new FileInput(Io.open(path,'r'));
 	}
+
 	public static function write( path : String, binary : Bool = true ) : FileOutput {
-		return null;
+		return new FileOutput(Io.open(path,'w'));
 	}
+
 	public static function saveBytes( path : String, bytes : haxe.io.Bytes ) : Void {
-		
+		var f = write(path, true);
+		f.writeBytes(bytes, 0, bytes.length);
+		f.close();
 	}
 
 	public static function saveContent( path : String, content : String ) : Void {
+		var f = write(path, false);
+		f.writeString(content);
+		f.close();
 	}
 }

+ 20 - 2
std/lua/_std/sys/io/FileInput.hx

@@ -22,16 +22,26 @@
 package sys.io;
 
 import lua.FileHandle;
+import lua.Io;
+import lua.NativeStringTools;
+import lua.Boot;
+import lua.Os;
 
 class FileInput extends haxe.io.Input {
 	var f:FileHandle;
 
-	function new(f:FileHandle){
+	public function new(f:FileHandle){
+		this.bigEndian = Boot.platformBigEndian;
 		this.f = f;
 	}
 
 	inline public function seek( p : Int, pos : FileSeek ) : Void {
-		return f.seek(pos, p);
+		var arg = switch(pos){
+			case SeekBegin : "set";
+			case SeekCur   : "cur";
+			case SeekEnd   : "end";
+		}
+		return f.seek(arg, p);
 	}
 
 	inline public function tell() : Int {
@@ -42,4 +52,12 @@ class FileInput extends haxe.io.Input {
 		return f.read(0) == null;
 	}
 
+	override inline public function readByte() : Int {
+		return NativeStringTools.byte(f.read(1));
+	}
+
+	override inline public function close() : Void {
+		f.close();
+	}
+
 }

+ 7 - 2
std/lua/_std/sys/io/FileOutput.hx

@@ -26,12 +26,17 @@ import lua.FileHandle;
 class FileOutput extends haxe.io.Output {
 	var f:FileHandle;
 
-	function new(f:FileHandle){
+	public function new(f:FileHandle){
 		this.f = f;
 	}
 
 	public function seek( p : Int, pos : FileSeek ) : Void {
-		return f.seek(pos, p);
+		var arg = switch(pos){
+			case SeekBegin : "set";
+			case SeekCur : "cur";
+			case SeekEnd : "end";
+		}
+		return f.seek(arg, p);
 	}
 
 	public function tell() : Int {

+ 0 - 33
std/lua/_std/sys/io/FileSeek.hx

@@ -1,33 +0,0 @@
-/*
- * Copyright (C)2005-2016 Haxe Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-package sys.io;
-
-@:enum
-abstract FileSeek(String) {
-	var SeekBegin = "set";
-	var SeekCur = "cur";
-	var SeekEnd = "end";
-	@:to
-	public function toString() : String {
-		return this;
-	}
-}