def call(char,value)
case char
when " “,”#","!","@","$","%","^","&","*","(",")","{","}","
[","]","’",""","<",">",",",".","?",";","\n","\r" @map[char].call(value)
when “digit” @map[char].call(value)
when “char” @map[char].call(value)
else
puts “don’t know what to do with #{char} and #{value}”
end
end
def call(char,value)
case char
when " “,”#","!","@","$","%","^","&","*","(",")","{","}","
[","]","’",""","<",">",",",".","?",";","\n","\r" @map[char].call(value)
when “digit” @map[char].call(value)
when “char” @map[char].call(value)
else
puts “don’t know what to do with #{char} and #{value}”
end
end
can the first when be written in a simpler way ?
SPECIAL = /\A[#{Regexp.escape(" #!@$%^&*(){}[]’"<>,.?;\r\n")}]\z/
def call(char,value)
case char
when SPECIAL
… etc
def call(char,value)
case char
when " “,”#","!","@","$","%","^","&","*","(",")","{","}","
[","]","’",""","<",">",",",".","?",";","\n","\r" @map[char].call(value)
when “digit” @map[char].call(value)
when “char” @map[char].call(value)
else
puts “don’t know what to do with #{char} and #{value}”
end
end
can the first when be written in a simpler way ?
Enjoy: @map = Hash.new { |map, char| proc { |value| puts “don’t know what to do
with #{char} and #{value}” } }.merge(your_original_map) @map[char][value]