diff src/luan/modules/parsers/LuanToString.java @ 1388:2024d23ddd64

add restore_from_postgres
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 03 Sep 2019 22:12:53 -0600
parents db7d31f4089a
children 9103a61e64bc
line wrap: on
line diff
--- a/src/luan/modules/parsers/LuanToString.java	Mon Sep 02 22:23:12 2019 -0600
+++ b/src/luan/modules/parsers/LuanToString.java	Tue Sep 03 22:12:53 2019 -0600
@@ -5,22 +5,19 @@
 import luan.Luan;
 import luan.LuanTable;
 import luan.LuanException;
+import luan.LuanRuntimeException;
 
 
 public final class LuanToString {
+	public boolean strict = false;
+	public boolean numberTypes = false;
 
-	public static String toString(Object obj,boolean strict) throws LuanException {
+	public String toString(Object obj) throws LuanException {
 		StringBuilder sb = new StringBuilder();
-		new LuanToString(strict).toString(obj,sb,0);
+		toString(obj,sb,0);
 		return sb.toString();
 	}
 
-	private final boolean strict;
-
-	private LuanToString(boolean strict) {
-		this.strict = strict;
-	}
-
 	private void toString(Object obj,StringBuilder sb,int indented) throws LuanException {
 		if( obj == null ) {
 			sb.append( "nil" );
@@ -31,7 +28,7 @@
 			return;
 		}
 		if( obj instanceof Number ) {
-			sb.append( Luan.toString((Number)obj) );
+			toString((Number)obj,sb);
 			return;
 		}
 		if( obj instanceof String ) {
@@ -93,4 +90,25 @@
 		}
 	}
 
+	private void toString(Number n,StringBuilder sb) throws LuanException {
+		if( numberTypes ) {
+			sb.append( n.getClass().getSimpleName().toLowerCase() );
+			sb.append( '(' );
+		}
+		sb.append( Luan.toString(n) );
+		if( numberTypes )
+			sb.append( ')' );
+	}
+
+	public static void addNumberTypes(LuanTable env) {
+		try {
+			LuanTable module = (LuanTable)env.luan().require("luan:Number.luan");
+			env.put( "double", module.fn("double") );
+			env.put( "float", module.fn("float") );
+			env.put( "integer", module.fn("integer") );
+			env.put( "long", module.fn("long") );
+		} catch(LuanException e) {
+			throw new LuanRuntimeException(e);
+		}
+	}
 }