Class: Mi100::Morsecoder
- Inherits:
-
Object
- Object
- Mi100::Morsecoder
- Defined in:
- lib/mi100/morsecoder.rb
Constant Summary collapse
- DEFAULT_MORSE_UNIT_MILLIS =
50- DEFAULT_MORSE_FREQUENCY =
4000- DEFAULT_LETTER_SPACE_DOTS =
3- DEFAULT_WORD_SPACE_DOTS =
7- MORSECODE =
{ "1" => [1,3,3,3,3], "2" => [1,1,3,3,3], "3" => [1,1,1,3,3], "4" => [1,1,1,1,3], "5" => [1,1,1,1,1], "6" => [3,1,1,1,1], "7" => [3,3,1,1,1], "8" => [3,3,3,1,1], "9" => [3,3,3,3,1], "0" => [3,3,3,3,3], "A" => [1,3], "B" => [3,1,1,1], "C" => [3,1,3,1], "D" => [3,1,1], "E" => [1], "F" => [1,1,3,1], "G" => [3,3,1], "H" => [1,1,1,1], "I" => [1,1], "J" => [1,3,3,3], "K" => [1,3,1,1], "L" => [1,3,1,1], "M" => [3,3], "N" => [3,1], "O" => [3,3,3], "P" => [1,3,3,1], "Q" => [3,3,1,3], "R" => [1,3,1], "S" => [1,1,1], "T" => [3], "U" => [1,1,3], "V" => [1,1,1,3], "W" => [1,3,3], "X" => [3,1,1,3], "Y" => [3,1,3,3], "Z" => [3,3,1,1], "." => [1,3,1,3,1,3], "," => [3,3,1,1,3,3], "?" => [1,1,3,3,1,1], "!" => [3,1,3,1,3,3], "-" => [3,1,1,1,1,3], "/" => [3,1,1,3,1], "@" => [1,3,3,1,3,1], "(" => [3,1,3,3,1], ")" => [3,1,3,3,1,3] }
Class Attribute Summary collapse
-
.default_frequency ⇒ Object
Returns the value of attribute default_frequency.
-
.default_unit ⇒ Object
Returns the value of attribute default_unit.
Instance Attribute Summary collapse
-
#frequency ⇒ Object
Returns the value of attribute frequency.
-
#str ⇒ Object
Returns the value of attribute str.
-
#unit ⇒ Object
Returns the value of attribute unit.
Class Method Summary collapse
- .reset ⇒ Object
- .to_morse_from(the_str, frequency = @default_frequency, unit = @default_unit) ⇒ Object
Instance Method Summary collapse
- #each ⇒ Object
-
#initialize(str = "HELLO WORLD", frequency = Morsecoder.default_frequency, unit = Morsecoder.default_unit) ⇒ Morsecoder
constructor
A new instance of Morsecoder.
- #to_morse ⇒ Object
Constructor Details
#initialize(str = "HELLO WORLD", frequency = Morsecoder.default_frequency, unit = Morsecoder.default_unit) ⇒ Morsecoder
105 106 107 108 109 |
# File 'lib/mi100/morsecoder.rb', line 105 def initialize(str="HELLO WORLD", frequency = Morsecoder.default_frequency, unit=Morsecoder.default_unit) @str = str @frequency = frequency @unit = unit end |
Class Attribute Details
.default_frequency ⇒ Object
Returns the value of attribute default_frequency.
71 72 73 |
# File 'lib/mi100/morsecoder.rb', line 71 def default_frequency @default_frequency end |
.default_unit ⇒ Object
Returns the value of attribute default_unit.
71 72 73 |
# File 'lib/mi100/morsecoder.rb', line 71 def default_unit @default_unit end |
Instance Attribute Details
#frequency ⇒ Object
Returns the value of attribute frequency.
103 104 105 |
# File 'lib/mi100/morsecoder.rb', line 103 def frequency @frequency end |
#str ⇒ Object
Returns the value of attribute str.
103 104 105 |
# File 'lib/mi100/morsecoder.rb', line 103 def str @str end |
#unit ⇒ Object
Returns the value of attribute unit.
103 104 105 |
# File 'lib/mi100/morsecoder.rb', line 103 def unit @unit end |
Class Method Details
.reset ⇒ Object
94 95 96 97 98 99 |
# File 'lib/mi100/morsecoder.rb', line 94 def reset @default_unit = DEFAULT_MORSE_UNIT_MILLIS @default_frequency = DEFAULT_MORSE_FREQUENCY @default_letter_space = DEFAULT_LETTER_SPACE_DOTS @default_word_space = DEFAULT_WORD_SPACE_DOTS end |
.to_morse_from(the_str, frequency = @default_frequency, unit = @default_unit) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/mi100/morsecoder.rb', line 73 def to_morse_from(the_str, frequency = @default_frequency, unit = @default_unit) letter_space = @default_letter_space word_space = @default_word_space morsecode = [] the_str.to_s.split(//).each do |char| code = MORSECODE[char.upcase] if code code.each do |dots| morsecode << {frequency: frequency, duration: unit * dots} morsecode << {frequency: false, duration: unit * dots} end morsecode << {frequency: false, duration: unit * letter_space} else morsecode << {frequency: false, duration: unit * word_space} end end morsecode end |
Instance Method Details
#each ⇒ Object
117 118 119 |
# File 'lib/mi100/morsecoder.rb', line 117 def each to_morse.each {|code| yield(code[:frequency], code[:duration])} end |
#to_morse ⇒ Object
111 112 113 114 115 |
# File 'lib/mi100/morsecoder.rb', line 111 def to_morse frequency = @frequency unit = @unit Morsecoder.to_morse_from(@str, frequency, unit) end |