понедельник, 29 сентября 2008 г.

to_url_params

Занимаясь дальнейшим расширением стандартных классов:
require 'cgi'

class Hash
def to_url_params
self.map{|key,value|
CGI.escape(key.to_s) + '=' + CGI.escape(value.to_s)
}.join('&')
end
end

(На строки разбил, чтобы сюда влезло, так красивее в одну строку.)
{'a'=>5, 'url'=>'http://ya.ru'}.to_url_params
# "a=5&url=http%3A%2F%2Fya.ru"

Для конкурса на самую нечитаемую программу могу еще чуть короче (этот код я могу только написать, но не прочитать):
require 'cgi'

class Hash
def to_url_params
self.to_a.map{|a| a.map
{|x| CGI.escape(x.to_s)}.join('=')}.join('&')
end
end

Комментариев нет: