|
Revision 16136, 0.7 kB
(checked in by gnuvince, 21 months ago)
|
|
- Added a very simple example that prints a list
or strings inside an ASCII box.
|
| Line | |
|---|
| 1 | # Print out text in a little box like so: |
|---|
| 2 | # +------+ |
|---|
| 3 | # | Pugs | |
|---|
| 4 | # +------+ |
|---|
| 5 | |
|---|
| 6 | use v6; |
|---|
| 7 | |
|---|
| 8 | sub longest_line(@lines) { |
|---|
| 9 | @lines.max:{ $^a.codes <=> $^b.codes }.codes; |
|---|
| 10 | } |
|---|
| 11 | |
|---|
| 12 | sub lfill(Str $s, Num $n) { |
|---|
| 13 | return $s if $s.codes >= $n; |
|---|
| 14 | return $s ~ ' ' x ($n - $s.codes); |
|---|
| 15 | } |
|---|
| 16 | |
|---|
| 17 | sub box(@lines, $width=0) { |
|---|
| 18 | my $w = max($width, longest_line(@lines)); |
|---|
| 19 | say "+-{ '-' x $w }-+"; |
|---|
| 20 | for @lines { |
|---|
| 21 | say "| " ~ lfill($^line, $w) ~ " |"; |
|---|
| 22 | } |
|---|
| 23 | say "+-{ '-' x $w }-+"; |
|---|
| 24 | } |
|---|
| 25 | |
|---|
| 26 | box(["Perl 6", |
|---|
| 27 | "Pugs", |
|---|
| 28 | "Lambda Camels", |
|---|
| 29 | "λ"]); |
|---|
| 30 | |
|---|
| 31 | box(["Perl 6", |
|---|
| 32 | "Pugs", |
|---|
| 33 | "Lambda Camels", |
|---|
| 34 | "λ"], 40); |
|---|
| 35 | |
|---|
| 36 | box(["Perl 6", |
|---|
| 37 | "Pugs", |
|---|
| 38 | "Lambda Camels", |
|---|
| 39 | "λ"], 4); |
|---|