diff options
author | dakkar <dakkar@thenautilus.net> | 2011-08-29 13:29:56 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2011-08-29 13:29:56 +0100 |
commit | ed030db7a044829ca1f1f79cc9f27d72220da7ab (patch) | |
tree | a721a1e5c5bb2c6c830d4ca5c98485871ebc2675 /lib/Enigmatic/RotorBox.pm | |
parent | static rotors (diff) | |
download | Enigmatic-ed030db7a044829ca1f1f79cc9f27d72220da7ab.tar.gz Enigmatic-ed030db7a044829ca1f1f79cc9f27d72220da7ab.tar.bz2 Enigmatic-ed030db7a044829ca1f1f79cc9f27d72220da7ab.zip |
rotor boxes
Diffstat (limited to 'lib/Enigmatic/RotorBox.pm')
-rw-r--r-- | lib/Enigmatic/RotorBox.pm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/Enigmatic/RotorBox.pm b/lib/Enigmatic/RotorBox.pm new file mode 100644 index 0000000..08a6b22 --- /dev/null +++ b/lib/Enigmatic/RotorBox.pm @@ -0,0 +1,34 @@ +package Enigmatic::RotorBox; +use DAKKAR::p 'class'; +use Enigmatic::Rotor; +use MooseX::Types::Structured qw(Map); +use MooseX::Types::Moose qw(Str); +use Moose::Util::TypeConstraints; + +has rotorset => ( + is => 'ro', + isa => Map[Str,class_type('Enigmatic::Rotor')], + lazy_build => 1, + traits => ['Hash'], + handles => { + get => 'get', + }, +); + +sub _build_rotorset { + my %rotors = ( + I => 'EKMFLGDQVZNTOWYHXUSPAIBRCJ', + II => 'AJDKSIRUXBLHWTMCQGZNPYFVOE', + III => 'BDFHJLCPRTXVZNYEIWGAKMUSQO', + IV => 'ESOVPZJAYQUIRHXLNFTGKDCMWB', + V => 'VZBRGITYUPSDNHLXAWMJQOFECK', + VI => 'JPGVOUMFYQBENHZRDKASXLICTW', + VII => 'NZJHGRCXMYSWBOUFAIVLPEKQDT', + VIII => 'FKQHTLXOCBJSPDZRAMEWNIUYGV', + Beta => 'LEYJVCNIXWPBQMDRTAKZGFUHOS', + Gamma => 'FSOKANUERHMBTIYCWLQPZXVGJD', + ); + + $_ = Enigmatic::Rotor->new($_) for values %rotors; + return \%rotors; +} |