.js

WeakMap uniq

[http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps:title=WeakMap] で uniq を書いて [https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf:title=indexOf] 版と比較してみた。 Primitive を受け付けない Error:…

IIFE

.js

http://benalman.com/news/2010/11/immediately-invoked-function-expression/ について。 訳 「即時実行関数式」は長いので「即行関数」としたい。 そのまま「IIFE」でもいいが検索性に難あり。 書き方 !function(){}() ~function(){}() + と - 、及び括弧…

kc2ks

keyconfig の設定を KeySnail に引き継ぐ。https://gist.github.com/858606 2011-03-24 Fx4 を期に乗り換えるつもりで書いたが、若干の変更のみであっさり動いたため結局 keyconfig を使い続けている。そもそも用途が完全に被るわけではないので両方入れてお…

ES3 8.6.2.3 step 5

.js

https://mail.mozilla.org/pipermail/es-discuss/2011-February/012839.html[[Prototype]] の ReadOnly*1が子孫に伝播する話。 Object.prototype = 0 Object.prototype + '' // [object Object] Object.prototype は書き込み禁止なので代入が無視される*2。 …

rest = a.slice(i, ?)

.js

配列 a の i 番目以降をコピーしたいとき、 a.slice(i) と通常は第二引数を省略するが、状況に応じて切り替えたい場合は a.slice(i, excludeLast ? -1 : x) のように何か値を渡すことになる。この x を何にすべきか((無論 a.length とはしたくない))。splice…

rest = a.splice(i, ?)

.js

配列 a の i 番目以降を抜き出したいとき、 a.splice(i, a.length) だと冗長なので単に省略して a.splice(i) と書いていたが、少し前に JScript で失敗することを知って a.splice(i, 1/0) ((1/0 === Infinity))と書くようになり、でつい今日、今度は JSC が…

CoffeeScript

少し前*1から本格的にちょっかいを出し始め、機能を増やしたり*2独自演算子((? ?. ?[] ?() ?= ||= &&=))の挙動をまともにしたり優先順位を直したり細かいバグを潰したり余分な括弧を外したり必要な括弧を付けたり高速化したりウェブコンソールを作ったりした…

Re: E4X

x.list.(function::hasOwnProperty("@id") && @id == "b"); http://teramako.github.com/doc/modest-20100904/index.html#(10) .(function::child("@id") == "b") で良さそう。 さらにゴルフするなら .(*.parent().@id == "b") とか。 xlist[i] = <span>hoge</span>; http…

typeof / /

.js

ECMAScript 4 discussion - Callable RegExp vs. typeof Bug 61911 - typeof(/regExp/) should return "object", not "function" (WebKit) Bug 28117 - Native JSON.stringify does not omit functions Bug 582717 - Make regular expressions not callable …

life

http://jsdo.it でごるふしてる人が居たので釣られた。 ついでに長らく放置していたテキストベースのやつも縮めて投稿。

464B tetris

AutoPager.ize()

AutoPager 自動更新先の Wedata ミラーが微妙に古い。 のでオリジナルから手動更新。 // Run in chrome://browser/content UpdateSites.updateSites.every(function(s){ if(!~s.url.indexOf('AutoPagerize')) return true; s.url = 'http://wedata.net/datab…

alnumpop

http://gist.github.com/479545 履歴・タブ一覧のポップアップにアクセスキーを振る。 key{config,snail} から開く設定と併用。

lmnpop

https://addons.mozilla.org/addon/196133 / GitHub - satyr/lmnpop: Pops elements as resizable windows. 説明 DOM 要素をポップアップ 詳細 親切な誰かが書いてくれた 用途 Flash 観賞等 経緯 単に open('data:text/html,'+ parent.innerHTML) とかすると…

XPC cache removal

Fx3.7a で JS Module の変更が思うように反映されない件の解決策を教わった。 16:53 (satyr) how do you reload jsm in nightly? restarting Firefox has no effect 17:03 (Unfocused) if you're on windows, delete XPC.mfl in your profile directory (or …

node4x

.js

XML/XMLList → Node を愚直に。 function node4x(xml, doc){ doc = doc || document; if(xml.length() === 1) switch(xml.nodeKind()){ case 'attribute': let at = true; case 'element': let {uri, localName: name} = xml.name(); if(at){ at = uri ? doc…

Halt Alert

http://gist.github.com/418451 alert ループ脱出用 uc.js。commonDialog.xul に checkbox を追加する。 Stop script 親ウィンドウのスクリプト実行を不許可に。setInterval(alert,0) とか onkeydown=onmousemove=alert とかに有効。 Wipe window 親ウィンド…

insertText

テキストボックス((textarea, input:-moz-any(:not([type]), [type=text], [type=password]))) tbox のカーソル位置へ文字列 text を挿入したいとき,HTMLTextAreaElement の貧弱な機能で実現するとこんな風になる。 var {value, selectionStart, selectionE…

xqjs

http://github.com/satyr/xqjs (AMO) 簡易JS実行環境。習作第二弾。 機能 DOMi 風の対象ウィンドウ選択 プリプロセッサ JSマクロ CoffeeScript 入力履歴 単語補完 出力用関数とか は this を参照 作成動機 一々 function を書きたくない。 話題の CoffeeScri…

cal

CmdUtils.CreateCommand({ name: 'cal', previewUrl: <>data:application/vnd.mozilla.xul+xml, <datepicker type="grid" align="top" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/>, }); はてなグループ 呟いて済ませるつもりが無闇に長い MIME type と xmlns のせいで140字に収まらなかった。悔しい。 jQuery と歴史的仕様のおかげでギリギ</datepicker>…

uc

http://github.com/satyr/uc (AMO) userChromeJS もどきに subscriptoverlayloader.js 相当の機能を付けた拡張。 いい加減 XUL を覚えねばと思い*1,習作として作成。 ○ 読み込み元を複数指定可能*2 若干高速 メタ情報をいちいち読まない(起動時とファイル…

プロトコル別ローカルファイル上クライアントサイド永続ストレージ事情

code \ URI scheme file: chrome: resource: localStorage ×*1 ×*2 ✔ globalStorage[location.hostname] ×*3 ✔ ✔ document.cookie ✔ ×*4 ✔ Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 落としてきた twicli…

radiko lite

妙に重いし変なエラーを吐くので枝葉を払った。 http://gist.github.com/346209.txt?.user.js ++onhashchange 番組表に埋め込んでみた らどの局がかかってるか分からなくなったので表示欄を追加 Greasemonkeyでサイト既存CSSの影響を受けないポップアップパ…

escape(_,0)

SpiderMonkey の escape() は第二引数にビットフラグを受け取る。 Amazon の API 用にこんな関数を書いてて気付いた。 function amazEnc(str) encodeURIComponent(str).replace(/[!\'()]+/g, escape).replace(/[*]/g, '%2A'); amazEnc('unescape(_)') //=> E…

valueOf() と SpiderMonkey

.js

http://gist.github.com/330746↓こうなるはずが (v8 / Nitro / JScript) +_ -> _.valueOf(undefined) "" + _ -> _.valueOf(undefined) SpiderMonkey*1だと Object(_) -> _.valueOf("object") +_ -> _.valueOf("number") "" + _ -> _.valueOf("undefined") 該…

caret@hint

Hit-a-Hint もどきに続き,Caret Hint もどきを作った。 caret@hint · GitHub javascript:"caret@hint",['http://gist.github.com/230771.txt',function(d){d.body.appendChild(d.createElement('script')).src=this[0]}][1](document) 機能 ヒントで選んだ…

zEn4X

.js

Zen Coding 風の記述から E4X を生成するのを書いてみた。 zen4x('dl#id.cla.ss > dt{content} + dd > input[type=radio][name=$]*2') <dl id="id" class="cla ss"> <dt>content</dt> <dd> <input type="radio" name="1"/> <input type="radio" name="2"/> </dd> </dl> 使い途は…。

{__proto__:null} のススメ

.js

特に新しい話題でもないけど,使われているところをあまり見ない気がするので。 HashMap/Dictionary として narcissus/jsdefs.js#142 にもあるように,単に {} だと Object.prototype が付いて廻るので役に立たないことがある。辞書として使うなら {__proto_…

eval(uneval(function()_))

function f(){let _,{x}=0} uneval(f); //=> function f() {var _, var {x} = 0;} eval(uneval(f)); //=> SyntaxError: missing variable name というバグに出くわした。トップレベルなので var に変わるのはいいとして,問題は変に増えて構文エラーになると…

summary ⇔ content

Firefoxのフィードプレビュー画面、なんでショボいんだ、省略されてるのかわらかん http://twitter.com/33/status/5119532557 本当にそうだと思うので,書き換えてしまうことにした。 --- a/components/FeedWriter.js +++ b/components/FeedWriter.js @@ -45…