I hereby claim:
- I am ieda on github.
- I am iery (https://keybase.io/iery) on keybase.
- I have a public key ASBeY55jIhV6m6zEK8vJqtgq-VOsOSoMj1xrGGVIvrjppAo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
| // sequenceStr: "a >> b" for press A(, release A), press B, onKeyDownCallback. | |
| // TODO: Support onKeyUpCallback. | |
| // INFO: Timeout is only to break sequence. Wrong key press does NOT break sequence. | |
| function bindSequence(sequenceStr, onKeyDownCallback, onKeyUpCallback=null, timeoutToNextKey=500) { | |
| var sequenceDelimiter = ">>"; | |
| var keys = sequenceStr | |
| .split(sequenceDelimiter) | |
| .map(el => el.trim()); | |
| //console.log("bindSequence", keys); | |
| var baseContext = keyboardJS.getContext(); |
| =begin | |
| 以下のコードでは、数値を表すモデルを、 | |
| イミュータブルなオブジェクトになるような定義と、 | |
| イミュータブルではないオブジェクトになるような定義の | |
| 2つで実装している。 | |
| 2つのオブジェクトに対して、ほぼ同じ操作を行い、 | |
| その振る舞いの違いから知見を得ることを想定している。 | |
| =end | |
| class ImmutableNumber |
| RegexpBuilder.new.build({ | |
| ignore_case: true, | |
| begin_with: "A", | |
| contains: [ | |
| # order sensible | |
| [:contains, "B"], | |
| [:any], | |
| [:contains_any, "D", "E"], | |
| ] | |
| end_with: "C", |
| # Code adapted from http://bytes.com/topic/c-sharp/answers/240995-normal-distribution#post980230 | |
| module Normdist | |
| def self.normdist x, mean, std, cumulative | |
| if cumulative | |
| phi_around x, mean, std | |
| else | |
| tmp = 1/((Math.sqrt(2*Math::PI)*std)) | |
| tmp * Math.exp(-0.5 * ((x-mean)/std ** 2)) | |
| end | |
| end |
| function event::onChannelText(prefix, channel, text) | |
| { | |
| stext = text.match(/.*(((行|い)き)|((食|た)べ)|((飲|の)み)|((帰|かえ)り))たい$/); | |
| if (stext != null) { | |
| target = text.match(/.*[^行き食べ飲のみ帰かえりたい]/); | |
| if (target == null || target == "もう") { | |
| target = "おうち" | |
| } | |
| send(channel, " |←" + target + "| ┗(^o^ )┓三"); | |
| } |