Sha256: 1cf7bd426b0bb75de9deed40d50c660e50006c9dd8c74c530a04b40603d96e3d
Contents?: true
Size: 1.58 KB
Versions: 2
Compression:
Stored size: 1.58 KB
Contents
require 'kenny_speak/version' # # To Follow # class KennySpeak def initialize @letters = ['mmm', 'mmp', 'mmf', 'mpm', 'mpp', 'mpf', 'mfm', 'mfp', 'mff', 'pmm', 'pmp', 'pmf', 'ppm', 'ppp', 'ppf', 'pfm', 'pfp', 'pff', 'fmm', 'fmp', 'fmf', 'fpm', 'fpp', 'fpf', 'ffm', 'ffp'] end def to_kenny(str) result = '' str.split('').each do |c| result << if c =~ /[[:alpha:]]/ kenny_from_letter(c) else c end end result end def from_kenny(str) result = '' str.gsub(/\s+/m, ' ').strip.split(' ').each do |word| word.scan(/.{1,3}/).each do |tuple| result << letter_from_kenny(tuple) end result << ' ' end result.rstrip end private def kenny_from_letter(letter) upper = false upper = true if letter =~ /[[:upper:]]/ tmp = letter.downcase offset = tmp.ord - 97 tuple = @letters[offset] return tuple.capitalize if upper tuple end def letter_from_kenny(tuple) return tuple if tuple.length != 3 # Not a tuple return tuple if tuple[/[a-zA-Z0-9]+/] != tuple # Not just letters upper = false upper = true if tuple.chr =~ /[[:upper:]]/ tmp = tuple.downcase offset = @letters.index(tmp) return tuple if offset.nil? letter = (offset.to_i + 97).chr return letter.upcase if upper letter end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
kenny_speak-1.0.0 | lib/kenny_speak.rb |
kenny_speak-0.1.0 | lib/kenny_speak.rb |