Giraffe+ 0.5.48.630

Downloadページへ

前リリースからの変化

  • Numberにsqrt, log, sin等C言語浮動小数点関数を追加
  • 円周率を表すPi定数を追加
  • ActivateOrExecuteにアクティブ化を待つ時間を渡せる引数を追加
  • Migemo.query_groupingに"||"を演算子優先順位の違うORとして扱う仕様を追加
  • Migemo.query_groupingにmigemo文字列生成失敗時にリテラル正規表現を返す仕様を追加
  • Script/number.giraffeを廃止し、Numberオブジェクトのメソッド追加のためのNumber.giraffeを追加
  • Method, Block.resolve2を名前だけでなく全ての式を扱えるよう改善
  • def_method_helper.hppを書き直した

Numberにsqrt, log, sin等C言語浮動小数点関数を追加

doubleを取ってdoubleを返す関数です。sqrt, log, log10, exp, abs, acos, asin, atan, ceil, floor, cos, cosh, sin, sinh, tan, tanh, radian, degreeとその破壊的(sqrt!)版です。radianは角度->ラジアン、degreeはラジアン->角度です。

円周率を表すPi定数を追加

doubleです。VC++のmath.hのM_PIと同じです。

ActivateOrExecuteにアクティブ化を待つ時間を渡せる引数を追加

ActivateOrExecute(class title file wait_milli_seconds.= 0)です。クラスとタイトルにワイルドカード一致するウインドウを探し、無ければ起動し、アクティブ化を試みます。時間内にアクティブ化したらtrueを返します。

Migemo.query_groupingに"||"を演算子優先順位の違うORとして扱う仕様を追加

括弧でくくらないと出来なかった表現を簡単に出来るようにするためです。

a (b|c)

を、

a b||c

と書けるようになりました。

a b|c

との違いは、

aaa
abc
ccc

に対して、

a b||c

は、abcのみ、

a b|c

は、abcとcccにマッチすることです。
括弧でくくると、

(a (b||c))

と、

((a b)|(c))

になります。

Migemo.query_groupingにmigemo文字列生成失敗時にリテラル正規表現を返す仕様を追加

失敗するのはMigemoが使用不能の場合のみです。ようするに、Migemoの初期化等無しに非MigemoのAND OR検索が可能になった、ということです。

Script/number.giraffeを廃止し、Numberオブジェクトのメソッド追加のためのNumber.giraffeを追加

number.giraffeにはnumber:convertがあるだけだったのでdeprecated.giraffeに移動させました。number:convertの仕様はたぶん基数指定による数値の文字列化なので、

number:convert(num base) == num.to_Int.to_String(base)

としてます。

Method, Block.resolve2を名前だけでなく全ての式を扱えるよう改善

セミコロンは後続するメッセージを含まない式をひとつ消費するようになりました。
Number.timesの定義は

Number.times: `m[
  [0...;self.each& ;m$].resolve2.eval(parent)
]

です。m$はget(:m)ですので、;get(:m)と書いてるのと同じことになります。
メッセージを含ませたい場合は括弧を使って、

[;(1.+ 2)].resolve2.eval

と書けます。

def_method_helper.hppを書き直した

C++の関数をスクリプトオブジェクトのメソッドにする部分です。Boost 1.35で追加されたfunction_typesを使えば簡単に綺麗に書き直せそうだったのでついやってしまいました。
BOOST_PPを使った部分は最小限に抑えられ、綺麗なソースになったものの、コンパイル速度は落ちたし、function_typesやVC++といった自分の管理外の仕様への依存度が大きくなり、ちょっと失敗した気がします。