String#each
先の RSS を JavaScript に変換するスクリプトでは
def to_js self.to_html.split("?n").collect { |line| line.gsub!(/'/, "?'") "document.writeln('#{line}');" }.join("?n") end
という処理を書いていましたが、String の API を眺めていたところ、String は Enumerable を Mixin していて each は行単位に String を分割してイテレートしてくれるようです。なので自分で split している上記コードは冗長でした。
def to_js self.to_html.collect { |line| line.chomp! line.gsub!(/'/, "?'") "document.writeln('#{line}');" } end
と、書き替えました。また join して結果を返していましたが、Array で返しておいて使う側でよしなに扱うようにしました。(puts に対してはどちらでも出力は同じなようです。)