summaryrefslogtreecommitdiff
path: root/lib/Enigmatic/RotorBox.pm
blob: 08a6b22e33a7f3864ab123e0a0a7067fab7fc29d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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 = (
        => 'EKMFLGDQVZNTOWYHXUSPAIBRCJ',
        II => 'AJDKSIRUXBLHWTMCQGZNPYFVOE',
        III => 'BDFHJLCPRTXVZNYEIWGAKMUSQO',
        IV => 'ESOVPZJAYQUIRHXLNFTGKDCMWB',
        => 'VZBRGITYUPSDNHLXAWMJQOFECK',
        VI => 'JPGVOUMFYQBENHZRDKASXLICTW',
        VII => 'NZJHGRCXMYSWBOUFAIVLPEKQDT',
        VIII => 'FKQHTLXOCBJSPDZRAMEWNIUYGV',
        Beta => 'LEYJVCNIXWPBQMDRTAKZGFUHOS',
        Gamma => 'FSOKANUERHMBTIYCWLQPZXVGJD',
    );
 
    $_ = Enigmatic::Rotor->new($_for values %rotors;
    return \%rotors;
}