Mercurial Hosting > luan
diff src/luan/Lua.java @ 46:a443637829c1
remove LuaNumber
git-svn-id: https://luan-java.googlecode.com/svn/trunk@47 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 27 Dec 2012 01:48:36 +0000 |
parents | 57054fa43189 |
children |
line wrap: on
line diff
--- a/src/luan/Lua.java Thu Dec 27 00:44:58 2012 +0000 +++ b/src/luan/Lua.java Thu Dec 27 01:48:36 2012 +0000 @@ -11,7 +11,7 @@ return "string"; if( obj instanceof Boolean ) return "boolean"; - if( obj instanceof LuaNumber ) + if( obj instanceof Number ) return "number"; return "userdata"; } @@ -21,25 +21,27 @@ } public static String asString(Object obj) { - if( obj instanceof String || obj instanceof LuaNumber ) - return obj.toString(); + if( obj instanceof String ) + return (String)obj; + if( obj instanceof Number ) + return toString((Number)obj); return null; } - public static LuaNumber toNumber(Object obj) { + public static Number toNumber(Object obj) { return toNumber(obj,null); } - public static LuaNumber toNumber(Object obj,Integer base) { - if( obj instanceof LuaNumber ) - return (LuaNumber)obj; + public static Number toNumber(Object obj,Integer base) { + if( obj instanceof Number ) + return (Number)obj; if( obj instanceof String ) { String s = (String)obj; try { if( base==null ) - return LuaNumber.of( Double.parseDouble(s) ); + return Double.valueOf(s); else - return LuaNumber.of( Long.parseLong(s,base) ); + return Long.valueOf(s,base); } catch(NumberFormatException e) {} } return null; @@ -49,4 +51,30 @@ return a.length==0 ? null : a[0]; } + public static String toString(Number n) { + if( n instanceof Integer ) + return n.toString(); + String s = n.toString(); + int iE = s.indexOf('E'); + String ending = null; + if( iE != -1 ) { + ending = s.substring(iE); + s = s.substring(0,iE); + } + if( s.endsWith(".0") ) + s = s.substring(0,s.length()-2); + if( ending != null ) + s += ending; + return s; + } + + public static Integer asInteger(Object obj) { + if( obj instanceof Integer ) + return (Integer)obj; + if( !(obj instanceof Number) ) + return null; + Number n = (Number)obj; + int i = n.intValue(); + return i==n.doubleValue() ? Integer.valueOf(i) : null; + } }