diff options
author | dakkar <dakkar@thenautilus.net> | 2011-08-29 18:18:20 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2011-08-29 18:23:00 +0100 |
commit | 31b0415bb8ef0c606816e2b2c329e4a7f8db4542 (patch) | |
tree | b9695780b2e55848fb282072db513ad22b0770f2 /lib | |
parent | more stepping tests (diff) | |
download | Enigmatic-31b0415bb8ef0c606816e2b2c329e4a7f8db4542.tar.gz Enigmatic-31b0415bb8ef0c606816e2b2c329e4a7f8db4542.tar.bz2 Enigmatic-31b0415bb8ef0c606816e2b2c329e4a7f8db4542.zip |
plugboard
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Enigmatic/Plugboard.pm | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/Enigmatic/Plugboard.pm b/lib/Enigmatic/Plugboard.pm new file mode 100644 index 0000000..b505195 --- /dev/null +++ b/lib/Enigmatic/Plugboard.pm @@ -0,0 +1,27 @@ +package Enigmatic::Plugboard; +use DAKKAR::p 'class'; +use Enigmatic::Types qw(PlugWiringMap Letter); + +has wiring => ( + is => 'ro', + isa => PlugWiringMap, + coerce => 1, + builder => '_build_wiring', +); + +sub _build_wiring { + my %map = map { $_, $_ } 'A'..'Z'; + return \%map; +} + +with 'Enigmatic::Role::WithWiring'; + +sub map { + my $self = shift; + my ($letter) = pos_validated_list( + \@_, + { isa => Letter }, + ); + + return $self->wiring->at($letter); +} |