morse-code-rb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,5 @@
1
+ module MorseCode
2
+ class Error < StandardError; end
3
+
4
+ class NotSupported < Error; end
5
+ end
@@ -0,0 +1,3 @@
1
+ module MorseCode
2
+ VERSION = '0.1.0'.freeze
3
+ 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: []