Re: FizzBuzzより実用的なプログラマ向け面接問題考えた

require "uri"

def expand_string(str)
	%w(escape_html make_link make_twitter_mention make_hash_tag).each do |filter|
		str = __send__(filter, str)
	end
	str
end

def escape_html(str)
	%w(& &amp; < &lt; > &gt; " &quot; &#39; &#39;).each_slice(2) do |raw, escaped|
		str.gsub!(raw, escaped)
	end
	str
end

def make_link(str)
	str.gsub(URI.regexp(%w(http https)), &#39;<a href="\0">\0</a>&#39;)
end

def make_twitter_mention(str)
	str.gsub(/\W@\w+\W/) { $&.gsub(/(\w+)/, &#39;<a href="http://twitter.com/\1">@\1</a>&#39;) }
end

def make_hash_tag(str)
	str.gsub(/\s#\w+\s/) { $&.gsub(/(\w+)/, &#39;<a href="http://twitter.com/#search?q=%23\1">#\1</a>&#39;) }
end

なにか忘れているとおもったらURIのfragmentだ!!!!!!!!!!!!#make_hash_tag をなおした。