aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-185/happy-barney/perl/ch-1-test-scenario.pl20
-rw-r--r--challenge-185/happy-barney/perl/ch-1.pl16
-rw-r--r--challenge-185/happy-barney/perl/ch-1.t9
-rw-r--r--challenge-185/happy-barney/perl/ch-1.yaml17
-rw-r--r--challenge-185/happy-barney/perl/ch-2-test-scenario.pl20
-rw-r--r--challenge-185/happy-barney/perl/ch-2.pl19
-rw-r--r--challenge-185/happy-barney/perl/ch-2.t7
-rw-r--r--challenge-185/happy-barney/perl/ch-2.yaml15
8 files changed, 123 insertions, 0 deletions
diff --git a/challenge-185/happy-barney/perl/ch-1-test-scenario.pl b/challenge-185/happy-barney/perl/ch-1-test-scenario.pl
new file mode 100644
index 0000000000..a15e748021
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-1-test-scenario.pl
@@ -0,0 +1,20 @@
+
+use strict;
+use warnings;
+
+use Test::YAFT;
+use YAML::Syck qw[ LoadFile ];
+
+act { [ challenge_185_1 (@{ $_[0] }) ] } 'input';
+
+my $plan = LoadFile "./ch-1.yaml";
+for my $message (sort keys %$plan) {
+ it $message
+ => with_input => $plan->{$message}{input},
+ => expect => $plan->{$message}{expect},
+ ;
+}
+
+had_no_warnings;
+done_testing;
+
diff --git a/challenge-185/happy-barney/perl/ch-1.pl b/challenge-185/happy-barney/perl/ch-1.pl
new file mode 100644
index 0000000000..a40a9b2886
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-1.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+
+use Syntax::Construct 'non-destructive-substitution';
+
+use strict;
+use warnings;
+
+sub challenge_185_1 {
+ my ($mac) = @_;
+
+ return $mac
+ =~ s/[^[:xdigit:]]+//gr
+ =~ s/( [[:xdigit:]]{2} ) (?! $)/$1:/grx
+ ;
+}
+
diff --git a/challenge-185/happy-barney/perl/ch-1.t b/challenge-185/happy-barney/perl/ch-1.t
new file mode 100644
index 0000000000..d9072dd26c
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-1.t
@@ -0,0 +1,9 @@
+
+use strict;
+use warnings;
+
+do "./ch-1.pl";
+die $@ if $@;
+
+do "./ch-1-test-scenario.pl";
+die $@ if $@;
diff --git a/challenge-185/happy-barney/perl/ch-1.yaml b/challenge-185/happy-barney/perl/ch-1.yaml
new file mode 100644
index 0000000000..a67855561e
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-1.yaml
@@ -0,0 +1,17 @@
+"should format dot-delimited mac-address":
+ input:
+ - '1ac2.34f0.b1c2'
+ expect:
+ - '1a:c2:34:f0:b1:c2'
+
+"should format already formatted mac address":
+ input:
+ - '1a:c2:34:f0:b1:c2'
+ expect:
+ - '1a:c2:34:f0:b1:c2'
+
+"should format mac address without separators":
+ input:
+ - '1ac234f0b1c2'
+ expect:
+ - '1a:c2:34:f0:b1:c2'
diff --git a/challenge-185/happy-barney/perl/ch-2-test-scenario.pl b/challenge-185/happy-barney/perl/ch-2-test-scenario.pl
new file mode 100644
index 0000000000..32493363ca
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-2-test-scenario.pl
@@ -0,0 +1,20 @@
+
+use strict;
+use warnings;
+
+use Test::YAFT;
+use YAML::Syck qw[ LoadFile ];
+
+act { [ challenge_185_2 (@{ $_[0] }) ] } 'input';
+
+my $plan = LoadFile "./ch-2.yaml";
+for my $message (sort keys %$plan) {
+ it $message
+ => with_input => $plan->{$message}{input},
+ => expect => $plan->{$message}{expect},
+ ;
+}
+
+had_no_warnings;
+done_testing;
+
diff --git a/challenge-185/happy-barney/perl/ch-2.pl b/challenge-185/happy-barney/perl/ch-2.pl
new file mode 100644
index 0000000000..be12b10be0
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-2.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+sub challenge_185_2 {
+ my (@codes) = @_;
+
+ my $count = 4;
+ my $mask = 'x';
+
+ for my $code (@codes) {
+ $code =~ s/^ ((?: $mask \W*){$_}) [a-z0-9]/$1$mask/x
+ for 0 .. $count - 1;
+ }
+
+ return @codes;
+}
+
diff --git a/challenge-185/happy-barney/perl/ch-2.t b/challenge-185/happy-barney/perl/ch-2.t
new file mode 100644
index 0000000000..aac2cc2a14
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-2.t
@@ -0,0 +1,7 @@
+
+use strict;
+use warnings;
+
+do "./ch-2.pl";
+do "./ch-2-test-scenario.pl";
+
diff --git a/challenge-185/happy-barney/perl/ch-2.yaml b/challenge-185/happy-barney/perl/ch-2.yaml
new file mode 100644
index 0000000000..9f0a299489
--- /dev/null
+++ b/challenge-185/happy-barney/perl/ch-2.yaml
@@ -0,0 +1,15 @@
+"should mask first 4 characters/letters":
+ input:
+ - 'ab-cde-123'
+ - '123.abc.420'
+ - '3abc-0010.xy'
+ - '1234567.a'
+ - 'a-1234-bc'
+ - 'a.b.c.d.e.f'
+ expect:
+ - 'xx-xxe-123'
+ - 'xxx.xbc.420'
+ - 'xxxx-0010.xy'
+ - 'xxxx567.a'
+ - 'x-xxx4-bc'
+ - 'x.x.x.x.e.f'