Merge pull request #281 from sebras/master
[jackhill/mal.git] / skew / util.sk
CommitLineData
034e82ad
DM
1def argv List<string> {
2 return process.argv.slice(2)
3}
4
5def timeMs int {
6 return Date.new.getTime()
7}
8
9var fs = require("fs")
10
11def readFile(filename string) string {
12 return fs.readFileSync(filename, "utf-8")
13}
14
15def writeString(s string) {
16 fs.writeSync(1, s)
17}
18
19def printLn(s string) {
20 writeString(s)
21 writeString("\n")
22}
23
24def readLine(prompt string) string {
25 writeString(prompt)
26 var buffer = Buffer.new(1024) # in newer Node this should be Buffer.alloc
27 var stdin = fs.openSync("/dev/stdin", "rs")
28 var bytesread int
29 var anycharseen = false
30 var total = 0
31 while (bytesread = fs.readSync(stdin, buffer, total, 1)) > 0 {
32 anycharseen = true
33 var lastchar = buffer.slice(total, total + bytesread).toString()
34 if lastchar == "\n" {
35 break
36 }
37 total += bytesread
38 }
39 fs.closeSync(stdin)
40 return anycharseen ? buffer.slice(0, total).toString() : null
41}
42
43def stringToInt(str string) int {
44 return parseInt(str)
45}
46
47@import {
48 const process dynamic
49 const Buffer dynamic
50 const Date dynamic
51 const Error dynamic
52
53 def parseInt(str string) int
54 def require(name string) dynamic
55}