new built-in getCurrentScriptDirectory; new cli option syntax; added -p option to profile programs and -H to set heap size; fixed a bug in string.cat
This commit is contained in:
@@ -5,6 +5,8 @@ Router = {table: Map, plug: Callable, solve: Callable};
|
||||
|
||||
fun loadFile(path: String) {
|
||||
|
||||
print("path=", path, "\n");
|
||||
|
||||
stream, error = files.openFile(path, files.READ);
|
||||
if error != none:
|
||||
return none, error;
|
||||
@@ -83,8 +85,8 @@ fun new() {
|
||||
if isCallable(method_item):
|
||||
res = method_item(req);
|
||||
else {
|
||||
cwd = getCurrentWorkingDirectory();
|
||||
file = path.join(cwd, method_item);
|
||||
csd = getCurrentScriptDirectory();
|
||||
file = path.join(csd, method_item);
|
||||
data, error = loadFile(file);
|
||||
if error == none:
|
||||
res = respond(200, data);
|
||||
|
||||
+38
-1
@@ -251,6 +251,43 @@ fun parse(src: String) {
|
||||
return val, err;
|
||||
}
|
||||
|
||||
fun readFile(name: String) {
|
||||
stream, error = files.openFile(name, files.READ);
|
||||
if error != none:
|
||||
return error;
|
||||
|
||||
text = "";
|
||||
size = 256;
|
||||
do {
|
||||
|
||||
size = size * 2;
|
||||
buff = buffer.new(size);
|
||||
|
||||
read_bytes, error = files.read(stream, buff);
|
||||
if error != none:
|
||||
return error;
|
||||
|
||||
text2, error = buffer.toString(buff);
|
||||
if error != none:
|
||||
return none, error;
|
||||
assert(text2 != none);
|
||||
|
||||
text = string.cat(text, text2);
|
||||
|
||||
} while count(buff) == read_bytes;
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
fun parseFile(name: String) {
|
||||
text, error = readFile(name);
|
||||
if error != none:
|
||||
return none, error;
|
||||
assert(text != none);
|
||||
result, error = parse(text);
|
||||
return result, error;
|
||||
}
|
||||
|
||||
fun test() {
|
||||
|
||||
compareAny = import("compare.noja").compareAny;
|
||||
@@ -330,4 +367,4 @@ fun test() {
|
||||
print(" total: ", total, "\n");
|
||||
}
|
||||
|
||||
return {parse: parse, test: test};
|
||||
return {parse: parse, parseFile: parseFile, test: test};
|
||||
+5
-5
@@ -8,13 +8,13 @@ Scanner = {
|
||||
consumeSpaces: Callable
|
||||
};
|
||||
|
||||
fun isSpace(c: String)
|
||||
return c == ' '
|
||||
or c == '\t'
|
||||
or c == '\n';
|
||||
|
||||
fun newScanner(src: String) {
|
||||
|
||||
fun isSpace(c: String)
|
||||
return c == ' '
|
||||
or c == '\t'
|
||||
or c == '\n';
|
||||
|
||||
scan = {
|
||||
src: src,
|
||||
i: 0,
|
||||
|
||||
Reference in New Issue
Block a user