rotor_machine 1.0.7 → 1.0.8

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: 6e9e73f3f0d0dc5bf22074adf36c6232392581112ecddd4134ecdc4f64f6dc94
4
- data.tar.gz: 934ff208c6cc22b67140633fdbca5f9b18c80a4c057448aad79b8c8859d3b562
3
+ metadata.gz: 3a7e50d8deefd24a72654bed701b68df31e6b2289ce9bc2f928ac36c1ddd242a
4
+ data.tar.gz: 3d9a59fa6535f19a90426413dece429cf90a14ed4ce8b7cca8dfc1471613a271
5
5
  SHA512:
6
- metadata.gz: 4430444a33c8caf979d1854bb48539af1e3da74989a5da10a55cb21b6a415e7bdc46156fd5ee0cfc9c5153488f8667f9fa4e96e13d599236aae7028a96e10156
7
- data.tar.gz: 0e4ffc2ff7a4ea276cc239d23a9b8bbf7fe1295f3dfc1376c3d23ed905cb04b4e3d04380fbfa8f8a9595c6c7f9800e4dabda9e434b104ccc4fa78b46cc049082
6
+ metadata.gz: 815e8ceadf35c3f90cc1438bae2e4ce5267a2c7c4bb08e45d24400126479710d6a99c77b877107cd371d7719f226ad231dc6f0e3fedcaf581acd0de507df4681
7
+ data.tar.gz: 07707fd41ae8daca01075496c38add7f555df67658ea5bc13d0dac6acb146db72b0573d002166e808b64a11144db7ea36860952ad8c79bfa2d6d97f4b4129bea
@@ -140,7 +140,7 @@ module RotorMachine
140
140
  def encipher(text)
141
141
  raise ArgumentError, "Cannot encipher; no rotors loaded" if (@rotors.count == 0)
142
142
  raise ArgumentError, "Cannot encipher; no reflector loaded" if (@reflector.nil?)
143
- RotorMachine::Machine.letter_blocks(text.upcase.chars.collect { |c| self.encipher_char(c) }.join(""), 5)
143
+ text.upcase.chars.collect { |c| self.encipher_char(c) }.join("").in_blocks_of(5)
144
144
  end
145
145
 
146
146
  ##
@@ -219,16 +219,5 @@ module RotorMachine
219
219
  end
220
220
  ec
221
221
  end
222
-
223
- ##
224
- # Reformat a string into blocks of letters of uniform size.
225
- #
226
- # @param the_text [String] The text to reformat.
227
- # @param block_size [Numeric] The size of the blocks of letters.
228
- # @return [String] The reformatted text.
229
- def self.letter_blocks(the_text, block_size)
230
- the_text.chars.reject{|s| s.match(/\s/)}.each_slice(block_size).map(&:join).join(" ")
231
- end
232
-
233
222
  end
234
223
  end
@@ -0,0 +1,35 @@
1
+ ##
2
+ # String extensions used by the {RotorMachine::Machine} to format output.
3
+ #
4
+ # @author Tammy Cravit <tammycravit@me.com>
5
+
6
+ class String
7
+ ##
8
+ # Break a string into blocks of a certain number of characters.
9
+ #
10
+ # Encrypted text is often presented in blocks of 5 characters to disguise
11
+ # word lengths in the ciphertext/plaintext. This method gives Ruby strings
12
+ # the ability to break themselves into blocks of no more than a specified
13
+ # number of characters.
14
+ #
15
+ # By default, the string is rejoined into a single string, with each
16
+ # character group separated by a space. To return the string as an array
17
+ # of chunks instead, pass a false value for the {rejoin} argument.
18
+ #
19
+ # @param block_size [Numeric] The maximum size of each block. Defaults
20
+ # to 5-character blocks if not provided.
21
+ # @param rejoin [Boolean] True to join the blocks back into a single
22
+ # string, false to return an array of chunks instead. Defaults to
23
+ # true.
24
+ # @return The string with each chunk separated by spaces, or an array of
25
+ # chunks if {rejoin} is false.
26
+ def in_blocks_of(block_size=5, rejoin=true)
27
+ if rejoin
28
+ self.chars.reject{|s| s.match(/\s/)}.each_slice(block_size).map(&:join).join(" ")
29
+ else
30
+ self.chars.reject{|s| s.match(/\s/)}.each_slice(block_size).map(&:join)
31
+ end
32
+ end
33
+
34
+ alias :in_blocks :in_blocks_of
35
+ end
@@ -1,4 +1,4 @@
1
1
  module RotorMachine
2
- VERSION_DATA = [1, 0, 7]
2
+ VERSION_DATA = [1, 0, 8]
3
3
  VERSION = VERSION_DATA.join(".")
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rotor_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tammy Cravit
@@ -107,6 +107,7 @@ files:
107
107
  - lib/rotor_machine/plugboard.rb
108
108
  - lib/rotor_machine/reflector.rb
109
109
  - lib/rotor_machine/rotor.rb
110
+ - lib/rotor_machine/string_extensions.rb
110
111
  - lib/rotor_machine/version.rb
111
112
  - rotor_machine.gemspec
112
113
  homepage: https://github.com/tammycravit/rotor_machine