annotate core/src/luan/modules/Io.luan @ 435:5b36f663a1b8

make members lower case
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 03 May 2015 21:28:49 -0600
parents 750a68eceb1d
children 92c3d22745b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
321
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
1 java()
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
2 local IoLuan = require "java:luan.modules.IoLuan"
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
3 local System = require "java:java.lang.System"
297
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
4
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
5 read_console_line = IoLuan.read_console_line
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
6 schemes = IoLuan.newSchemes()
435
5b36f663a1b8 make members lower case
Franklin Schmidt <fschmidt@gmail.com>
parents: 424
diff changeset
7 uri = IoLuan.uri
297
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
8 stdin = IoLuan.defaultStdin.table()
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
9 socket_server = IoLuan.socket_server
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
10 stdout = IoLuan.textWriter(System.out)
899253043270 remove PackageLuan.load_lib()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
11 stderr = IoLuan.textWriter(System.err)
298
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
12
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
13
321
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
14 local Luan = require "luan:Luan"
320
fed1893821bf remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 319
diff changeset
15 local to_string = Luan.to_string
422
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
16 local type = Luan.type
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
17 local try = Luan.try
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
18 local ipairs = Luan.ipairs
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
19 local pairs = Luan.pairs
321
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
20 local Table = require "luan:Table"
320
fed1893821bf remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 319
diff changeset
21
298
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
22 function print_to(out,...)
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
23 local list = {}
402
62b457c50594 add stripe;
Franklin Schmidt <fschmidt@gmail.com>
parents: 392
diff changeset
24 for v in Luan.values(...) do
298
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
25 list[#list+1] = to_string(v)
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
26 list[#list+1] = '\t'
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
27 end
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
28 if #list == 0 then
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
29 out.write( '\n' )
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
30 else
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
31 list[#list] = '\n'
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
32 out.write( Table.unpack(list) )
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
33 end
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
34 end
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
35
320
fed1893821bf remove global namespace
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 319
diff changeset
36 function print(...)
298
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
37 print_to(stdout,...)
2ce23c7e2342 remove init.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 297
diff changeset
38 end
392
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
39
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
40
422
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
41 -- repr
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
42
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
43 local function do_repr(obj,done)
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
44 local tp = type(obj)
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
45 if tp == "table" then
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
46 if done[obj] == true then
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
47 %><circular reference><%
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
48 return
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
49 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
50 done[obj] = true
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
51 %>{<%
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
52 local is_first = true
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
53 local in_list = {}
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
54 for key, value in ipairs(obj) do
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
55 if is_first then is_first = false else %>, <% end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
56 do_repr(value,done)
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
57 in_list[key] = true
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
58 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
59 for key, value in pairs(obj) do
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
60 if in_list[key] ~= true then
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
61 if is_first then is_first = false else %>, <% end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
62 if type(key) == "string" and key.match "^[a-zA-Z_][a-zA-Z_0-9]*$" ~= nil then
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
63 %><%=key%><%
424
Franklin Schmidt <fschmidt@gmail.com>
parents: 422
diff changeset
64 elseif type(key) == "table" then
Franklin Schmidt <fschmidt@gmail.com>
parents: 422
diff changeset
65 %>[<<%=key%>>]<%
422
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
66 else
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
67 %>[<%do_repr(key,done)%>]<%
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
68 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
69 %>=<% do_repr(value,done)
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
70 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
71 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
72 %>}<%
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
73 elseif tp == "string" then
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
74 %>"<%=obj.encode()%>"<%
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
75 elseif tp == "nil" or tp == "boolean" or tp == "number" then
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
76 %><%=obj%><%
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
77 else
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
78 %><<%=obj%>><%
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
79 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
80 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
81
435
5b36f663a1b8 make members lower case
Franklin Schmidt <fschmidt@gmail.com>
parents: 424
diff changeset
82 local uri = uri -- make local
5b36f663a1b8 make members lower case
Franklin Schmidt <fschmidt@gmail.com>
parents: 424
diff changeset
83
422
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
84 function repr(obj)
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
85 local old_out = stdout
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
86 return try {
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
87 function()
435
5b36f663a1b8 make members lower case
Franklin Schmidt <fschmidt@gmail.com>
parents: 424
diff changeset
88 local string_uri = uri "string:"
422
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
89 stdout = string_uri.text_writer()
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
90 do_repr(obj,{})
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
91 stdout.close()
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
92 return string_uri.read_text()
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
93 end;
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
94 finally = function()
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
95 stdout = old_out
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
96 end;
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
97 }
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
98 end
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
99
af82b266fe89 add Io.repr()
Franklin Schmidt <fschmidt@gmail.com>
parents: 402
diff changeset
100
392
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
101 -- useful for SimplyHTML responsiveness
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
102
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
103 NO = {}
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
104
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
105 function dont_write_when_no(write_fn)
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
106 return function(...)
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
107 for v in Luan.values(...) do
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
108 if v == NO then
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
109 return
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
110 end
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
111 end
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
112 write_fn(...)
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
113 end
8668f3799ad9 add Io.dont_write_when_no
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
114 end