MovableType 4 から機能が改善されたテンプレートタグでは,変数に対して四則演算などの基本的な演算を行うことができるようになりました。しかし,それ以外の演算についてはサポートされておらず,今回,(その必要性は別として)各種のビット演算や切上げ・切捨て,乱数生成などが可能になるよう,これを無駄に拡張する MovableType プラグインを書いてみました。
拡張される演算
MovableType 標準の op で指定できるパラメータに加えて,以下のパラメータを使用できるようになります。
& または and
- 左辺値に対して右辺値とのビットAND(論理積)を求めます。
| または or
- 左辺値に対して右辺値とのビットOR(論理和)を求めます。
^ または xor
- 左辺値に対して右辺値とのビットXOR(排他的論理和)を求めます。
‾ または not
- 左辺値に対するビットNOT(論理否定)を求めます。右辺値が指定された場合,そのビットNOTを求めて左辺値として代入します。
<< または shl
- 左辺値に対して右辺値の値だけ左にビットシフトした値を求めます。
>> または shr
- 左辺値に対して右辺値の値だけ右にビットシフトした値を求めます。
<<< または sal
- 左辺値に対して右辺値の値だけ左に算術シフトした値を求めます。
abs
- 左辺値に対する絶対値を求めます。右辺値が指定された場合,その値の結果を求めて左辺値として代入します。
int
- 左辺値に対する小数部分を切り捨てます。右辺値が指定された場合,その値の結果を求めて左辺値として代入します。
ceil
- 左辺値に対する x 以上の最小の整数を求めます。右辺値が指定された場合,その値の結果を求めて左辺値として代入します。
floor
- 左辺値に対する x 以下の最大の整数を求めます。右辺値が指定された場合,その値の結果を求めて左辺値として代入します。
rand
- 左辺値に対する 0 以上 x 未満の任意の値を求めます。右辺値が指定された場合,その値未満の乱数値を求めて左辺値として代入します。
pack
- 左辺値に対して Perl の
pack 関数を適用します。右辺値を変換用のテンプレートとして適用します。
unpack
- 左辺値に対して Perl の
unpack 関数を適用します。右辺値を変換用のテンプレートとして適用します。
左辺値とは name で指定された対象となる変数,右辺値とは value で指定された値です。
乱数生成を JavaScript で行う場合だと,その生成がクライアント側で行われるため,乱数値を用いてテンプレートを分岐するなどの処理(普通はやりません)ができません。このプラグインでは MTSetVar テンプレートタグが処理される段階,サーバ側でテンプレートが処理される段階で値が求められるのでアイディア次第で色々と使えると思います。…まぁ,テンプレートタグの構築にビット演算だとか,そもそもツッコミ満載の演算式が満載です。pack,unpack は地味に便利だと思うんですが(自信ナシ)
MathOperatorExpander
最新版のダウンロードやバグレポートはMathOperatorExpander の trac レポジトリでも行っています。
開発の継続のためには、技術書の購入やバグの修正、新機能の追加、コメント欄でのユーザサポートなど、意外にお金と時間を費やします。そこで、「ビールでも奢ってやるか」ですとか「これで牛丼(並)でも食え」と仰るお方からのお申し出をいつでも受け付けております。どうぞ、よろしくお願いいたしますm(_ _)m
寄付金の送付には PayPal の小額決済をご利用いただけます。
この記事を読んだ人はこんな記事も読んでいます
MovableType, NovableType, JovableType, KovableType, MIvableType, M9vableType, M0vableType, MPvableType, MLvableType, MKvableType, MoCableType, MoFableType, MoGableType, MoBableType, MovQbleType, MovWbleType, MovSbleType, MovZbleType, MovaVleType, MovaGleType, MovaHleType, MovaNleType, MovabKeType, MovabOeType, MovabPeType, MovablWType, Movabl3Type, MovablRType, MovablDType, MovablSType, MovableRype, Movable5ype, Movable6ype, MovableYype, MovableGype, MovableFype, MovableTTpe, MovableT6pe, MovableT7pe, MovableTUpe, MovableTHpe, MovableTGpe, MovableTyOe, MovableTy0e, MovableTy-e, MovableTyLe, MovableTypW, MovableTyp3, MovableTypR, MovableTypD, MovableTypS
プラグイン
ダウンロード
ネタ
MT4, NT4, JT4, KT4, MR4, M54, M64, MY4, MG4, MF4, MT3, MT5, MTR, MTE