Skip to content

Commit

Permalink
IO
Browse files Browse the repository at this point in the history
  • Loading branch information
thetouchstone committed Apr 1, 2012
1 parent ea6ccee commit b557e4a
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 0 deletions.
22 changes: 22 additions & 0 deletions io/animals.io
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Object ancestors := method(
prototype := self proto
if(prototype != Object,
writeln("Slots of ", prototype type, "\n---------------")
prototype slotNames foreach(slotName, writeln(slotName))
writeln
prototype ancestors))


Animal := Object clone
Animal speak := method(
"ambiguous animal noise" println)

Duck := Animal clone
Duck speak := method(
"quack" println)

Duck walk := method(
"waddle" println)

disco := Duck clone
disco ancestors
13 changes: 13 additions & 0 deletions io/builder.io
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Builder := Object clone

Builder forward := method(
writeln("<", call message name, ">")
call message arguments foreach(
arg,
content := self doMessage(arg);
if(content type == "Sequence", writeln(content)))
writeln("</",call message name, ">"))
Builder ul(
li("io"),
li("Lua"),
li("JavaScript"))
15 changes: 15 additions & 0 deletions io/coroutine.io
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
vizzini := Object clone
vizzini talk := method(
"Fezzik, are there rocks ahead?" println
yield
"No more rhymes now, I mean it." println
yield)
fezzik := Object clone

fezzik rhyme := method(
yield
"If there are, we'll all be dead." println
yield
"Anybody want a peanut?" println)
vizzini @@talk; fezzik @@rhyme
Coroutine currentCoroutine pause
8 changes: 8 additions & 0 deletions io/do.io
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Object fib := method(n,
if(n == 0, 0, (if(n == 1, 1, Object fib(n - 1) + Object fib(n - 2))))
)
Object fib(25) println
List myAverage := method(inlist,
inlist sum / inlist size
)
List myAverage(list(1,2,3)) println
25 changes: 25 additions & 0 deletions io/phonebook.io
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# START:range
OperatorTable addAssignOperator(":", "atPutNumber")
# END:range
# START:curlyBrackets
curlyBrackets := method(
r := Map clone
call message arguments foreach(arg,
r doMessage(arg)
)
r
)
# END:curlyBrackets
# START:atPutNumber
Map atPutNumber := method(
self atPut(
call evalArgAt(0) asMutable removePrefix("\"") removeSuffix("\""),
call evalArgAt(1))
)
# END:atPutNumber
# START:use
s := File with("phonebook.txt") openForReading contents
phoneNumbers := doString(s)
phoneNumbers keys println
phoneNumbers values println
# END:use
6 changes: 6 additions & 0 deletions io/unless.io
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
unless := method(
(call sender doMessage(call message argAt(0))) ifFalse(
call sender doMessage(call message argAt(1))) ifTrue(
call sender doMessage(call message argAt(2)))
)
unless(1 == 2, write("One is not 2\n"), write("one is 2\n"))

0 comments on commit b557e4a

Please sign in to comment.