annotate src/luan/modules/Utils.java @ 1420:225808b90cee

options handling
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 26 Oct 2019 22:21:09 -0600
parents 002152af497a
children 471ef3e6a84e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
4c0131c2b650 merge luan/lib into modules
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 161
diff changeset
1 package luan.modules;
75
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
2
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
3 import java.io.Reader;
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
4 import java.io.IOException;
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
5 import java.io.ByteArrayOutputStream;
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
6 import java.io.InputStream;
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
7 import java.io.OutputStream;
143
fcb81fa2df0d handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 130
diff changeset
8 import java.io.File;
713
a21e9594307d add Process handling to Utils.java
Franklin Schmidt <fschmidt@gmail.com>
parents: 646
diff changeset
9 import java.io.InputStreamReader;
143
fcb81fa2df0d handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 130
diff changeset
10 import java.net.URL;
fcb81fa2df0d handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 130
diff changeset
11 import java.net.MalformedURLException;
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
12 import java.util.Map;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
13 import luan.Luan;
86
6db8f286fa6c _ENV is per module, not global
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 75
diff changeset
14 import luan.LuanException;
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
15 import luan.LuanTable;
582
31926755689e add Thread.synchronized
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
16 import luan.LuanFunction;
75
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
17
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
18
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
19 public final class Utils {
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
20 private Utils() {} // never
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
21
116
1ff1c32417eb more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 115
diff changeset
22 static final int bufSize = 8192;
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
23
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
24 private static void checkNotNull(Object v,String expected,int pos) throws LuanException {
86
6db8f286fa6c _ENV is per module, not global
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 75
diff changeset
25 if( v == null )
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
26 throw new LuanException("bad argument #"+pos+" ("+expected+" expected, got nil)");
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
27 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
28
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
29 public static void checkNotNull(String s,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
30 checkNotNull(s,"string",pos);
86
6db8f286fa6c _ENV is per module, not global
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 75
diff changeset
31 }
6db8f286fa6c _ENV is per module, not global
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 75
diff changeset
32
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
33 public static void checkNotNull(String s) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
34 checkNotNull(s,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
35 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
36
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
37 public static void checkNotNull(byte[] b,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
38 checkNotNull(b,"binary",pos);
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
39 }
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
40
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
41 public static void checkNotNull(byte[] b) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
42 checkNotNull(b,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
43 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
44
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
45 public static void checkNotNull(LuanTable t,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
46 checkNotNull(t,"table",pos);
305
5e7450ac27f2 rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 260
diff changeset
47 }
5e7450ac27f2 rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 260
diff changeset
48
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
49 public static void checkNotNull(LuanTable t) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
50 checkNotNull(t,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
51 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
52
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
53 public static void checkNotNull(Number n,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
54 checkNotNull(n,"number",pos);
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
55 }
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
56
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
57 public static void checkNotNull(Number n) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
58 checkNotNull(n,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
59 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
60
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
61 public static void checkNotNull(LuanFunction fn,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
62 checkNotNull(fn,"function",pos);
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
63 }
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
64
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
65 public static void checkNotNull(LuanFunction fn) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
66 checkNotNull(fn,1);
582
31926755689e add Thread.synchronized
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
67 }
31926755689e add Thread.synchronized
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
68
75
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
69 public static String readAll(Reader in)
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
70 throws IOException
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
71 {
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
72 char[] a = new char[bufSize];
75
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
73 StringBuilder buf = new StringBuilder();
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
74 int n;
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
75 while( (n=in.read(a)) != -1 ) {
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
76 buf.append(a,0,n);
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
77 }
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
78 return buf.toString();
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
79 }
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
80
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
81 public static void copyAll(InputStream in,OutputStream out)
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
82 throws IOException
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
83 {
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
84 byte[] a = new byte[bufSize];
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
85 int n;
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
86 while( (n=in.read(a)) != -1 ) {
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
87 out.write(a,0,n);
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
88 }
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
89 }
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
90
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
91 public static byte[] readAll(InputStream in)
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
92 throws IOException
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
93 {
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
94 ByteArrayOutputStream out = new ByteArrayOutputStream();
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
95 copyAll(in,out);
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
96 return out.toByteArray();
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
97 }
143
fcb81fa2df0d handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 130
diff changeset
98
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
99
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
100 public static String removeString(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
101 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
102 if( val!=null && !(val instanceof String) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
103 throw new LuanException( "parameter '"+key+"' must be a string but is a "+Luan.type(val) );
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
104 return (String)val;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
105 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
106
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
107 public static String removeRequiredString(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
108 String s = removeString(options,key);
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
109 if( s==null )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
110 throw new LuanException( "parameter '"+key+"' is required" );
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
111 return s;
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
112 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
113
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
114 public static Number removeNumber(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
115 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
116 if( val!=null && !(val instanceof Number) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
117 throw new LuanException( "parameter '"+key+"' must be a string but is a "+Luan.type(val) );
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
118 return (Number)val;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
119 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
120
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
121 public static Integer removeInteger(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
122 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
123 if( val==null )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
124 return null;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
125 Integer i = Luan.asInteger(val);
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
126 if( i==null ) {
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
127 String type = val instanceof Number ? val.getClass().getSimpleName().toLowerCase() : Luan.type(val);
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
128 throw new LuanException( "parameter '"+key+"' must be an integer but is a "+type );
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
129 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
130 return i;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
131 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
132
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
133 public static LuanTable removeTable(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
134 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
135 if( val!=null && !(val instanceof LuanTable) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
136 throw new LuanException( "parameter '"+key+"' must be a table but is a "+Luan.type(val) );
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
137 return (LuanTable)val;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
138 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
139
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
140 public static Boolean removeBoolean(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
141 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
142 if( val!=null && !(val instanceof Boolean) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
143 throw new LuanException( "parameter '"+key+"' must be a string but is a "+Luan.type(val) );
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
144 return (Boolean)val;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
145 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
146
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
147 public static LuanFunction removeFunction(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
148 Object val = options.remove(key);
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
149 if( val!=null && !(val instanceof LuanFunction) )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
150 throw new LuanException( "parameter '"+key+"' must be a function but is a "+Luan.type(val) );
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
151 return (LuanFunction)val;
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
152 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
153
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
154 public static LuanFunction removeRequiredFunction(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
155 LuanFunction fn = removeFunction(options,key);
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
156 if( fn==null )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
157 throw new LuanException( "parameter '"+key+"' is required" );
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
158 return fn;
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
159 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
160
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
161 public static void checkEmpty(LuanTable options) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
162 if( !options.isEmpty() )
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
163 throw new LuanException( "unrecognized options: "+options.asMap() );
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
164 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
165
75
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
166 }