morse-code-rb 0.1.0 → 0.2.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 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: []