3 //doc
Block asSimpleString Returns a short description of the receiver
.
4 asSimpleString
:= method(
5 if(scope
, "block", "method") .. "(" .. argumentNames
append("...") join(", ") .. ")"
8 //doc
Block asString Returns a full description of the receiver with decompiled code
.
10 Formatter
clone formatBlock(getSlot("self")) buffer
18 println
:= getSlot("print")
20 Formatter
:= Object clone do(
21 newSlot("lineNumber", 0)
22 newSlot("isLineEmpty", true
)
27 newSlot("reverseAssignOperators")
30 buffer
= Sequence
clone
31 operators
= OperatorTable operators
32 reverseAssignOperators
= OperatorTable reverseAssignOperators
33 reverseAssignOperators
atPut("setSlotWithType", ":=")
37 call
delegateTo(buffer
)
42 buffer
appendSeq("\n")
43 lineNumber
= lineNumber
+ 1
47 newLinesTo
:= method(msg
,
48 (msg lineNumber
- lineNumber
) minMax(0, 2) repeat(newLine
)
49 lineNumber
= msg lineNumber
53 depth
repeat(appendSeq(" "))
56 formatBlock
:= method(theBlock
,
57 msg
:= getSlot("theBlock") message
59 if(msg label
!= CLI commandLineLabel
,
60 appendSeq("# " .. msg label
.. ":" .. msg lineNumber
, "\n")
63 if(getSlot("theBlock") argumentNames size
> 0,
64 getSlot("theBlock") argumentNames
foreach(i
, name
,
76 lineNumber
= msg lineNumber
77 formatIndentedMessage(msg
)
83 formatIndentedMessage
:= method(msg
,
89 formatMessage
:= method(msg
,
93 if(lineNumber
== m next ?lineNumber
,
110 if(reverseAssignOperators
hasKey(m name
)) then(
113 if(args first cachedResult
,
114 appendSeq(args first cachedResult
, " ")
116 appendSeq(reverseAssignOperators
at(m name
))
120 formatMessage(args
at(1))
128 ) elseif(operators
hasKey(m name
)) then(
132 if(m arguments first
,
133 formatMessage(m arguments first
)
146 formatArguments
:= method(msg
,
149 startingLineNumber
:= lineNumber
150 msg arguments
foreach(i
, arg
,
151 # Insert separator between arguments
153 # Still on the same line as the
"("
154 if(startingLineNumber
== lineNumber
,
157 newLine
; indent
; appendSeq(","); newLine
161 # Format the argument
162 formatIndentedMessage(arg
)
165 if(startingLineNumber
!= lineNumber
,