manakai//Issue//1//9

camelCaseName から underscored_name への変換

[1] DOM 式の camelCaseName を Perl モジュールでは適宜 underscored_name に変換するためのアルゴリズムについて。

参考: manakai//メモ//2005-02-16 (>>4)

[2] Test case:

#camelCaseunderscorehyphen備考
[2]hrefhrefHTMLAnchorElement1
[6]URLurlHTMLDocument1
[12]x1x1SVG
[3]appendChildappend_childNode1
[14]utf16Offsetutf16_offsetDOMLocator3
[15]findOffset32find_offset32StringExtended3
[8]MozBinding_moz_binding-moz-bindingCSS property
[10]?panose_1panose-1CSS descriptor
[9]valueUTF16BEvalue_utf16beManakaiDOMString1
[4]getAttributeNodeget_attribute_nodeElement1
[5]getAttributeNSget_attribute_nsElement2
[7]createLSParsercreate_ls_parserDOMImplementationLS3
[13]rfc3339DateTimerfc3339_date_timeManakaiPerlCodeImplementation
[11]scrollbar3dLightColor (例外的)scrollbar_3dlight_colorscrollbar-3dlight-colorCSS property

(名無しさん 2005-04-30 13:27:37 +00:00)

[16] HTMLBodyElement.aLink, HTMLBodyElement.bgColor, HTMLBodyElement.vLink, HTML*Element.tabIndex, HTML*Element.accessKey, HTMLInputElement.maxLength, HTML*Element.readOnly, HTML*Element.useMap, HTML*Element.isMap, HTMLHRElement.noShade, HTMLModElement.dateTime, HTML*Element.longDesc, HTMLObjectElement.codeBase, HTMLObjectElement.codeType, HTMLParamElement.valueType, HTMLAnchorElement.codeBase, HTMLAreaElement.noHref, HTMLTableElement.bgColor, HTMLTableElement.cellPadding, HTMLTableElement.cellSpacing, HTMLTableElement.tHead, HTMLTableElement.tFoot, HTMLTableElement.tBodies, HTMLTableColElement.vAlign, HTMLTableSectionElement.vAlign, HTMLTableRowElement.bgColor, HTMLTableRowElement.vAlign, HTMLTableCellElement.bgColor, HTMLTableCellElement.vAlign, HTMLTableCellElement.noWrap, HTMLTableCellElement.rowSpan, HTMLTableCellElement.colSpan, HTMLFrameElement.frameBorder, HTMLFrameElement.marginWidth, HTMLFrameElement.marginHeight, HTMLFrameElement.noResize, HTMLFrameIElement.frameBorder, HTMLFrameIElement.marginWidth, HTMLFrameIElement.marginHeight, HTMLFrameIElement.noResize は特別扱いして XHTML と同じになるように全小文字にするか、それとも原則通り _ を入れて小文字化にするか。 そもそも元の名前が vSpace じゃなくて vspace だったり hrefLang や hRefLang じゃなくて hreflang だったりどういう基準で大文字にしているのかがわからない (DOM水準0 との互換?)。いっそ全部小文字にしてしまった方が良いのかも。

その場合 HTMLTableElement.createTHead, HTMLTableElement.createTFoot は create_thead のように。

だいたい t_head とか v_space とかは間抜けだな。

HTMLTableColElement.chOff, HTMLTableSectionElement.chOff, HTMLTableRowElement.chOff はどうしたことか。 char と charoff は char 型との衝突を恐れて ch にしたのだろうが、原則通りなら htmlChar とか htmlCharOff じゃないのか。 (これも DOM 水準 0?)

(名無しさん 2005-04-30 14:02:50 +00:00)

[17] CSSStyleRule.FONT_FACE_RULE は元の CSS では @fontface で余計な _ が入っている。 でもこれは定数だしわざわざいじるほどのことでもなかろう。 CSS2Properties の CSS 特性に対応する属性は流石に綺麗に機械的に対応している。 (名無しさん 2005-04-30 14:10:28 +00:00)

[18] SVGLocatable.getBBox

SVGLangSpace.xmllang, SVGLangSpace.xmlbase は xmlLang や xmlBase じゃなくて全部小文字。参考までに。 xlink:href は SVGURIReference.href。 @color-profile は SVGCSSRule.COLOR_PROFILE_RULE。

(名無しさん)

[19] ていうか今のアルゴリズムだと valueUTF16BE が value_utf_1__6be になってしまう。 (元の名前もどうかとおもうけどさ) (名無しさん 2005-05-05 12:04:20 +00:00)

[20] >>19 findOffset16 -> find_offset_1_6

だめじゃん。 (名無しさん 2005-05-05 12:06:54 +00:00)