manakai//メモ//2005-02-16

manakai//メモ//2005-02-16

[1] .//1

[2]

[3] というわけでこの定義・定理を元に lib/manakai/dis.pldis_load_classdef_elementdis_uri_ctype_match を修正しました。 今まで処理の大部分が dis_uri_ctype_match の無駄な継承鎖探索に費やされていたので、かなり実行速度が改善されました (がまだ遅い)。 (名無しさん 2005-02-16 04:18:01 +00:00)

[4] さて、現在メソッド名・属性名は camelCase になっていますが、 Perl 的ではないので underscore_style に変えます。 cdis2pm.pl の出力だけを変えるので、 dis ファイル内はソース・コードも含めて修正不要です。 外部で修正が必要なのは今のところ作りかけの DOM TS のコードだけ。

(名無しさん 2005-02-16 07:41:43 +00:00)

[5] domCamelCaseMethodName から perl_underscore_style_function_name への変換方法:

  1. すべて大文字の名前は、すべて小文字に。
  2. 大文字の連続で終わる場合は、その部分を _ + 小文字化。
  3. 大文字が2文字以上続く場合は、 2文字目以降を小文字化。最後の大文字の手前に _ を挿入。
  4. 大文字をすべて _ と小文字に。

これで、 URL (HTMLDocument) は url に、 createLSParser (DOMImplementationLS) は create_ls_parser に、 getAttributeNS (Element) は get_attribute_ns に、 localName (Node) は local_name に、 href (HTMLAnchorElement) は href になります。 DOM で規定されているメソッド・属性の名前はすべてカバーできるはずです。

Gecko 拡張の MozBinding のような名前は _moz_binding になります。 (名無しさん 2005-02-16 07:48:17 +00:00)

[6] なお、内部用のメソッド・属性は以前から dis での名前の最初に _ をつけることにしていましたので、 理論上は CamelCase のような名前の公開メソッドと camelCase のような名前の私的メソッドがあると衝突してしまいます。 現実には運用でカバーできるでしょう。できなければ私的名の _ を増やすことにします。

(名無しさん 2005-02-16 07:52:59 +00:00)

[7] 実際に >>5 の方法を適用してみると、 内部用の属性名で数字が入ったもの (valueUTF16BE) にうまく対応できませんでした。そこで大文字のところで適宜数字も認めることにしました。 (先の例は value_utf16be になります。) なお、>>5 の方法の大文字をすべて大文字・数字に置き換えてしまうと name2name_2 になってしまいます。今のところ DOM にも manakai にもこのような形で数字が入ったメソッド名や属性名はないようなので、 気にしないことにしました。 (名無しさん 2005-02-16 08:17:05 +00:00)

[8] >>7 この問題が起こりそうなのは CSSpanose-1 記述子ですが、 DOM水準2 CSS では記述子に対応する特性を用意していない模様です。

他に問題となるのは Microsoft の scrollbar-3dlight-color 特性で、 IE の DOM では scrollbar3dLightColor という名前になっています。ということは >>7 の動作でよいのかな。 (でもなんで Light を capitalize するんだよ?) (名無しさん 2005-02-16 08:30:26 +00:00)

[9] SVGx1 属性他があるのを発見してしまった。。。 (名無しさん 2005-02-16 08:35:25 +00:00)

[10] 今のアルゴリズム CURRENT では rfc3339Daterfc_3_3_3_9_date になることがわかりました。

(名無しさん 2005-04-30 13:14:19 +00:00)

[11] manakai//Issue//1//9 に移動。 (名無しさん 2005-04-30 13:28:40 +00:00)