2017-02-06 6 views
2

ジキルのドキュメントは、我々がcreate a custom tagことができると言う:カスタムJekyllタグを作成するときに使用する `tokens` argは何ですか?

module Jekyll 
    class TestTag < Liquid::Tag 
    def initialize(tag_name, text, tokens) 
     super 
     @text = text 
     @tokens = tokens 
    end 
    def render(context) 
     "text: #{@text} tokens: #{@tokens}" 
    end 
    end 
end 

Liquid::Template.register_tag('test', Jekyll::TestTag) 

ドキュメントが明示的にそれを言うことはありませんがinitializeは、組み込み関数であるように思え。

私はページ内でこのタグを含める場合:

{% test hallo world %} 

を私が手:

これらのトークンから来ている
text: hallo world tokens: {:locale=>#<Liquid::I18n:0x007fd62dbd5e38 
@path=”/Library/Ruby/Gems/2.0.0/gems/liquid-3.0.6/lib/liquid/locales/en.yml”>, 
:line_numbers=>true} 

?彼らは何をしますか?トークンを自分で設定できますか?

+1

'initialize'は、新しいオブジェクトをインスタンス化するためのrubyの予約語です。ほとんどの言語ではコンストラクタと呼ばれています。 – Anthony

答えて

3

これらのトークンはどこから来ていますか?あなたはそれがその親クラスのinitializeメソッドを呼び出すことsuperキーワードを使用している

、この場合Liquid::Tagには、そのクラスのコンストラクタあるとTagの新しいインスタンスを作成します。

彼らは何をしていますか?

tokensargument

は、液体のオプションを格納するハッシュです。デフォルトでは、 には2つのキーがあります::localeと:line_numbers、最初はLiquid :: I18n オブジェクトで、2番目のエラーは、エラー にエラーが発生した行番号を表示するかどうかを決定するブール型パラメータです。この 引数は、ほとんどの場合、Liquid ビルトインのタグとフィルタにローカライズされたエラーメッセージを表示するために使用されます。

1

superkeywordを使用してメソッドを定義すると、ルックアップパスに沿って同じ名前のメソッドを探すようにパーサに指示します。

Liquid::Tagには、初期化メソッドがあります。そのトークンが最も出現しやすい場所です。

関連する問題