MTのテンプレートタグでFizzBuzz、SetVarTemplateを使ってやってみた。

  • Posted on
  • by

junnamaさんが面白いことやってたので脊髄反射で反応。MT4.01が前提で。

カウントをインクリメントするルーチンをSetVarTemplateを使って外に出してみました。
まっすぐにやると出来ないのでちょっとかっこ悪い書き方になってしまいました・・・
この辺はMT4.1 で追加される op モディファイアを使えばよりスマートに書けるようになるでしょう。

<mt:setvartemplate name="count_up">
    <mt:setvar name="count_3_original" value="$count_3">
    <mt:setvar name="count_5_original" value="$count_5">

    <mt:if name="count_3" eq="2"><mt:setvar name="count_3" value="0"></mt:if>
    <mt:if name="count_3" eq="1"><mt:setvar name="count_3" value="2"></mt:if>
    <mt:if name="count_3_original" eq="0"><mt:setvar name="count_3" value="1"></mt:if>

    <mt:if name="count_5" eq="4"><mt:setvar name="count_5" value="0"></mt:if>
    <mt:if name="count_5" eq="3"><mt:setvar name="count_5" value="4"></mt:if>
    <mt:if name="count_5" eq="2"><mt:setvar name="count_5" value="3"></mt:if>
    <mt:if name="count_5" eq="1"><mt:setvar name="count_5" value="2"></mt:if>
    <mt:if name="count_5_original" eq="0"><mt:setvar name="count_5" value="1"></mt:if>
</mt:setvartemplate>

<mt:setvar name="count_3" value="1">
<mt:setvar name="count_5" value="1">

<mt:entries lastn="100">
    <mt:setvar name="output_line" value="$__counter__">
    <mt:if name="count_3" eq="0"><mt:setvar name="output_line" value="fizz"></mt:if>
    <mt:if name="count_5" eq="0"><mt:setvar name="output_line" value="buzz"></mt:if>
    <mt:if name="count_3" eq="0">
        <mt:if name="count_5" eq="0">
            <mt:setvar name="output_line" value="fizzbuzz">
        </mt:if>
    </mt:if>
    <mt:getvar name="output_line">
    <mt:getvar name="count_up">
</mt:entries>