From 2844aba0f859497e13d0168a0e0171edcfdeabca Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 23 Nov 2010 20:59:28 +0000 Subject: refactor --- lib/TextPrinter.pm | 79 +++++++++++++++++++++++++++++++++++++++++++++++ qr-color.pl | 90 ------------------------------------------------------ script/qr-color.pl | 16 ++++++++++ 3 files changed, 95 insertions(+), 90 deletions(-) create mode 100644 lib/TextPrinter.pm delete mode 100644 qr-color.pl create mode 100644 script/qr-color.pl diff --git a/lib/TextPrinter.pm b/lib/TextPrinter.pm new file mode 100644 index 0000000..d786b86 --- /dev/null +++ b/lib/TextPrinter.pm @@ -0,0 +1,79 @@ +package TextPrinter; +use strict; +use warnings; +use Term::ANSIColor; + +{ +my %colours = ( + 'black' => [ + map { color($_,'on_black') } + 'dark yellow','dark green','dark blue' + ], + 'white' => [ + map { color($_,'on_white') } + 'green', 'blue', 'yellow' + ], +); + +my $strip_length = 0; + +sub rotate { + my ($arr) = @_; + + my $el = shift @$arr; + push @$arr, $el; + return; +} + +sub next_colour { + my ($which) = @_; + + if ($strip_length < 1) { + $strip_length = 1+int(rand(7)); + rotate($colours{$which}); + } + --$strip_length; + return $colours{$which}->[0]; +} +} + + +sub draw_cell { + print next_colour(shift eq '*' ? 'black' : 'white'), + chr(65+int(rand(26))); +} +{ +my $white = color('black','on_white'); +my $reset = color('reset'); +sub draw_row { + my ($row,$scale)=@_; + $scale||=1; + print $white,' 'x(3*$scale); + for my $cell (@$row) { + draw_cell($cell) for 1..$scale; + } + print $white,' 'x(3*$scale); + print $reset,"\n"; +} +sub draw_empty_row { + my ($row,$scale)=@_; + $scale||=1; + + print $white,' 'x((6+@$row)*$scale),$reset,"\n" for 1..(3*$scale); +} +} + +sub draw_whole { + my ($arr,$scale)=@_; + $scale||=1; + + draw_empty_row($arr->[0],$scale); + + for my $row (@$arr) { + draw_row($row,$scale) for 1..$scale; + } + + draw_empty_row($arr->[0],$scale); +} + +1; diff --git a/qr-color.pl b/qr-color.pl deleted file mode 100644 index dc8c825..0000000 --- a/qr-color.pl +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/perl -use strict; -use warnings; -use Text::QRCode; -use Term::ANSIColor; - -{ -my %colours = ( - 'black' => [ - map { color($_,'on_black') } - 'dark yellow','dark green','dark blue' - ], - 'white' => [ - map { color($_,'on_white') } - 'green', 'blue', 'yellow' - ], -); - -my $strip_length = 0; - -sub rotate { - my ($arr) = @_; - - my $el = shift @$arr; - push @$arr, $el; - return; -} - -sub next_colour { - my ($which) = @_; - - if ($strip_length < 1) { - $strip_length = 1+int(rand(7)); - rotate($colours{$which}); - } - --$strip_length; - return $colours{$which}->[0]; -} -} - - -sub draw_cell { - print next_colour(shift eq '*' ? 'black' : 'white'), - chr(65+int(rand(26))); -} -{ -my $white = color('black','on_white'); -my $reset = color('reset'); -sub draw_row { - my ($row,$scale)=@_; - $scale||=1; - print $white,' 'x(3*$scale); - for my $cell (@$row) { - draw_cell($cell) for 1..$scale; - } - print $white,' 'x(3*$scale); - print $reset,"\n"; -} -sub draw_empty_row { - my ($row,$scale)=@_; - $scale||=1; - - print $white,' 'x((6+@$row)*$scale),$reset,"\n" for 1..(3*$scale); -} -} - -sub draw_whole { - my ($arr,$scale)=@_; - $scale||=1; - - draw_empty_row($arr->[0],$scale); - - for my $row (@$arr) { - draw_row($row,$scale) for 1..$scale; - } - - draw_empty_row($arr->[0],$scale); -} - - -my $data='MECARD:N:Ceccarelli,Gianni;TEL:+447564023056;EMAIL:dakkar@thenautilus.net;URL:http://www.thenautilus.net/contacts/;NICKNAME:dakkar;;'; - -my $qr=Text::QRCode->new( - level=>'H', - mode=>'8-bit', -); - -my $arr=$qr->plot($data); - -draw_whole($arr,1); diff --git a/script/qr-color.pl b/script/qr-color.pl new file mode 100644 index 0000000..ecf7025 --- /dev/null +++ b/script/qr-color.pl @@ -0,0 +1,16 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Text::QRCode; +use TextPrinter; + +my $data='MECARD:N:Ceccarelli,Gianni;TEL:+447564023056;EMAIL:dakkar@thenautilus.net;URL:http://www.thenautilus.net/contacts/;NICKNAME:dakkar;;'; + +my $qr=Text::QRCode->new( + level=>'H', + mode=>'8-bit', +); + +my $arr=$qr->plot($data); + +TextPrinter::draw_whole($arr,1); -- cgit v1.2.3