Skip to content

Instantly share code, notes, and snippets.

@Leonidas-from-XIV
Created December 6, 2012 20:10
Show Gist options
  • Save Leonidas-from-XIV/4227887 to your computer and use it in GitHub Desktop.
Save Leonidas-from-XIV/4227887 to your computer and use it in GitHub Desktop.
OperatorTable addAssignOperator(":", "atPutNumber")
curlyBrackets := method(
r := Map clone
call message arguments foreach(arg,
r doMessage(arg))
r)
Map atPutNumber := method(
self atPut(
call evalArgAt(0) asMutable removePrefix("\"") removeSuffix("\""),
call evalArgAt(1)))
# emulate " " * 3 from Python
Sequence * := method(n,
r := Sequence clone
n repeat(r appendSeq(self))
r)
Builder := Object clone
Builder indentLevel := 0
Builder indentString := " "
Builder forward := method(
writeln(indentString * indentLevel, "<", call message name, ">")
indentLevel = indentLevel + 1
call message arguments foreach(arg,
content := self doMessage(arg)
if(content type == "Sequence",
writeln(indentString * indentLevel, content)))
indentLevel = indentLevel - 1
writeln(indentString * indentLevel, "</", call message name, ">"))
{ "author" : "Tate" } println
attr println
#Builder book(attr, ul(
# li("Io"),
# li("Lua"),
# li("JavaScript")))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment