JavaScript 1.6のArray map()

var functionLength = 5;
var parameterList = new Array(functionLength).map(function(_, i){ return "$" + i; }).join(",");
  • 期待するparameterListの値: "$0,$1,$2,$3,$4"
  • 実際のparameterListの値: ",,,,"
    • new Array(length)は配列を生成して長さを指定しているだけなのでmapの互換性コードで言うとif (i in this)が全てfalseになって関数が呼び出されない…
  • 代替:
    • map()を使うのをやめて普通にforループで対応する?
    • 生成した配列に対して先に.join(",").split(",")などとしてものを詰める?
    • map()を再実装する?
    • Arrayを再実装する?

Opera(9.50 beta 2)のSelectionの実装状況

属性/メソッド 実装 メモ
collapse(parentNode, offset) × 最初のRange(getRangeAt(0))のコンテナとオフセットがstart、endともにdocumentと0を指す
collapseToStart() × 最初のRange(getRangeAt(0))のコンテナとオフセットがstart、endともにdocumentと0を指す
collapseToEnd() × 最初のRange(getRangeAt(0))のコンテナとオフセットがstart、endともにdocumentと0を指す
selectAllChildren(parentNode) × 何も選択しない
deleteFromDocument() × 何も削除しない
rangeCount ○? addRange()などがちゃんと実装されていないので0か1
getRangeAt(index) ○? addRange()などがちゃんと実装されていないので1つ(getRangeAt(0))しかRangeを取れない
addRange(range) 何回呼んでも最初に追加したRangeしかリストとして持たない。addRange()後の選択範囲がおかしいことがある (toString()は期待通りの文字列を返すのにページ上ではそれ以上ハイライトしていることがある)
removeRange(range) × Rangeが取り除かれない
removeAllRanges()
toString() ○?

Selectors APIと子供セレクタ

あるElementからSelectors APIで子要素を全て取り出したい場合、例えばひとつのol要素から子であるli要素を全て取り出したい場合、querySelectorAllに渡すセレクタはどう書けばいいのでしょうか?ol.querySelectorAll("> li");かなと考えたんですがセレクタ単体で見ると完全なセレクタではないですよね。

追記 (2008-05-01)

ああ、全ての要素を特定してそこからNodeSelector(querySelector/querySelectorAllを呼んだノード)の子孫にある要素を取るような感じなんですかね。ということはol.querySelectorAll("ol > li");ですか。そうすると入れ子になったリストの項目まで取れてしまいますね…。

XML文書内のCURIEの汎用的な展開

  • どこ(どの属性の値/要素の内容)でCURIEが認められるかを調べるか予め知っている必要がある
    • 調べる場合はスキーマ
    • 調べない場合、知らないものは適切に展開できない
  • CURIEの接頭辞が省略されていた場合、そのCURIEのデフォルト接頭辞値は何か予め知っている必要がある
    • XML文書内にその情報があるわけではないので、知らないものは適切に展開できない

CURIE(WD 2008-04-02)

  • CURIEはURIの短縮構文。接頭辞とそれが表す値を予め対応付けておいて使う(wikipediaという接頭辞を「http://en.wikipedia.org/wiki/」として対応付けておけば「http://en.wikipedia.org/wiki/CURIE」を[][wikipedia:CURIE][]と記述できる、など)
  • 接頭辞が省略されたCURIEの場合(foo:foo)はデフォルトの接頭辞の値を使う (そういう機構があれば)
    • XHTML Role(WD 2008-04-07)ならhttp://www.w3.org/1999/xhtml/vocab#
  • CURIEであることを明確にするためにブラケットで囲うことが出来る ([ex:foo]のように。safe_curie生成規則と呼ばれる)
  • 空文字列でもCURIEになり得る (接頭辞とコロンは省略可能で、それに続く参照はIRI(RFC 3986)のirelative-ref)
    • irelative-ref - irelative-part - ipath-abempty = *( "/" isegment )
    • 「A. XML DTD and Schema Datatypes」のXML Schema正規表現は違う?
      • [\i-[:]][\c-[:]]*:.+なのでコロンを省略できなくて参照は1文字以上必要?
  • ...