From: "Alexandru E. Ungur" Date: 2007-01-11T22:49:29+09:00 Subject: seeking advice on Ruby code style Hi all, I recently recently released my first vim script, nothing big, it just toggles words between true/false, on/off, etc. You can find more here http://vim.sourceforge.net/scripts/script.php?script_id=1748 if you want. The thing is, I'm not sure if I chose the most elegant/beautiful/** way to solve the problem, basically I ended up deciding between two ways of handling the problem: class String @@pairs = [ %w[on off], %w[yes no], %w[true false] ] def toggle_word1 pair = @@pairs.select{|p| p.include?(downcase)}.flatten return nil if pair.empty? antiword = pair[pair.index(downcase) ^ 1] case self when upcase then return antiword.upcase when downcase then return antiword.downcase when capitalize then return antiword.capitalize else return antiword end end def toggle_word2 pair = @@pairs.select{|p| p.include?(downcase)}.flatten wordcase = %w[upcase downcase capitalize].detect {|c| send(c) == self} || "downcase" pair.empty? ? nil : pair[pair.index(downcase) ^ 1].send(wordcase) end end Both toggle_word1 and toggle_word2 are doing the exact same thing, that is: "Yes".toggle_word1 # => "No" "No".toggle_word2 # => "Yes" and so on. My question is, which is more elegant, more... rubyful ? I like that toggle_word1 is almost like plain english, especially that "case" construct, but I like in toggle_word2 that the same "case" construct was replaced with a single line of code, well with two actually. However perhaps toggle_word2 is a little too much code golfing...? Thank you in advance for your comments, Have a nice day everyone, Alex