偶尔会写一些对类的方法扩展,比较常见的是给 String 类进行扩展,如,加入 to_slug, remove_html_tags 等等
在以前 Ruby 1.8 类的方法扩展可以直接写成这样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| lass String
def remove_html_tags()
self.gsub(/<.+?>/, "")
end
# clear unsafe char with url slug
def safe_slug(spliter = '-')
@slug = self
if @slug.blank?
Guid.new
@slug = Guid.generate
end
@slug.gsub(/[^a-zA-Z\-0-9]/,spliter).downcase
end
end
Ruby1.8.7 > "aaa".remove_html_tags()
Ruby1.8.7 > "aaa".safe_slug
|
但到了 Ruby 1.9 这样可不行了,你得定义一个 module,然后通知 String 集成这个 module,如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| module StringExtensions
def remove_html_tags()
self.gsub(/<.+?>/, "")
end
# clear unsafe char with url slug
def safe_slug(spliter = '-')
@slug = self
if @slug.blank?
Guid.new
@slug = Guid.generate
end
@slug.gsub(/[^a-zA-Z\-0-9]/,spliter).downcase
end
end
String.send :include,StringExtensions
|
1
2
| Ruby1.9.2 > "aaa".remove_html_tags()
Ruby1.9.2 > "aaa".safe_slug
|