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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c291b4a2d14a6c8f1568ac27654bfa1b0861ec0531c33478a6de28c89e7dc36a
4
- data.tar.gz: e33404ef7e77e7203a7fd4a5454872d0bb8df8bbcc098fdf656d1e151d850a82
3
+ metadata.gz: e8398f487a3f1122e909226572a2ca48be0a16242c15fa80f29f3bd1bb013446
4
+ data.tar.gz: 8ab719c72e2461b4b8404049905f5acf5691bd7377b537a3c126671adbaa8f57
5
5
  SHA512:
6
- metadata.gz: d4f8e0715a05ec46a3f2973e70fe026d00eac55cf4ea31e9a24a34fbc13b6d954730e7399fd3403b25ee4fa81c5d5598dbd9f391846a0b3622b69d974d5c8d49
7
- data.tar.gz: 7cba4d4736c2be22ea339e17042ccc46e79563da4622c355a25b61428f36930808f724561d5621e43c611956a4d94f139e18b52dd834b250bd853627d26b2d95
6
+ metadata.gz: ee2db4e7036581d8dc57db8a09eee36f41b567c6006112b3cb98f1f25db129474fc86e21c76a7b2a6e1d498a61465aead06dbd70cfd522fbac29bd2ec388e07b
7
+ data.tar.gz: acd445e5a0f19bec7471d3ca46251a90e359dcc3a9454c6040b8055e158e8fbb744b57ccd3a4759f9bcd76e3edd0a9c274c3b47c687779f827b49e62fa5ff572
data/bin/obfuscate CHANGED
@@ -3,4 +3,4 @@
3
3
  require 'bundler/setup'
4
4
  require 'obfuscated_morse_code'
5
5
 
6
- puts ObfuscatedMorseCode.morse_code(ARGV[0])
6
+ puts ObfuscatedMorseCode.obfuscated_morse_code(ARGV[0])
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ObfuscatedMorseCode
4
- VERSION = '0.1.3'
4
+ VERSION = '0.2.0'
5
5
  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.1.3
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-12 00:00:00.000000000 Z
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