root/examples/box.pl

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
6use v6;
7
8sub longest_line(@lines) {
9    @lines.max:{ $^a.codes <=> $^b.codes }.codes;
10}
11
12sub lfill(Str $s, Num $n) {
13    return $s if $s.codes >= $n;
14    return $s ~ ' ' x ($n - $s.codes);
15}
16
17sub 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
26box(["Perl 6",
27     "Pugs",
28     "Lambda Camels",
29     "λ"]);
30
31box(["Perl 6",
32     "Pugs",
33     "Lambda Camels",
34     "λ"], 40);
35
36box(["Perl 6",
37     "Pugs",
38     "Lambda Camels",
39     "λ"], 4);
Note: See TracBrowser for help on using the browser.