我注意到像Pry,Yaml和其他一些宝石似乎对每个对象(包括字符串对象)进行原型设计,我很乐意为我制作的HAML扩展做同样的事情,以便我可以即时转换部分内容。基本上我想要自己的“%time”.HAML_partial_render,关于如何做到这一点的任何想法?
答案 0 :(得分:4)
Ruby有开放课程,所以获得你想要的最快捷方式就是:
class String
def HAML_partial_render
# your code
end
end
如果你想让它更清洁,你可以创建一个模块,然后将其混合成字符串:
module HamlRendering
def HAML_partial_render
# your code
end
end
class String
include HamlRendering
end
这也使您能够根据需要进行动态扩展,而不是污染整个对象空间:
"foo".extend(HamlRendering).HAML_partial_render
但如果您需要在任何地方使用它,那将会变得混乱。
有一个关于正在考虑的改进概念的提议应该为Ruby 2.0清理它,但是现在,我认为以上述方式之一打开课程是最好的选择。