morse-code-rb 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -0
- data/bin/mc +6 -0
- data/lib/morse_code.rb +1 -0
- data/lib/morse_code/cli.rb +29 -0
- data/lib/morse_code/decoder.rb +4 -4
- data/lib/morse_code/encoder.rb +4 -4
- data/lib/morse_code/version.rb +1 -1
- metadata +23 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 155330eb3dfc7d3b1520f0a7dbce2fe62a439eb03d4b05f4d0a00018913efb8a
|
4
|
+
data.tar.gz: 2df9d246a942f2b8ad5bb0d24439c71ce5113ef0d100df093abd073d9bf8d1f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee66e59f359e292c01c47510d300523157ab4949c7efeab3cf631e633596f67c805ff37726fbbb2939b807042294a678e8c274a45f4e09d3416ccf1beef079c8
|
7
|
+
data.tar.gz: ca7c65f814ec6f36375cdf4ab8ed81ae38883e66d9b9c5cf00440f746615eb493e7433655d2b637d9d0596a31499b7b4561458ea6756e5a4cfdf0c73b63f7d95
|
data/README.md
CHANGED
@@ -51,6 +51,36 @@ puts dit_dah_to
|
|
51
51
|
$> I A M R O B O T .
|
52
52
|
```
|
53
53
|
|
54
|
+
### Terminal
|
55
|
+
|
56
|
+
```shell
|
57
|
+
$> mc
|
58
|
+
mc commands:
|
59
|
+
mc decode MESSAGE # decode Morse Code as original message
|
60
|
+
mc encode MESSAGE # encode message as Morse Code
|
61
|
+
mc help [COMMAND] # Describe available commands or one specific command
|
62
|
+
```
|
63
|
+
|
64
|
+
#### encode
|
65
|
+
|
66
|
+
```shell
|
67
|
+
$> mc -e 'I am Robot.'
|
68
|
+
.. .- -- .-. --- -... --- - .-.-.-
|
69
|
+
|
70
|
+
$> mc -e 'I am Robot.' --dit-dah
|
71
|
+
DITDIT DITDAH DAHDAH DITDAHDIT DAHDAHDAH DAHDITDITDIT DAHDAHDAH DAH DITDAHDITDAHDITDAH
|
72
|
+
```
|
73
|
+
|
74
|
+
#### decode
|
75
|
+
|
76
|
+
```shell
|
77
|
+
$> mc -d '.. .- -- .-. --- -... --- - .-.-.-'
|
78
|
+
I A M R O B O T .
|
79
|
+
|
80
|
+
$> mc -d 'DITDIT DITDAH DAHDAH DITDAHDIT DAHDAHDAH DAHDITDITDIT DAHDAHDAH DAH DITDAHDITDAHDITDAH' --dit-dah
|
81
|
+
I A M R O B O T .
|
82
|
+
```
|
83
|
+
|
54
84
|
### Contributing
|
55
85
|
|
56
86
|
#### Fork the Project
|
data/bin/mc
ADDED
data/lib/morse_code.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module MorseCode
|
4
|
+
class Cli < Thor
|
5
|
+
package_name 'mc'
|
6
|
+
map '-e' => :encode
|
7
|
+
map '-d' => :decode
|
8
|
+
|
9
|
+
desc 'encode MESSAGE', 'encode message as Morse Code'
|
10
|
+
method_option :dit_dah, aliases: '-d', type: :boolean, desc: 'encode DITDAH message'
|
11
|
+
def encode(message = '')
|
12
|
+
if options[:dit_dah]
|
13
|
+
puts MorseCode::Encoder.new(message).dit_dah
|
14
|
+
else
|
15
|
+
puts MorseCode::Encoder.new(message).encode
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'decode MESSAGE', 'decode Morse Code as original message'
|
20
|
+
method_option :dit_dah, aliases: '-d', type: :boolean, desc: 'decode from DITDAH message'
|
21
|
+
def decode(message = '')
|
22
|
+
if options[:dit_dah]
|
23
|
+
puts MorseCode::Decoder.new(message).dit_dah_to
|
24
|
+
else
|
25
|
+
puts MorseCode::Decoder.new(message).decode
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/morse_code/decoder.rb
CHANGED
@@ -2,20 +2,20 @@ require 'morse_code/error'
|
|
2
2
|
|
3
3
|
module MorseCode
|
4
4
|
class Decoder
|
5
|
-
def initialize(
|
6
|
-
@
|
5
|
+
def initialize(message = '')
|
6
|
+
@message = message.dup
|
7
7
|
end
|
8
8
|
|
9
9
|
def decode
|
10
10
|
[].tap do |decode_words|
|
11
|
-
@
|
11
|
+
@message.split(/\s+/).each do |word|
|
12
12
|
decode_words << (MorseCode::DECODE_MAP[word] || word)
|
13
13
|
end
|
14
14
|
end.join(' ')
|
15
15
|
end
|
16
16
|
|
17
17
|
def decode_with
|
18
|
-
@
|
18
|
+
@message.tap { |message| message.gsub!('DIT', '.'); message.gsub!('DAH', '-') }
|
19
19
|
decode
|
20
20
|
end
|
21
21
|
alias dit_dah_to decode_with
|
data/lib/morse_code/encoder.rb
CHANGED
@@ -2,13 +2,13 @@ require 'morse_code/error'
|
|
2
2
|
|
3
3
|
module MorseCode
|
4
4
|
class Encoder
|
5
|
-
def initialize(
|
6
|
-
@
|
5
|
+
def initialize(message = '')
|
6
|
+
@message = message.upcase
|
7
7
|
end
|
8
8
|
|
9
9
|
def encode
|
10
10
|
[].tap do |encode_words|
|
11
|
-
@
|
11
|
+
@message.split(/\s+/).each do |word|
|
12
12
|
encode_word = []
|
13
13
|
word.each_char { |char| encode_word << (MorseCode::ENCODE_MAP[char] || char) }
|
14
14
|
encode_words.concat(encode_word)
|
@@ -17,7 +17,7 @@ module MorseCode
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def encode_with
|
20
|
-
encode.tap { |
|
20
|
+
encode.tap { |message| message.gsub!('.', 'DIT'); message.gsub!('-', 'DAH') }
|
21
21
|
end
|
22
22
|
alias dit_dah encode_with
|
23
23
|
end
|
data/lib/morse_code/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: morse-code-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YingRui Lu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,15 +122,32 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0.59'
|
125
|
-
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: thor
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.19'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.19'
|
139
|
+
description:
|
126
140
|
email:
|
127
141
|
- luyingrui518@gmail.com
|
128
|
-
executables:
|
142
|
+
executables:
|
143
|
+
- mc
|
129
144
|
extensions: []
|
130
145
|
extra_rdoc_files: []
|
131
146
|
files:
|
132
147
|
- README.md
|
148
|
+
- bin/mc
|
133
149
|
- lib/morse_code.rb
|
150
|
+
- lib/morse_code/cli.rb
|
134
151
|
- lib/morse_code/decoder.rb
|
135
152
|
- lib/morse_code/encoder.rb
|
136
153
|
- lib/morse_code/error.rb
|
@@ -148,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
148
165
|
requirements:
|
149
166
|
- - ">="
|
150
167
|
- !ruby/object:Gem::Version
|
151
|
-
version:
|
168
|
+
version: 2.0.0
|
152
169
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
170
|
requirements:
|
154
171
|
- - ">="
|
@@ -159,5 +176,5 @@ rubyforge_project:
|
|
159
176
|
rubygems_version: 2.7.6
|
160
177
|
signing_key:
|
161
178
|
specification_version: 4
|
162
|
-
summary: Morse Code Tool
|
179
|
+
summary: Simple Morse Code Encode and Decode Tool
|
163
180
|
test_files: []
|