rotor_machine 1.0.13 → 1.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c6ce5057e6c37a1b68b51d95b163d24a77a082f88a67b5784ca88bfec9c70de
4
- data.tar.gz: 1fc04d49911e0b2b22b76f4187cbbe17aac542f5125c6c9fb03ad73ba811cf4e
3
+ metadata.gz: 443abe9d94a7c609dc9e6e737a9cf134cc7c81d485977b7f32b9672572cacb4f
4
+ data.tar.gz: 4f9ac00ff8680eb8c1f10d385d6905a35d97d240da5b9ef209a3a26304f3e2d5
5
5
  SHA512:
6
- metadata.gz: 9f9a30fb69dad2d52311d477d832618c3a33f535f966340ff27ce04fc057d65ffe603f0e7fd051e9662647e52fd05c85b834fb6b5badaa30078bc02018fc6800
7
- data.tar.gz: ece40597dfcb3fee99a900a294a4e9a24dabc4479b09e4a97485ce33f3946ff6104ee50987e13b5e5350486e71009f73caced494685b25e78403f2ece457017e
6
+ metadata.gz: 1280cdc56b4e65ea14716c454316cd1c8b4411c92e944230ac67fe526f36f708108afb6a89c0b9f6662afa556e2c54c21035bf780ea0a2e75b45cd4a53e69726
7
+ data.tar.gz: f1225743be6ea1947a8d1fc1b0966f42f4686b38d7762cbfbd65baf27ccd0951bc7c64efdb5930d277f7b88f660eb3121cf7a29ddb32b1a506013c3673ccf88f
@@ -0,0 +1,2 @@
1
+ *�Qf�ڲ�g�Eq
2
+ 7 ����v(X�\�2z>����,�wg
@@ -0,0 +1,2 @@
1
+ �?S�:��� 3�
2
+ �0&������cr�5L�f����-?>��"��ao��� i���rb8����p���O����#ޔu�#�\������oP��t�x�0 bpɠ�?���,u7��ޠ>L14.���+��
data/.gitignore CHANGED
@@ -1,8 +1,8 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
3
  /_yardoc/
4
- /coverage/
5
4
  /doc/
5
+ /coverage/
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
data/README.md CHANGED
@@ -33,29 +33,29 @@ Or install it yourself as:
33
33
 
34
34
  ## Architecture
35
35
 
36
- The [`RotorMachine::Machine`](http://www.rubydoc.info/gems/rotor_machine/RotorMachine/Machine)
36
+ The [`RotorMachine::Machine`](http://www.rubydoc.info/github/tammycravit/rotor_machine/master/RotorMachine/Machine)
37
37
  class serves as the entrypoint and orchestrator for an Enigma machine.
38
38
 
39
39
  ### Components of an Enigma machine
40
40
 
41
- The Enigma machine, as represented by the [RotorMachine](http://www.rubydoc.info/gems/rotor_machine)
41
+ The Enigma machine, as represented by the [RotorMachine](http://www.rubydoc.info/github/tammycravit/rotor_machine/master)
42
42
  module, consists of the following components:
43
43
 
44
- * One or more [rotors](http://www.rubydoc.info/gems/rotor_machine/RotorMachine/Rotor), which
44
+ * One or more [rotors](http://www.rubydoc.info/github/tammycravit/rotor_machine/master/RotorMachine/Rotor), which
45
45
  perform the transposition ciphering and also rotate to produce a polyalphabetic (rather
46
46
  than simple substitution) cipher.
47
47
 
48
- * A [reflector](http://www.rubydoc.info/gems/rotor_machine/RotorMachine/Reflector), which
48
+ * A [reflector](http://www.rubydoc.info/github/tammycravit/rotor_machine/master/RotorMachine/Reflector), which
49
49
  performs a simple symmetric substitution of letters
50
50
 
51
- * A [plugboard](http://www.rubydoc.info/gems/rotor_machine/RotorMachine/Plugboard), which
51
+ * A [plugboard](http://www.rubydoc.info/github/tammycravit/rotor_machine/master/RotorMachine/Plugboard), which
52
52
  allows pairs of letters to be transposed on a per-message basis.
53
53
 
54
54
  On an actual Enigma machine, these components are all electromechanical, and
55
55
  the Enigma also included a keyboard, a grid of lights to show the results, and
56
56
  in some cases a printer. Since this is a simulated Enigma, obviously, no
57
57
  keyboard/printer are supplied here. In this simulation, the
58
- [Machine](http://www.rubydoc.info/gems/rotor_machine/RotorMachine/Machine)
58
+ [Machine](http://www.rubydoc.info/github/tammycravit/rotor_machine/master/RotorMachine/Machine)
59
59
  class serves to encapsulate all of these components.
60
60
 
61
61
  The polyalphabetic encryption of the Enigma comes from the fact that the
@@ -168,7 +168,7 @@ new_plaintext = machine.encipher(ciphertext) # => "THISI SASUP ERSEC RETME SSAG
168
168
 
169
169
  The classes in
170
170
  [`lib/rotor_machine/`](https://github.com/tammycravit/rotor_machine/tree/master/lib/rotor_machine)
171
- all contain [documentation](http://www.rubydoc.info/gems/rotor_machine/) that
171
+ all contain [documentation](http://www.rubydoc.info/github/tammycravit/rotor_machine/master/) that
172
172
  pretty exhaustively describe their operation.
173
173
  The RSpec tests in the [`spec/`](https://github.com/tammycravit/rotor_machine/tree/master/spec)
174
174
  directory are also instructive for how the library works and how to use it.
@@ -0,0 +1,25 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBh0YW1t
3
+ eWNyYXZpdC9EQz1tZS9EQz1jb20wHhcNMTgwMjE5MjMxNDQzWhcNMTkwMjE5MjMx
4
+ NDQzWjAjMSEwHwYDVQQDDBh0YW1teWNyYXZpdC9EQz1tZS9EQz1jb20wggGiMA0G
5
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDDUddItdpGGMBoBfJZ2LWlXnfwEJWx
6
+ iOc478enSEQFOLXj3nVuTUhyac6MQFH6nB8CkNZt7MSokuWdQ7H//1Ajq+jeCwUm
7
+ WpjHF2BIL3WK7n8aAMH00p4gMAI4R8JnRjotmhUTIJCXtkIXoDTk1PGRzkH29q8+
8
+ dByUGmkAoX+iHqNRLbgiywLlpVapRT5B1nE+K8oETb0TilCfdvOh+91dM1LX/z69
9
+ uSOQOFoZSgnVNP/LTYaqDixdeEaDdslPRO1l8JSPdAzl1sn+YaeJwQbBWfbi+sGs
10
+ MB53CkLGDsz5MsrPx8b0iBNM/xFSEmXE+du3vCSAZktjNR7kNuFGbSOQW4SQkld6
11
+ mvw/Gi3TMmlgw2bELiXyUvEkHdkonFKMv9Rs2eq6Opw880YXl52/AcVi0dcsMZ3t
12
+ qp70xuUgsDF7zNdSfIgQzBX+GsmIIgbRQKUyGuXMnqUJlPm4fPnl5i3mIyZnqKyx
13
+ gg+2NNhKneabQF8wItZWdTGOVu87YFUOsosCAwEAAaN3MHUwCQYDVR0TBAIwADAL
14
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFMSFUfz/8w+SLDZIFy54jEKUPq4IMB0GA1Ud
15
+ EQQWMBSBEnRhbW15Y3Jhdml0QG1lLmNvbTAdBgNVHRIEFjAUgRJ0YW1teWNyYXZp
16
+ dEBtZS5jb20wDQYJKoZIhvcNAQELBQADggGBAC/hS37ZCB/MYxt6gE9i5qvjdY5j
17
+ qPiiQ7i5Yf2Gx6Jbe/wxiW1A3QcMdRvUSfIdC3XP3rYQf0AiyaQmbxhRn5e0LkYd
18
+ riChjHZxLQG3CKj+7YiUijIv0mgaw/lA0pEhMxIb/xY03Jwh64cg2FZrd/5wWLh2
19
+ QpyGVAktJp3rQolYO0fXbqRt40lg2+h2UWmaFvj++sFoCWdZzaopJZ3CS96IgUt+
20
+ sqm+r9HvzygOChJyLAjM8OwabZ4e2yRR2ZLiRxvHBL4FGf7hg6Y0YAvwvyRJw/7b
21
+ x6WTe0KO4pSZD02hl1A4gblx72eDvRwYkWO+dT1j9R+Wvrp/puwnzrLdThLwTsWQ
22
+ YGgdQBodP4Wqsew3nfbNJOKkqOnry4lWJugso3w2fe0nUbrWuaC3++J9Eazm++n/
23
+ F9wFDQvW5Nv6grw3Unc9miwN6NHA5kEjKzDDSXzWKSzAWbqzlMp/FxD+zP7NuibT
24
+ pjZmBE7TzW3JK1L4mE7lBh9bwUC5WoyMBDPT7A==
25
+ -----END CERTIFICATE-----
@@ -12,17 +12,17 @@ module RotorMachine
12
12
  # The options hash for this method can accept the following named
13
13
  # arguments:
14
14
  #
15
- # `:rotor_kind` - The type of rotor to create. Should be a symbol matching
16
- # a rotor type constant in the {RotorMachine::Rotor} class,
17
- # or a 26-character string giving the letter sequence for
18
- # the rotor. Defaults to `:ROTOR_1` if not specified.
15
+ # *:rotor_kind* - The type of rotor to create. Should be a symbol matching
16
+ # a rotor type constant in the {RotorMachine::Rotor} class,
17
+ # or a 26-character string giving the letter sequence for
18
+ # the rotor. Defaults to *:ROTOR_1* if not specified.
19
19
  #
20
- # `:initial_position` - The initial position of the rotor (0-based
21
- # numeric position, or a letter on the rotor.) Defaults
22
- # to 0 if not specified.
20
+ # *:initial_position* - The initial position of the rotor (0-based
21
+ # numeric position, or a letter on the rotor.) Defaults
22
+ # to 0 if not specified.
23
23
  #
24
- # `:step_size` - How many positions the rotor should advance with each
25
- # step. Defaults to 1 if not specified.
24
+ # *:step_size* - How many positions the rotor should advance with each
25
+ # step. Defaults to 1 if not specified.
26
26
  #
27
27
  # @param options [Hash] The options hash containing the options for the
28
28
  # rotor.
@@ -69,17 +69,17 @@ module RotorMachine
69
69
  # The options hash for this method can accept the following named
70
70
  # arguments:
71
71
  #
72
- # `:reflector_kind` - The type of reflector to create. Should be a symbol matching
73
- # a reflector type constant in the {RotorMachine::Reflector} class,
74
- # or a 26-character string giving the letter sequence for
75
- # the reflector. Defaults to `:REFLECTOR_A` if not specified.
72
+ # *:reflector_kind* - The type of reflector to create. Should be a symbol matching
73
+ # a reflector type constant in the {RotorMachine::Reflector} class,
74
+ # or a 26-character string giving the letter sequence for
75
+ # the reflector. Defaults to *:REFLECTOR_A* if not specified.
76
76
  #
77
- # `:initial_position` - The initial position of the reflector (0-based
78
- # numeric position, or a letter on the rotor.) Defaults
79
- # to 0 if not specified.
77
+ # *:initial_position* - The initial position of the reflector (0-based
78
+ # numeric position, or a letter on the rotor.) Defaults
79
+ # to 0 if not specified.
80
80
  #
81
81
  # @param options [Hash] The options hash containing the options for the
82
- # reflector.
82
+ # reflector.
83
83
  # @return The newly-built reflector.
84
84
  def build_reflector(options={})
85
85
  reflector_kind = options.fetch(:reflector_kind, :REFLECTOR_A)
@@ -126,18 +126,18 @@ module RotorMachine
126
126
  #
127
127
  # The options hash can provide the following options:
128
128
  #
129
- # - `:rotors` - An array of {Rotor} objects. This can be constructed
129
+ # - *:rotors* - An array of {Rotor} objects. This can be constructed
130
130
  # manually, or through multiple calls to {#build_rotor}.
131
131
  # Alternatively, you can pass an array of
132
132
  # symbols which match the constants in the {Rotor} class, and {Rotor}
133
133
  # objects will be built from those (using default position and step
134
134
  # sizes).
135
135
  #
136
- # - `:reflector` - A {Reflector} object. Alternatively, a symbol
136
+ # - *:reflector* - A {Reflector} object. Alternatively, a symbol
137
137
  # matching one of the reflector type constants can be passed in, and
138
138
  # a {Reflector} of the specified type will be created.j
139
139
  #
140
- # - `:connections` - A {Hash} of connections to make on the new {Machine}'s
140
+ # - *:connections* - A {Hash} of connections to make on the new {Machine}'s
141
141
  # {Plugboard}.
142
142
  #
143
143
  # @param options The options for the newly built {Machine}.
@@ -1,4 +1,4 @@
1
1
  module RotorMachine
2
- VERSION_DATA = [1, 0, 13]
2
+ VERSION_DATA = [1, 0, 14]
3
3
  VERSION = VERSION_DATA.join(".")
4
4
  end
@@ -1,33 +1,36 @@
1
1
 
2
- lib = File.expand_path("../lib", __FILE__)
2
+ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "rotor_machine/version"
4
+ require 'rotor_machine/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "rotor_machine"
7
+ spec.name = 'rotor_machine'
8
8
  spec.version = RotorMachine::VERSION
9
- spec.authors = ["Tammy Cravit"]
10
- spec.email = ["tammycravit@me.com"]
9
+ spec.authors = ['Tammy Cravit']
10
+ spec.email = ['tammycravit@me.com']
11
+ spec.cert_chain = ['certs/tammycravit.pem']
12
+ spec.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
11
13
 
12
14
  spec.summary = %q{Simple Enigma-like rotor machine in Ruby}
13
- spec.homepage = "https://github.com/tammycravit/rotor_machine"
14
- spec.license = "Apache-2.0"
15
+ spec.homepage = 'https://github.com/tammycravit/rotor_machine'
16
+ spec.license = 'Apache-2.0'
15
17
 
16
18
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
19
  f.match(%r{^(test|spec|features)/})
18
20
  end
19
- spec.bindir = "exe"
21
+ spec.bindir = 'exe'
20
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
- spec.require_paths = ["lib"]
23
+ spec.require_paths = ['lib']
22
24
 
23
- spec.add_dependency "tcravit_ruby_lib"
24
-
25
- spec.add_development_dependency "pry", "~> 0.11"
26
- spec.add_development_dependency "bundler", "~> 1.16"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "rspec", "~> 3.0"
25
+ spec.add_dependency 'tcravit_ruby_lib'
26
+
27
+ spec.add_development_dependency 'pry', '~> 0.11'
28
+ spec.add_development_dependency 'bundler', '~> 1.16'
29
+ spec.add_development_dependency 'rake', '~> 10.0'
30
+ spec.add_development_dependency 'rspec', '~> 3.0'
29
31
 
30
32
  spec.add_development_dependency 'guard'
31
33
  spec.add_development_dependency 'guard-rspec'
32
34
  spec.add_development_dependency 'guard-bundler'
35
+ spec.add_development_dependency 'simplecov'
33
36
  end
metadata CHANGED
@@ -1,14 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rotor_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.13
4
+ version: 1.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tammy Cravit
8
8
  autorequire:
9
9
  bindir: exe
10
- cert_chain: []
11
- date: 2018-02-14 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBh0YW1t
14
+ eWNyYXZpdC9EQz1tZS9EQz1jb20wHhcNMTgwMjE5MjMxNDQzWhcNMTkwMjE5MjMx
15
+ NDQzWjAjMSEwHwYDVQQDDBh0YW1teWNyYXZpdC9EQz1tZS9EQz1jb20wggGiMA0G
16
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDDUddItdpGGMBoBfJZ2LWlXnfwEJWx
17
+ iOc478enSEQFOLXj3nVuTUhyac6MQFH6nB8CkNZt7MSokuWdQ7H//1Ajq+jeCwUm
18
+ WpjHF2BIL3WK7n8aAMH00p4gMAI4R8JnRjotmhUTIJCXtkIXoDTk1PGRzkH29q8+
19
+ dByUGmkAoX+iHqNRLbgiywLlpVapRT5B1nE+K8oETb0TilCfdvOh+91dM1LX/z69
20
+ uSOQOFoZSgnVNP/LTYaqDixdeEaDdslPRO1l8JSPdAzl1sn+YaeJwQbBWfbi+sGs
21
+ MB53CkLGDsz5MsrPx8b0iBNM/xFSEmXE+du3vCSAZktjNR7kNuFGbSOQW4SQkld6
22
+ mvw/Gi3TMmlgw2bELiXyUvEkHdkonFKMv9Rs2eq6Opw880YXl52/AcVi0dcsMZ3t
23
+ qp70xuUgsDF7zNdSfIgQzBX+GsmIIgbRQKUyGuXMnqUJlPm4fPnl5i3mIyZnqKyx
24
+ gg+2NNhKneabQF8wItZWdTGOVu87YFUOsosCAwEAAaN3MHUwCQYDVR0TBAIwADAL
25
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFMSFUfz/8w+SLDZIFy54jEKUPq4IMB0GA1Ud
26
+ EQQWMBSBEnRhbW15Y3Jhdml0QG1lLmNvbTAdBgNVHRIEFjAUgRJ0YW1teWNyYXZp
27
+ dEBtZS5jb20wDQYJKoZIhvcNAQELBQADggGBAC/hS37ZCB/MYxt6gE9i5qvjdY5j
28
+ qPiiQ7i5Yf2Gx6Jbe/wxiW1A3QcMdRvUSfIdC3XP3rYQf0AiyaQmbxhRn5e0LkYd
29
+ riChjHZxLQG3CKj+7YiUijIv0mgaw/lA0pEhMxIb/xY03Jwh64cg2FZrd/5wWLh2
30
+ QpyGVAktJp3rQolYO0fXbqRt40lg2+h2UWmaFvj++sFoCWdZzaopJZ3CS96IgUt+
31
+ sqm+r9HvzygOChJyLAjM8OwabZ4e2yRR2ZLiRxvHBL4FGf7hg6Y0YAvwvyRJw/7b
32
+ x6WTe0KO4pSZD02hl1A4gblx72eDvRwYkWO+dT1j9R+Wvrp/puwnzrLdThLwTsWQ
33
+ YGgdQBodP4Wqsew3nfbNJOKkqOnry4lWJugso3w2fe0nUbrWuaC3++J9Eazm++n/
34
+ F9wFDQvW5Nv6grw3Unc9miwN6NHA5kEjKzDDSXzWKSzAWbqzlMp/FxD+zP7NuibT
35
+ pjZmBE7TzW3JK1L4mE7lBh9bwUC5WoyMBDPT7A==
36
+ -----END CERTIFICATE-----
37
+ date: 2018-02-19 00:00:00.000000000 Z
12
38
  dependencies:
13
39
  - !ruby/object:Gem::Dependency
14
40
  name: tcravit_ruby_lib
@@ -122,6 +148,20 @@ dependencies:
122
148
  - - ">="
123
149
  - !ruby/object:Gem::Version
124
150
  version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: simplecov
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
125
165
  description:
126
166
  email:
127
167
  - tammycravit@me.com
@@ -143,6 +183,7 @@ files:
143
183
  - Rakefile
144
184
  - bin/console
145
185
  - bin/setup
186
+ - certs/tammycravit.pem
146
187
  - exe/rotor_machine
147
188
  - images/Bundesarchiv_Enigma.jpg
148
189
  - images/File:Enigma_wiring_kleur.png
@@ -175,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
216
  version: '0'
176
217
  requirements: []
177
218
  rubyforge_project:
178
- rubygems_version: 2.7.3
219
+ rubygems_version: 2.7.5
179
220
  signing_key:
180
221
  specification_version: 4
181
222
  summary: Simple Enigma-like rotor machine in Ruby
Binary file