annotate src/luan/modules/Utils.java @ 1493:471ef3e6a84e

more io
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 03 May 2020 00:12:15 -0600
parents 225808b90cee
children 0ba144491a42
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;
1493
471ef3e6a84e more io
Franklin Schmidt <fschmidt@gmail.com>
parents: 1420
diff changeset
13 import goodjava.io.IoUtils;
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
14 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
15 import luan.LuanException;
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
16 import luan.LuanTable;
582
31926755689e add Thread.synchronized
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
17 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
18
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
19
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
20 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
21 private Utils() {} // never
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
22
116
1ff1c32417eb more IoLib work and added init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 115
diff changeset
23 static final int bufSize = 8192;
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
24
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
25 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
26 if( v == null )
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
27 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
28 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
29
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
30 public static void checkNotNull(String s,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
31 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
32 }
6db8f286fa6c _ENV is per module, not global
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 75
diff changeset
33
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
34 public static void checkNotNull(String s) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
35 checkNotNull(s,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
36 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
37
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
38 public static void checkNotNull(byte[] b,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
39 checkNotNull(b,"binary",pos);
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
40 }
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
41
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
42 public static void checkNotNull(byte[] b) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
43 checkNotNull(b,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
44 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
45
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
46 public static void checkNotNull(LuanTable t,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
47 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
48 }
5e7450ac27f2 rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 260
diff changeset
49
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
50 public static void checkNotNull(LuanTable t) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
51 checkNotNull(t,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
52 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
53
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
54 public static void checkNotNull(Number n,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
55 checkNotNull(n,"number",pos);
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
56 }
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
57
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
58 public static void checkNotNull(Number n) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
59 checkNotNull(n,1);
637
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
60 }
6ea90dc10375 bbcode parser now takes a quoter function
Franklin Schmidt <fschmidt@gmail.com>
parents: 582
diff changeset
61
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
62 public static void checkNotNull(LuanFunction fn,int pos) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
63 checkNotNull(fn,"function",pos);
251
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
64 }
705d14f4d8ee start web testing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 237
diff changeset
65
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
66 public static void checkNotNull(LuanFunction fn) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 637
diff changeset
67 checkNotNull(fn,1);
582
31926755689e add Thread.synchronized
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
68 }
31926755689e add Thread.synchronized
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
69
75
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
70 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
71 throws IOException
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
72 {
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
73 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
74 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
75 int n;
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
76 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
77 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
78 }
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
79 return buf.toString();
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
80 }
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
81
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
82 public static byte[] readAll(InputStream in)
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
83 throws IOException
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
84 {
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
85 ByteArrayOutputStream out = new ByteArrayOutputStream();
1493
471ef3e6a84e more io
Franklin Schmidt <fschmidt@gmail.com>
parents: 1420
diff changeset
86 IoUtils.copyAll(in,out);
115
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
87 return out.toByteArray();
eacf6ce1b47d add IoLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 88
diff changeset
88 }
143
fcb81fa2df0d handle urls and java resources as files
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 130
diff changeset
89
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
90
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
91 public static String removeString(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
92 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
93 if( val!=null && !(val instanceof String) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
94 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
95 return (String)val;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
96 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
97
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
98 public static String removeRequiredString(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
99 String s = removeString(options,key);
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
100 if( s==null )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
101 throw new LuanException( "parameter '"+key+"' is required" );
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
102 return s;
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
103 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
104
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
105 public static Number removeNumber(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
106 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
107 if( val!=null && !(val instanceof Number) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
108 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
109 return (Number)val;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
110 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
111
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
112 public static Integer removeInteger(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
113 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
114 if( val==null )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
115 return null;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
116 Integer i = Luan.asInteger(val);
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
117 if( i==null ) {
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
118 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
119 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
120 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
121 return i;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
122 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
123
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
124 public static LuanTable removeTable(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
125 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
126 if( val!=null && !(val instanceof LuanTable) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
127 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
128 return (LuanTable)val;
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
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
131 public static Boolean removeBoolean(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
132 Object val = options.remove(key);
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
133 if( val!=null && !(val instanceof Boolean) )
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
134 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
135 return (Boolean)val;
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
136 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
137
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
138 public static LuanFunction removeFunction(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
139 Object val = options.remove(key);
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
140 if( val!=null && !(val instanceof LuanFunction) )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
141 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
142 return (LuanFunction)val;
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
143 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
144
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
145 public static LuanFunction removeRequiredFunction(LuanTable options,String key) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
146 LuanFunction fn = removeFunction(options,key);
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
147 if( fn==null )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
148 throw new LuanException( "parameter '"+key+"' is required" );
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
149 return fn;
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
150 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1389
diff changeset
151
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
152 public static void checkEmpty(LuanTable options) throws LuanException {
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
153 if( !options.isEmpty() )
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
154 throw new LuanException( "unrecognized options: "+options.asMap() );
1389
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
155 }
eb8b35dccd99 cleanup and stringify change
Franklin Schmidt <fschmidt@gmail.com>
parents: 1367
diff changeset
156
75
aa7538ae5fb6 can now load modules from classpath
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
157 }