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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 774ca117cba1ba7eb055471142761b9ff2eb54a1fdc05fd6b1f5c064a48fee77
4
- data.tar.gz: ba6921453972d99a4bfd053441f062a494f62669b295ad0bd16ffa5e0241e5a1
3
+ metadata.gz: 155330eb3dfc7d3b1520f0a7dbce2fe62a439eb03d4b05f4d0a00018913efb8a
4
+ data.tar.gz: 2df9d246a942f2b8ad5bb0d24439c71ce5113ef0d100df093abd073d9bf8d1f7
5
5
  SHA512:
6
- metadata.gz: ace75aa5daed66c5ed36cc9a27187497afe86ee5dc20797632e0814ac5717244740fbd0dbd68bec235650baaa759d64e49cac552634bad0e135786fa3699d258
7
- data.tar.gz: 8fdb79b0529437e94ac31664cb61580e9b99b3f9af801b511437de949b1b57454c6947769dd6e581e69c07e57cd9de20da88ba0b80876ef1a447c7cae8da839c
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
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'morse_code'
5
+
6
+ MorseCode::Cli.start
data/lib/morse_code.rb CHANGED
@@ -2,6 +2,7 @@ require 'morse_code/version'
2
2
  require 'morse_code/error'
3
3
  require 'morse_code/encoder'
4
4
  require 'morse_code/decoder'
5
+ require 'morse_code/cli'
5
6
 
6
7
  module MorseCode
7
8
  ENCODE_MAP = Hash[*%w/
@@ -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
@@ -2,20 +2,20 @@ require 'morse_code/error'
2
2
 
3
3
  module MorseCode
4
4
  class Decoder
5
- def initialize(content = '')
6
- @content = content
5
+ def initialize(message = '')
6
+ @message = message.dup
7
7
  end
8
8
 
9
9
  def decode
10
10
  [].tap do |decode_words|
11
- @content.split(/\s+/).each do |word|
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
- @content.tap { |content| content.gsub!('DIT', '.'); content.gsub!('DAH', '-') }
18
+ @message.tap { |message| message.gsub!('DIT', '.'); message.gsub!('DAH', '-') }
19
19
  decode
20
20
  end
21
21
  alias dit_dah_to decode_with
@@ -2,13 +2,13 @@ require 'morse_code/error'
2
2
 
3
3
  module MorseCode
4
4
  class Encoder
5
- def initialize(content = '')
6
- @content = content.upcase
5
+ def initialize(message = '')
6
+ @message = message.upcase
7
7
  end
8
8
 
9
9
  def encode
10
10
  [].tap do |encode_words|
11
- @content.split(/\s+/).each do |word|
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 { |content| content.gsub!('.', 'DIT'); content.gsub!('-', 'DAH') }
20
+ encode.tap { |message| message.gsub!('.', 'DIT'); message.gsub!('-', 'DAH') }
21
21
  end
22
22
  alias dit_dah encode_with
23
23
  end
@@ -1,3 +1,3 @@
1
1
  module MorseCode
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
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.1.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-05 00:00:00.000000000 Z
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
- description: Morse Code Tool
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: '0'
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: []