Skip to content

Instantly share code, notes, and snippets.

@tenderlove
Created October 16, 2008 23:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tenderlove/17305 to your computer and use it in GitHub Desktop.
Save tenderlove/17305 to your computer and use it in GitHub Desktop.
####
# Morse code for ruby
#
# puts ( +-~+-~+-+~---~-+ M ) # => 'aaron'
#
class M
DITS_N_DAHS = {
'+-' => 'a',
'-+++' => 'b',
'-+-+' => 'c',
'-++' => 'd',
'+' => 'e',
'++-+' => 'f',
'--+' => 'g',
'++++' => 'h',
'++' => 'i',
'+---' => 'j',
'-+-' => 'k',
'+-++' => 'l',
'--' => 'm',
'-+' => 'n',
'---' => 'o',
'+--+' => 'p',
'--+-' => 'q',
'+-+' => 'r',
'+++' => 's',
'-' => 't',
'++-' => 'u',
'+++-' => 'v',
'+--' => 'w',
'-++-' => 'x',
'-+--' => 'y',
'--++' => 'z',
'' => ' ',
}
class << self
def +@; new.send(:"+@"); end
def -@; new.send(:"-@"); end
end
def initialize
@codez = ''
end
%w{ + - ~ }.each { |x| define_method(:"#{x}@") do; @codez << x; self; end }
def to_s
@codez.reverse.split('~').map { |code| DITS_N_DAHS[code] }.join
end
end
puts( ++++~+~+-++~+-++~---~~+--~---~+-+~+-++~-++ M) if $0 == __FILE__
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment