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;
}