class Mi100::Morsecoder

Constants

DEFAULT_LETTER_SPACE_DOTS
DEFAULT_MORSE_FREQUENCY
DEFAULT_MORSE_UNIT_MILLIS
DEFAULT_WORD_SPACE_DOTS
MORSECODE

Attributes

default_frequency[RW]
default_unit[RW]
frequency[RW]
str[RW]
unit[RW]

Public Class Methods

new(str="HELLO WORLD", frequency = Morsecoder.default_frequency, unit=Morsecoder.default_unit) click to toggle source
# 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
reset() click to toggle source
# 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) click to toggle source
# 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

Public Instance Methods

each() { |code, code| ... } click to toggle source
# File lib/mi100/morsecoder.rb, line 117
def each
  to_morse.each {|code| yield(code[:frequency], code[:duration])}
end
to_morse() click to toggle source
# File lib/mi100/morsecoder.rb, line 111
def to_morse
  frequency = @frequency
  unit = @unit
  Morsecoder.to_morse_from(@str, frequency, unit)
end