morse-code-rb 0.4.0 → 0.5.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 +6 -1
- data/lib/morse_code.rb +1 -0
- data/lib/morse_code/base.rb +13 -3
- data/lib/morse_code/cacheable.rb +16 -0
- data/lib/morse_code/decoder.rb +5 -5
- data/lib/morse_code/decoders/chinese.rb +1 -1
- data/lib/morse_code/decoders/english.rb +1 -1
- data/lib/morse_code/encoder.rb +5 -5
- data/lib/morse_code/encoders/chinese.rb +1 -1
- data/lib/morse_code/encoders/english.rb +1 -1
- data/lib/morse_code/version.rb +1 -1
- 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: 9263cb71a4b0825bf8c972a69d46a3b2461c7769ac77fe7d6aa1703bf0d90738
|
4
|
+
data.tar.gz: 150bcd7cc8363c9dd9b16c860941000d8884568c215786da5322a7d719e7fd26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eddd17a7394c4175351df3846a6386cc093ebad82eaf534517d6482e0b329558f60b14791ec5074c03ed34c8b83e9a4876bfa214e8ad523927d6eabbd85e589b
|
7
|
+
data.tar.gz: 5ad8cfdf1eb2746d7a71290041f43d4519d7ee380159f89ed172bd52593f157c9377b1cd88058610cbdee9e266bac9d7405ba037571a828ccac54594b16c7e40
|
data/README.md
CHANGED
@@ -103,7 +103,7 @@ $> mc -e 'I am Robot.' --dit-dah
|
|
103
103
|
=> "DITDIT / DITDAH DAHDAH / DITDAHDIT DAHDAHDAH DAHDITDITDIT DAHDAHDAH DAH DITDAHDITDAHDITDAH"
|
104
104
|
|
105
105
|
$> mc -e 'I am Chinese 我是中国人'
|
106
|
-
|
106
|
+
=> ".. / .- -- / -.-. .... .. -. . ... . / --...-....-...- --..--...-.---- -..---...-.--.- -.-.--.------.- -..---.-.---.-."
|
107
107
|
|
108
108
|
$> mc -e -w 'I am Chinese 我是中国人'
|
109
109
|
=> ".. / .- -- / -.-. .... .. -. . ... . / --...-....-...- --..--...-.---- -..---...-.--.- -.-.--.------.- -..---.-.---.-."
|
@@ -151,6 +151,11 @@ $ bundle exec rake test
|
|
151
151
|
|
152
152
|
Click the `'Pull Request'` button and fill out the form.
|
153
153
|
|
154
|
+
### Resource
|
155
|
+
- [Learn More Code](http://www.learnmorsecode.com/)
|
156
|
+
- [Morse Pro](https://github.com/scp93ch/morse-pro)
|
157
|
+
- [Wavefile](https://github.com/jstrait/wavefile)
|
158
|
+
|
154
159
|
### License
|
155
160
|
|
156
161
|
MIT License. See [LICENSE](https://github.com/superiorlu/morse_code/blob/master/LICENSE.md) for details.
|
data/lib/morse_code.rb
CHANGED
data/lib/morse_code/base.rb
CHANGED
@@ -9,14 +9,24 @@ module MorseCode
|
|
9
9
|
@@subclasses << subclass
|
10
10
|
end
|
11
11
|
|
12
|
-
attr_reader :word
|
12
|
+
attr_reader :word, :namespace
|
13
13
|
|
14
|
-
def initialize(word = '')
|
14
|
+
def initialize(word = '', namespace = '')
|
15
15
|
@word = word
|
16
|
+
@namespace = namespace
|
16
17
|
end
|
17
18
|
|
18
19
|
def supported?
|
19
|
-
raise NotImplementedError, 'Subclass must override supported? method'
|
20
|
+
raise MorseCode::NotImplementedError, 'Subclass must override supported? method'
|
21
|
+
end
|
22
|
+
|
23
|
+
def call
|
24
|
+
return supported_class.new(word).call if supported_class
|
25
|
+
word
|
26
|
+
end
|
27
|
+
|
28
|
+
def supported_class
|
29
|
+
supported_classes.detect { |clazz| clazz.name.start_with?(namespace) }
|
20
30
|
end
|
21
31
|
|
22
32
|
def supported_classes
|
data/lib/morse_code/decoder.rb
CHANGED
@@ -7,6 +7,8 @@ require 'morse_code/decoders/english'
|
|
7
7
|
|
8
8
|
module MorseCode
|
9
9
|
class Decoder
|
10
|
+
include MorseCode::Cacheable
|
11
|
+
|
10
12
|
def initialize(message = '')
|
11
13
|
@message = message.dup
|
12
14
|
end
|
@@ -35,11 +37,9 @@ module MorseCode
|
|
35
37
|
private
|
36
38
|
|
37
39
|
def decode_char(char)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
char
|
40
|
+
fetch(char) do
|
41
|
+
MorseCode::Base.new(char, self.class.name).call
|
42
|
+
end
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
data/lib/morse_code/encoder.rb
CHANGED
@@ -7,6 +7,8 @@ require 'morse_code/encoders/english'
|
|
7
7
|
|
8
8
|
module MorseCode
|
9
9
|
class Encoder
|
10
|
+
include MorseCode::Cacheable
|
11
|
+
|
10
12
|
def initialize(message = '')
|
11
13
|
@message = message.upcase
|
12
14
|
end
|
@@ -38,11 +40,9 @@ module MorseCode
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def encode_letter(letter)
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
letter
|
43
|
+
fetch(letter) do
|
44
|
+
MorseCode::Base.new(letter, self.class.name).call
|
45
|
+
end
|
46
46
|
end
|
47
47
|
end
|
48
48
|
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.5.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-
|
11
|
+
date: 2018-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -205,6 +205,7 @@ files:
|
|
205
205
|
- bin/mc
|
206
206
|
- lib/morse_code.rb
|
207
207
|
- lib/morse_code/base.rb
|
208
|
+
- lib/morse_code/cacheable.rb
|
208
209
|
- lib/morse_code/cli.rb
|
209
210
|
- lib/morse_code/decoder.rb
|
210
211
|
- lib/morse_code/decoders/chinese.rb
|