rotor_machine 1.0.13 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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