For those who are php code know very well how important is strtr and nl2br in the web development.
When developing web application in rails I still need these 2 functions. so I dicide just to keep and implement the same name in ruby:
string.rb
class String
def str_translate values, preserve = false
self.gsub /\{[^\}]*\}/ do |match|
key = match[1..-2]
if preserve
values[key.to_sym] || match
else
values[key.to_sym] || ""
end
end
end
def nl2br
self.gsub /\n/ do |match|
<br />
end
end
end
string_spec.rb
require "spec_helper"
describe String do
describe "#str_translate" do
it "should be translated keys in the string by parameters in the list " do
str = "The message from {user} sent out on {day} "
strtr = str.str_translate(:user => "Ilab", :day => "Monday")
strtr.should eq "The message from Ilab sent out on Monday "
end
it "should preserve keys that not in the string by parameters in the list " do
str = "The message from {user} sent out on {day} "
strtr = str.str_translate({:day => "Monday"}, true)
strtr.should eq "The message from {user} sent out on Monday "
end
it "should remove the missing key from the string" do
str = "The message from {user} sent out on {day} "
strtr = str.str_translate(:day => "Monday")
strtr.should eq "The message from sent out on Monday "
end
end
describe "nl2br -new line to br" do
it "should convert all new line to br" do
original = ["\nthis is a great new\nIn the \n", "blah\n\n\nblah\n"]
converted = ["<br />this is a great new<br />In the <br />", "blah<br /><br /><br />blah"]
original.each_with_index do |str, index|
str.nl2br.should eq converted[index]
end
end
end
end
No comments:
Post a Comment