a4bec63227
FossilOrigin-Name: 45eb321e8e7d830d8d934818f1770f585d65c72ba1e83b5b15f9e6c3559929a9
27 lines
685 B
Text
27 lines
685 B
Text
This is a four column version of `d:words`. It's pretty straightforward.
|
|
|
|
The code first scans through the dictionary to find the longest name. Shorter
|
|
names will be padded to make sure all columns line up. It then displays each
|
|
name, updating a column counter and adding newlines when needed.
|
|
|
|
~~~
|
|
{{
|
|
#3 'Columns var<n>
|
|
'PadTo var
|
|
:determine-padding
|
|
#0 [ d:name s:length n:max ] d:for-each !PadTo ;
|
|
:print-name
|
|
d:name [ s:put ] [ s:length @PadTo swap - &sp times ] bi sp sp ;
|
|
:wrap? @Columns n:zero? dup [ #4 !Columns ] if &Columns v:dec ;
|
|
---reveal---
|
|
:d:words-4
|
|
determine-padding [ print-name wrap? &nl if ] d:for-each ;
|
|
}}
|
|
~~~
|
|
|
|
Test it.
|
|
|
|
```
|
|
d:words-4
|
|
```
|
|
|