Movable Typeのテンプレートで、JSONなどの構造体フォーマットを出力する処理をサポートします。親子構造を持ち、ネストした構造データをテンプレートでスマートに記述することができます。
MITライセンスで提供します。
<mtsf:Hash format="json">
<mt:EntryTitle as="title">
<mt:EntryBody as="body">
<mtsf:Array as="categories">
<mt:EntryCategories>
<mt:CategoryLabel as="__value__">
</mt:EntryCategories>
</mtsf:Array>
</mtsf:Hash>
値を保存する変数名を指定します。
タグがmtsf:Hashの子要素の場合は、親要素に追加するキー名になります。
タグがmtsf:Arrayの子要素の場合は、特に使用されず無視されます(配列にキー名は不要のため)。
出力するフォーマットを選択できます。
jsonJSON形式yamlYAML形式
jsonを選択した場合は、改行やインデントを付加するprettyやUTF-8として出力を行うutf8も合わせて指定することができます。
<mtsf:Hash format="json","pretty","utf8">
...
</mtsf:Hash>
ハッシュ形式の値を作成します。
配列形式の値を作成します。
内部のテンプレートが出力するテキストを変数に格納します。
mtsf:Hashやmtsf:Arrayが親要素にある場合は、その子要素に追加されます。
mtsf:Valueの内部がすでにJSONやYAMLのデータである場合、それを構造データとして解析した上で変数に格納することができます。
<mtsf:Value set_as="var1","json"><mt:var name="SOME_JSON_DATA"></mtsf:Value>
テンプレート変数に格納されたハッシュや配列をformatモディファイアで指定したフォーマットで整形して出力します。
このタグでは、共通のset_asモディファイアは使用できません。
出力する値が格納された変数名を指定します。
複数のタグを評価し、値を設定します。:から始まる属性はこのタグ自体の属性値で、:prefixまたは:suffixを指定できます。
これらはタグ名のそれぞれプレフィックスとサフィックスになります。
任意の属性名に対し、属性値としてタグ名を指定します。属性名:タグ属性値でそれぞれのタグの属性を個別に指定することができます。
<mtsf:BulkTags :suffix="$i"
title="TextField"
date="DateField" date:format="%Y-%m-%d"
/>
任意のタグに指定することにより、mtsf:Valueと同じように、タグの出力結果を変数に格納します。
他の任意のプラグインで出力フォーマットを拡張することができます。
例えば次のプラグインは、mtsf:*テンプレートタグのformat属性に、PHP独自のシリアライズ記法で出力するphpを指定できるようにします。
id: StructureFormatPHPSerialize
version: 1.0.0
structure_formats:
php:
dump: |
sub {
my ( $value, $args ) = @_;
require 'PHP::Serialization';
PHP::Serialization->encode($value);
}
load: |
sub {
my ( $value, $args ) = @_;
require 'PHP::Serialization';
PHP::Serialization->decode($value);
}