Adding an Annotation Column
This adds a column for comments, using its own $ source as an example.
From this:
$ script
function main()
layout("main.pro","t.pro")
end function
function layout(nfi,nfo)
' adds annotation layout
new fi=input(nfi)
new fo=output(nfo)
new t-"",s="", crlf=chr(13)+chr(10)
new w="",a=0
// pass 1
new m=0, em=chr(124), rem=chr(47)+chr(47)
{
if eof(fi) then exit
t=in(fi)
a=pos(t,rem)
if not a
a=len(t)+1
end if
m=max(m,a)
repeat
}
'm?
close(fi)
fi=input(nfi) // pass 2
out(fo,"")
$'`many("=",m)+em`
new cm=""
{
if eof(fi) then exit
t=in(fi)
cm="" // comment
a=pos(t,rem)
if a
cm=mid(t,a+2)
t=midl(t,1,a)
end if
read(t)
w=word()
if w EQ "if"
$'`many("-",m)+em`
end if
if (w EQ "function")or(w EQ "def")
$'`many("=",m)+em`
end if
s=many(" ",m+1)+em+cm
patch s,1,t
$`s`
's?
'if @4 EQ 39
' $'`many("-",m)+em`
'end if
if w EQ "function"
$'`many("=",m)+em`
end if
repeat
}
$'`many("=",m)+em`
close(fi)
close(fo)
end function
To this:
$ script
'==================================================|
|
|
'==================================================|
function main() |
'==================================================|
layout("main.pro","t.pro") |
end function |
|
|
'==================================================|
function layout(nfi,nfo) |
'==================================================|
' adds annotation layout |
new fi=input(nfi) |
new fo=output(nfo) |
new t-"",s="", crlf=chr(13)+chr(10) |
new w="",a=0 |
| pass 1
new m=0, em=chr(124), rem=chr(47)+chr(47) |
{ |
'--------------------------------------------------|
if eof(fi) then exit |
t=in(fi) |
a=pos(t,rem) |
'--------------------------------------------------|
if not a |
a=len(t)+1 |
end if |
m=max(m,a) |
repeat |
} |
'm? |
close(fi) |
fi=input(nfi) | pass 2
out(fo,"") |
$'`many("=",m)+em` |
new cm="" |
{ |
'--------------------------------------------------|
if eof(fi) then exit |
t=in(fi) |
cm="" | comment
a=pos(t,rem) |
'--------------------------------------------------|
if a |
cm=mid(t,a+2) |
t=midl(t,1,a) |
end if |
read(t) |
w=word() |
'--------------------------------------------------|
if w EQ "if" |
$'`many("-",m)+em` |
end if |
'--------------------------------------------------|
if (w EQ "function")or(w EQ "def") |
$'`many("=",m)+em` |
end if |
s=many(" ",m+1)+em+cm |
patch s,1,t |
$`s` |
's? |
'if @4 EQ 39 |
' $'`many("-",m)+em` |
'end if |
'--------------------------------------------------|
if w EQ "function" |
$'`many("=",m)+em` |
end if |
repeat |
} |
$'`many("=",m)+em` |
close(fi) |
close(fo) |
end function |