morse 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README +17 -0
  2. data/lib/morse.rb +69 -0
  3. data/tests/test_morse.rb +15 -0
  4. metadata +47 -0
data/README ADDED
@@ -0,0 +1,17 @@
1
+ Ben's Morse Code Module
2
+ -----------------------
3
+
4
+ ben@bensinclair.com
5
+ http://www.BenSinclair.com
6
+
7
+ This software is released into the public domain with no warranty.
8
+
9
+ Usage:
10
+
11
+ require 'morse'
12
+
13
+ Morse.encode 'hello world' => ".... . .-.. .-.. --- .-- --- .-. .-.. -.."
14
+
15
+ Morse.decode '... --- ...' => "HELLO WORLD"
16
+
17
+
@@ -0,0 +1,69 @@
1
+ # Ben's Morse Code Module
2
+ # http://www.BenSinclair.com/articles/ruby-morse-code-module
3
+
4
+ module Morse
5
+
6
+ TO_MORSE_DATA = Hash.new
7
+ TO_MORSE_DATA['A']='.-'
8
+ TO_MORSE_DATA['B']='-...'
9
+ TO_MORSE_DATA['C']='-.-.'
10
+ TO_MORSE_DATA['D']='-..'
11
+ TO_MORSE_DATA['E']='.'
12
+ TO_MORSE_DATA['F']='..-.'
13
+ TO_MORSE_DATA['G']='--.'
14
+ TO_MORSE_DATA['H']='....'
15
+ TO_MORSE_DATA['I']='..'
16
+ TO_MORSE_DATA['J']='.---'
17
+ TO_MORSE_DATA['K']='-.-'
18
+ TO_MORSE_DATA['L']='.-..'
19
+ TO_MORSE_DATA['M']='--'
20
+ TO_MORSE_DATA['N']='-.'
21
+ TO_MORSE_DATA['O']='---'
22
+ TO_MORSE_DATA['P']='.--.'
23
+ TO_MORSE_DATA['Q']='--.-'
24
+ TO_MORSE_DATA['R']='.-.'
25
+ TO_MORSE_DATA['S']='...'
26
+ TO_MORSE_DATA['T']='-'
27
+ TO_MORSE_DATA['U']='..-'
28
+ TO_MORSE_DATA['V']='...-'
29
+ TO_MORSE_DATA['W']='.--'
30
+ TO_MORSE_DATA['X']='-..-'
31
+ TO_MORSE_DATA['Y']='-.--'
32
+ TO_MORSE_DATA['Z']='--..'
33
+ TO_MORSE_DATA['0']='-----'
34
+ TO_MORSE_DATA['1']='.----'
35
+ TO_MORSE_DATA['2']='..---'
36
+ TO_MORSE_DATA['3']='...--'
37
+ TO_MORSE_DATA['4']='....-'
38
+ TO_MORSE_DATA['5']='.....'
39
+ TO_MORSE_DATA['6']='-....'
40
+ TO_MORSE_DATA['7']='--...'
41
+ TO_MORSE_DATA['8']='---..'
42
+ TO_MORSE_DATA['9']='----.'
43
+ FROM_MORSE_DATA = TO_MORSE_DATA.invert
44
+
45
+ # Encodes text to morse code.
46
+ def Morse.encode(text)
47
+ result = ""
48
+ text.upcase.split('').each {|letter|
49
+ result << ' ' if letter == ' '
50
+ result << TO_MORSE_DATA[letter] << ' ' unless letter == ' ' or TO_MORSE_DATA[letter] == nil
51
+ }
52
+ result.chop
53
+ end
54
+
55
+ # Decodes morse code to text
56
+ def Morse.decode(morse)
57
+ result = ""
58
+ morse.upcase.split(' ').each {|word|
59
+ word.split(' ').each {|code|
60
+ result << '?' if FROM_MORSE_DATA[code] == nil
61
+ result << FROM_MORSE_DATA[code] unless FROM_MORSE_DATA[code] == nil
62
+ }
63
+ result << ' '
64
+ }
65
+ result.chop
66
+ end
67
+
68
+ end
69
+
@@ -0,0 +1,15 @@
1
+ require 'morse'
2
+ require 'test/unit'
3
+
4
+ class TestMorse < Test::Unit::TestCase
5
+
6
+ def test_encode
7
+ assert_equal('.... . .-.. .-.. --- .-- --- .-. .-.. -..', Morse.encode('hello world') )
8
+ end
9
+
10
+ def test_decode
11
+ assert_equal('HELLO WORLD', Morse.decode('.... . .-.. .-.. --- .-- --- .-. .-.. -..'))
12
+ end
13
+
14
+
15
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
4
+ name: morse
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2007-01-31 00:00:00 -06:00
8
+ summary: Converts text to and from morse code
9
+ require_paths:
10
+ - lib
11
+ email: ben@bensinclair.com
12
+ homepage:
13
+ rubyforge_project:
14
+ description:
15
+ autorequire: morse
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Ben Sinclair
31
+ files:
32
+ - lib/morse.rb
33
+ - README
34
+ test_files:
35
+ - tests/test_morse.rb
36
+ rdoc_options: []
37
+
38
+ extra_rdoc_files:
39
+ - README
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ requirements: []
45
+
46
+ dependencies: []
47
+