68 lines
2.1 KiB
Plaintext
68 lines
2.1 KiB
Plaintext
theString$ = "Given$a$text$file$of$many$lines,$where$fields$within$a$line$"
|
|
theString$ = theString$ + "are$delineated$by$a$single$'dollar'$character,$write$a$program"
|
|
theString$ = theString$ + "that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$"
|
|
theString$ = theString$ + "column$are$separated$by$at$least$one$space."
|
|
theString$ = theString$ + "Further,$allow$for$each$word$in$a$column$to$be$either$left$"
|
|
theString$ = theString$ + "justified,$right$justified,$or$center$justified$within$its$column."
|
|
|
|
x = shoTable(theString$, "left", 6)
|
|
x = shoTable(theString$, "right", 6)
|
|
x = shoTable(theString$, "center", 6)
|
|
end
|
|
|
|
sub word$(sr$, wn, delim$)
|
|
local i, j, n, sd, sl, sl2
|
|
local s$, res$, d$
|
|
|
|
d$ = delim$
|
|
j = wn
|
|
if j = 0 j = j+1
|
|
res$ = "" : s$ = sr$
|
|
if d$ = "" d$ = " "
|
|
sd = len(d$) : sl = len(s$)
|
|
do
|
|
n = instr(s$,d$)
|
|
j = j - 1
|
|
if j = 0 then
|
|
if n = 0 then res$ = s$ else res$ = mid$(s$, 1, n-1) : fi
|
|
return res$
|
|
fi
|
|
if n = 0 return res$
|
|
if n = sl-sd then res$ = "" : return res$ : fi
|
|
sl2 = sl-n
|
|
s$ = mid$(s$, n+1, sl2)
|
|
sl = sl2
|
|
loop
|
|
return res$
|
|
end sub
|
|
|
|
sub shoTable(theString$, align$, across)
|
|
local i, a$, b$
|
|
|
|
print "------------ align:", align$, " -- across:", across, " ------------"
|
|
dim siz(across)
|
|
b$ = " "
|
|
while word$(theString$, i+1, "$") <> ""
|
|
siz(mod(i, across)) = max(siz(mod(i, across)), len(word$(theString$, i+1, "$")))
|
|
i = i+1
|
|
wend
|
|
for i = 0 to across - 1
|
|
siz(i) = siz(i)+1
|
|
if siz(i) and 1 siz(i) = siz(i)+1
|
|
next i
|
|
|
|
i = 0
|
|
a$ = word$(theString$, i+1, "$")
|
|
while a$ <> ""
|
|
s = siz(mod(i, across)) - len(a$)
|
|
if align$ = "right" a$ = left$(b$, s) + a$
|
|
if align$ = "left" a$ = a$ + left$(b$, s)
|
|
if align$ = "center" a$ = left$(b$, int(s / 2)) + a$ + left$(b$, int(s / 2) + (s and 1))
|
|
print "|", a$;
|
|
i = i + 1
|
|
if mod(i, across) = 0 print "|"
|
|
a$ = word$(theString$, i+1, "$")
|
|
wend
|
|
print
|
|
end sub
|