2013-06-29 44 views
0

我爲Jeklly寫了一個簡單的插件,它基本上採用了我在_config.yml中定義的site.owner.email並對其進行了模糊處理,然後將其放在我的About頁面上。我有以下代碼:Jeklly的標記插件

_plugins/obfuscate_email.rb

class ObfuscateEmail < Liquid::Tag 
    def initialize(tag_name, text, tokens) 
    @text = text 
    super 
    end 

    def render(context) 
    output_array = [] 
    char_array = @text.split('') 
    char_array.each do |char| 
    output = "[dot]" if char == '.' 
    output = "[at]" if char == '@' 
    output = "[plus]" if char == '+' 
     if output 
     output_array << output 
     else 
     output_array << char 
     end 
    end 
    output_array.join 
    end 
    Liquid::Template.register_tag "obfuscate_email", self 
end 

用它,在這種情況下: {% obfuscate_email site.owner.email %} 會給結果是這樣的:site[dot]owner[dot]email,但我期待這樣的事情返回owner[dot]something[at]gmail[dot]com

我該怎麼稱呼它?

感謝

+0

@Slartibartfast編輯我上面的帖子,希望這是問題明確 – xbeta

回答

1

您可以將您的插件轉換成液體過濾器是這樣的:

module MyFilters 
    def obfuscate_email(input) 
    # your code here 
    end 
end 

Liquid::Template.register_filter(MyFilters) 

這樣,這句法應該工作:

{{site.owner.email | obfuscate_email}} 
+0

如何將其轉換爲液體過濾器? – xbeta

+0

正如Slartibartfast所示,通過使用「Liquid :: Template.register_filter」而不是「Liquid :: Template.register_tag」。 – agarie

+0

作品謝謝!我不知道這將如何與普通的Jekyll插件不同,但它的工作原理! – xbeta