morse-code-rb 0.1.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 +7 -0
- data/README.md +84 -0
- data/lib/morse_code/decoder.rb +23 -0
- data/lib/morse_code/encoder.rb +24 -0
- data/lib/morse_code/error.rb +5 -0
- data/lib/morse_code/version.rb +3 -0
- data/lib/morse_code.rb +37 -0
- metadata +163 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 774ca117cba1ba7eb055471142761b9ff2eb54a1fdc05fd6b1f5c064a48fee77
|
4
|
+
data.tar.gz: ba6921453972d99a4bfd053441f062a494f62669b295ad0bd16ffa5e0241e5a1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ace75aa5daed66c5ed36cc9a27187497afe86ee5dc20797632e0814ac5717244740fbd0dbd68bec235650baaa759d64e49cac552634bad0e135786fa3699d258
|
7
|
+
data.tar.gz: 8fdb79b0529437e94ac31664cb61580e9b99b3f9af801b511437de949b1b57454c6947769dd6e581e69c07e57cd9de20da88ba0b80876ef1a447c7cae8da839c
|
data/README.md
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
# MorseCode
|
2
|
+
|
3
|
+
Simple Morse Code Encode and Decode Tool
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'morse-code-rb'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install morse-code-rb
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
### Encode
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
require 'morse_code'
|
27
|
+
|
28
|
+
content = 'I am Robot.'
|
29
|
+
encode_content = MorseCode::Encoder.new(content).encode
|
30
|
+
dit_dah = MorseCode::Encoder.new(content).dit_dah
|
31
|
+
puts encode_content
|
32
|
+
puts dit_dah
|
33
|
+
|
34
|
+
$> .. .- -- .-. --- -... --- - .-.-.-
|
35
|
+
$> DITDIT DITDAH DAHDAH DITDAHDIT DAHDAHDAH DAHDITDITDIT DAHDAHDAH DAH DITDAHDITDAHDITDAH
|
36
|
+
```
|
37
|
+
|
38
|
+
### Decode
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
require 'morse_code'
|
42
|
+
|
43
|
+
content = '.. .- -- .-. --- -... --- - .-.-.-'
|
44
|
+
decode_content = MorseCode::Decoder.new(content).decode
|
45
|
+
puts decode_content
|
46
|
+
$> I A M R O B O T .
|
47
|
+
|
48
|
+
dit_dah = 'DITDIT DITDAH DAHDAH DITDAHDIT DAHDAHDAH DAHDITDITDIT DAHDAHDAH DAH DITDAHDITDAHDITDAH'
|
49
|
+
dit_dah_to = MorseCode::Decoder.new(dit_dah).dit_dah_to
|
50
|
+
puts dit_dah_to
|
51
|
+
$> I A M R O B O T .
|
52
|
+
```
|
53
|
+
|
54
|
+
### Contributing
|
55
|
+
|
56
|
+
#### Fork the Project
|
57
|
+
|
58
|
+
```shell
|
59
|
+
$ git https://github.com/superiorlu/morse_code.git
|
60
|
+
$ cd morse_code
|
61
|
+
$ git remote add upstream https://github.com/superiorlu/morse_code.git
|
62
|
+
```
|
63
|
+
|
64
|
+
#### Create a Toptic Branch
|
65
|
+
|
66
|
+
```shell
|
67
|
+
$ git checkout master
|
68
|
+
$ git pull upstream master
|
69
|
+
$ git checkout -b my-feature-branch
|
70
|
+
```
|
71
|
+
|
72
|
+
#### Run Test
|
73
|
+
|
74
|
+
```shell
|
75
|
+
$ bundle exec rake test
|
76
|
+
```
|
77
|
+
|
78
|
+
#### Make a Pull Request
|
79
|
+
|
80
|
+
Click the `'Pull Request'` button and fill out the form.
|
81
|
+
|
82
|
+
### License
|
83
|
+
|
84
|
+
MIT License. See [LICENSE](https://github.com/superiorlu/morse_code/blob/master/LICENSE.md) for details.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'morse_code/error'
|
2
|
+
|
3
|
+
module MorseCode
|
4
|
+
class Decoder
|
5
|
+
def initialize(content = '')
|
6
|
+
@content = content
|
7
|
+
end
|
8
|
+
|
9
|
+
def decode
|
10
|
+
[].tap do |decode_words|
|
11
|
+
@content.split(/\s+/).each do |word|
|
12
|
+
decode_words << (MorseCode::DECODE_MAP[word] || word)
|
13
|
+
end
|
14
|
+
end.join(' ')
|
15
|
+
end
|
16
|
+
|
17
|
+
def decode_with
|
18
|
+
@content.tap { |content| content.gsub!('DIT', '.'); content.gsub!('DAH', '-') }
|
19
|
+
decode
|
20
|
+
end
|
21
|
+
alias dit_dah_to decode_with
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'morse_code/error'
|
2
|
+
|
3
|
+
module MorseCode
|
4
|
+
class Encoder
|
5
|
+
def initialize(content = '')
|
6
|
+
@content = content.upcase
|
7
|
+
end
|
8
|
+
|
9
|
+
def encode
|
10
|
+
[].tap do |encode_words|
|
11
|
+
@content.split(/\s+/).each do |word|
|
12
|
+
encode_word = []
|
13
|
+
word.each_char { |char| encode_word << (MorseCode::ENCODE_MAP[char] || char) }
|
14
|
+
encode_words.concat(encode_word)
|
15
|
+
end
|
16
|
+
end.join(' ')
|
17
|
+
end
|
18
|
+
|
19
|
+
def encode_with
|
20
|
+
encode.tap { |content| content.gsub!('.', 'DIT'); content.gsub!('-', 'DAH') }
|
21
|
+
end
|
22
|
+
alias dit_dah encode_with
|
23
|
+
end
|
24
|
+
end
|
data/lib/morse_code.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'morse_code/version'
|
2
|
+
require 'morse_code/error'
|
3
|
+
require 'morse_code/encoder'
|
4
|
+
require 'morse_code/decoder'
|
5
|
+
|
6
|
+
module MorseCode
|
7
|
+
ENCODE_MAP = Hash[*%w/
|
8
|
+
A .- 1 .----
|
9
|
+
B -... 2 ..---
|
10
|
+
C -.-. 3 ...--
|
11
|
+
D -.. 4 ....-
|
12
|
+
E . 5 .....
|
13
|
+
F ..-. 6 -....
|
14
|
+
G --. 7 --...
|
15
|
+
H .... 8 ---..
|
16
|
+
I .. 9 ----.
|
17
|
+
J .--- 0 -----
|
18
|
+
K -.- . .-.-.-
|
19
|
+
L .-.. , --..--
|
20
|
+
M -- ? ..--..
|
21
|
+
N -. \/ -..-.
|
22
|
+
O --- : ---...
|
23
|
+
P .--. ; -.-.-.
|
24
|
+
Q --.- = -...-
|
25
|
+
R .-. + .-.-.
|
26
|
+
S ... - -....-
|
27
|
+
T - _ ..--.-
|
28
|
+
U ..- " .-..-.
|
29
|
+
V ...- $ ...-..-
|
30
|
+
W .-- @ .--.-.
|
31
|
+
X -..-
|
32
|
+
Y -.--
|
33
|
+
Z --..
|
34
|
+
/]
|
35
|
+
|
36
|
+
DECODE_MAP = ENCODE_MAP.invert
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: morse-code-rb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- YingRui Lu
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: guard
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.14'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.14'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: guard-minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.4'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.11'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.11'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest-reporters
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.11'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.11'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '10.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '10.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.59'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.59'
|
125
|
+
description: Morse Code Tool
|
126
|
+
email:
|
127
|
+
- luyingrui518@gmail.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- README.md
|
133
|
+
- lib/morse_code.rb
|
134
|
+
- lib/morse_code/decoder.rb
|
135
|
+
- lib/morse_code/encoder.rb
|
136
|
+
- lib/morse_code/error.rb
|
137
|
+
- lib/morse_code/version.rb
|
138
|
+
homepage: https://github.com/superiorlu/morse_code
|
139
|
+
licenses:
|
140
|
+
- MIT
|
141
|
+
metadata:
|
142
|
+
allowed_push_host: https://rubygems.org
|
143
|
+
post_install_message:
|
144
|
+
rdoc_options: []
|
145
|
+
require_paths:
|
146
|
+
- lib
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
requirements: []
|
158
|
+
rubyforge_project:
|
159
|
+
rubygems_version: 2.7.6
|
160
|
+
signing_key:
|
161
|
+
specification_version: 4
|
162
|
+
summary: Morse Code Tool
|
163
|
+
test_files: []
|