obfuscated_morse_code 0.1.3 → 0.2.0
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 +4 -4
- data/bin/obfuscate +1 -1
- data/lib/obfuscated_morse_code/morse_code_obfuscator.rb +58 -0
- data/lib/obfuscated_morse_code/version.rb +1 -1
- data/lib/obfuscated_morse_code.rb +13 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8398f487a3f1122e909226572a2ca48be0a16242c15fa80f29f3bd1bb013446
|
4
|
+
data.tar.gz: 8ab719c72e2461b4b8404049905f5acf5691bd7377b537a3c126671adbaa8f57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee2db4e7036581d8dc57db8a09eee36f41b567c6006112b3cb98f1f25db129474fc86e21c76a7b2a6e1d498a61465aead06dbd70cfd522fbac29bd2ec388e07b
|
7
|
+
data.tar.gz: acd445e5a0f19bec7471d3ca46251a90e359dcc3a9454c6040b8055e158e8fbb744b57ccd3a4759f9bcd76e3edd0a9c274c3b47c687779f827b49e62fa5ff572
|
data/bin/obfuscate
CHANGED
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ObfuscatedMorseCode
|
4
|
+
DASH_OBFUSCATION_DICTIONARY = %w[A B C D E].freeze
|
5
|
+
|
6
|
+
class MorseCodeObfuscator
|
7
|
+
attr_reader :morse_codes
|
8
|
+
|
9
|
+
def initialize(morse_codes)
|
10
|
+
@morse_codes = morse_codes
|
11
|
+
end
|
12
|
+
|
13
|
+
def obfuscate
|
14
|
+
morse_codes.map do |code|
|
15
|
+
obfuscated = replace_dots_with_numbers(code)
|
16
|
+
replace_dashes_with_characters(obfuscated)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def replace_dots_with_numbers(code)
|
23
|
+
obfuscated_code = ''
|
24
|
+
number_of_dots_found = 0
|
25
|
+
code.split('').each do |character|
|
26
|
+
if character == '.'
|
27
|
+
number_of_dots_found += 1
|
28
|
+
else
|
29
|
+
if number_of_dots_found.positive?
|
30
|
+
obfuscated_code += number_of_dots_found.to_s
|
31
|
+
end
|
32
|
+
obfuscated_code += character
|
33
|
+
number_of_dots_found = 0
|
34
|
+
end
|
35
|
+
end
|
36
|
+
obfuscated_code += number_of_dots_found.to_s if number_of_dots_found.positive?
|
37
|
+
obfuscated_code
|
38
|
+
end
|
39
|
+
|
40
|
+
def replace_dashes_with_characters(code)
|
41
|
+
obfuscated_code = ''
|
42
|
+
number_of_dashes_found = 0
|
43
|
+
code.split('').each do |character|
|
44
|
+
if character == '-'
|
45
|
+
number_of_dashes_found += 1
|
46
|
+
else
|
47
|
+
if number_of_dashes_found.positive?
|
48
|
+
obfuscated_code += DASH_OBFUSCATION_DICTIONARY[number_of_dashes_found - 1]
|
49
|
+
end
|
50
|
+
obfuscated_code += character
|
51
|
+
number_of_dashes_found = 0
|
52
|
+
end
|
53
|
+
end
|
54
|
+
obfuscated_code += DASH_OBFUSCATION_DICTIONARY[number_of_dashes_found - 1] if number_of_dashes_found.positive?
|
55
|
+
obfuscated_code
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -3,11 +3,24 @@
|
|
3
3
|
require 'obfuscated_morse_code/version'
|
4
4
|
require 'obfuscated_morse_code/file_parser'
|
5
5
|
require 'obfuscated_morse_code/morse_code_translator'
|
6
|
+
require 'obfuscated_morse_code/morse_code_obfuscator'
|
6
7
|
|
7
8
|
module ObfuscatedMorseCode
|
8
9
|
def self.morse_code(file_path)
|
9
10
|
parsed_text = FileParser.new(file_path).parse
|
10
11
|
MorseCodeTranslator.new.translate(parsed_text).join("\n")
|
12
|
+
rescue ArgumentError => e
|
13
|
+
puts e.message
|
14
|
+
rescue FileParser::FileNotFoundError => e
|
15
|
+
puts e.message
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.obfuscated_morse_code(file_path)
|
19
|
+
parsed_text = FileParser.new(file_path).parse
|
20
|
+
morse_code = MorseCodeTranslator.new.translate(parsed_text)
|
21
|
+
MorseCodeObfuscator.new(morse_code).obfuscate.join("\n")
|
22
|
+
rescue ArgumentError => e
|
23
|
+
puts e.message
|
11
24
|
rescue FileParser::FileNotFoundError => e
|
12
25
|
puts e.message
|
13
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: obfuscated_morse_code
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Svoboda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/obfuscated_morse_code.rb
|
87
87
|
- lib/obfuscated_morse_code/dictionary.rb
|
88
88
|
- lib/obfuscated_morse_code/file_parser.rb
|
89
|
+
- lib/obfuscated_morse_code/morse_code_obfuscator.rb
|
89
90
|
- lib/obfuscated_morse_code/morse_code_translator.rb
|
90
91
|
- lib/obfuscated_morse_code/version.rb
|
91
92
|
- obfuscated_morse_code-0.1.2.gem
|