Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Side by Side Diff: lib/dom/scripts/htmlrenamer.py

Issue 10913125: Remove lib/dom directory! (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/python
2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 # for details. All rights reserved. Use of this source code is governed by a
4 # BSD-style license that can be found in the LICENSE file.
5
6 _html_interface_renames = {
7 'DOMFormData': 'FormData',
8 'DOMWindow': 'Window',
9 'WebKitAnimation': 'Animation',
10 'WebKitAnimationEvent': 'AnimationEvent',
11 'WebKitAnimationList': 'AnimationList',
12 'WebKitBlobBuilder': 'BlobBuilder',
13 'WebKitCSSKeyframeRule': 'CSSKeyframeRule',
14 'WebKitCSSKeyframesRule': 'CSSKeyframesRule',
15 'WebKitCSSMatrix': 'CSSMatrix',
16 'WebKitCSSTransformValue': 'CSSTransformValue',
17 'WebKitFlags': 'Flags',
18 'WebKitLoseContext': 'LoseContext',
19 'WebKitPoint': 'Point',
20 'WebKitTransitionEvent': 'TransitionEvent',
21 'XMLHttpRequest': 'HttpRequest',
22 'XMLHttpRequestException': 'HttpRequestException',
23 'XMLHttpRequestProgressEvent': 'HttpRequestProgressEvent',
24 'XMLHttpRequestUpload': 'HttpRequestUpload',
25 }
26
27 # Members from the standard dom that should not be exposed publicly in dart:html
28 # but need to be exposed internally to implement dart:html on top of a standard
29 # browser.
30 _private_html_members = set([
31 'Document.createElement',
32 'Document.createElementNS',
33 'Document.createEvent',
34 'Document.createTextNode',
35 'Document.createTouchList',
36 'Document.getElementById',
37 'Document.getElementsByClassName',
38 'Document.getElementsByName',
39 'Document.getElementsByTagName',
40 'Document.querySelector',
41 'Document.querySelectorAll',
42 'DocumentFragment.querySelector',
43 'DocumentFragment.querySelectorAll',
44 'Element.childElementCount',
45 'Element.children',
46 'Element.className',
47 'Element.clientHeight',
48 'Element.clientLeft',
49 'Element.clientTop',
50 'Element.clientWidth',
51 'Element.firstElementChild',
52 'Element.getAttribute',
53 'Element.getBoundingClientRect',
54 'Element.getClientRects',
55 'Element.getElementsByClassName',
56 'Element.getElementsByTagName',
57 'Element.hasAttribute',
58 'Element.lastElementChild',
59 'Element.offsetHeight',
60 'Element.offsetLeft',
61 'Element.offsetTop',
62 'Element.offsetWidth',
63 'Element.querySelector',
64 'Element.querySelectorAll',
65 'Element.removeAttribute',
66 'Element.scrollHeight',
67 'Element.scrollLeft',
68 'Element.scrollTop',
69 'Element.scrollWidth',
70 'Element.setAttribute',
71 'Event.initEvent',
72 'EventTarget.addEventListener',
73 'EventTarget.dispatchEvent',
74 'EventTarget.removeEventListener',
75 'MouseEvent.initMouseEvent',
76 'Node.appendChild',
77 'Node.attributes',
78 'Node.childNodes',
79 'Node.firstChild',
80 'Node.lastChild',
81 "Node.nodeType",
82 'Node.removeChild',
83 'Node.replaceChild',
84 'Storage.length',
85 'Storage.clear',
86 'Storage.getItem',
87 'Storage.key',
88 'Storage.removeItem',
89 'Storage.setItem',
90 'Window.getComputedStyle',
91 ])
92
93 # Members from the standard dom that exist in the dart:html library with
94 # identical functionality but with cleaner names.
95 _renamed_html_members = {
96 'Document.defaultView': 'window',
97 'Element.webkitMatchesSelector' : 'matchesSelector',
98 'Element.scrollIntoViewIfNeeded': 'scrollIntoView',
99 'Node.cloneNode': 'clone',
100 'Node.nextSibling': 'nextNode',
101 'Node.ownerDocument': 'document',
102 'Node.parentNode': 'parent',
103 'Node.previousSibling': 'previousNode',
104 'Node.textContent': 'text',
105 'SVGElement.className': '$dom_svgClassName',
106 'SVGAnimatedString.className': '$dom_svgClassName',
107 'SVGStylable.className': '$dom_svgClassName',
108 }
109
110 # Members and classes from the dom that should be removed completely from
111 # dart:html. These could be expressed in the IDL instead but expressing this
112 # as a simple table instead is more concise.
113 # Syntax is: ClassName.(get\.|set\.)?MemberName
114 # Using get: and set: is optional and should only be used when a getter needs
115 # to be suppressed but not the setter, etc.
116 # TODO(jacobr): cleanup and augment this list.
117 _removed_html_members = set([
118 'NodeList.item',
119 "Attr.*",
120 # "BarProp.*",
121 # "BarInfo.*",
122 # "Blob.webkitSlice",
123 # "CDATASection.*",
124 # "Comment.*",
125 # "DOMImplementation.*",
126 "Document.get:forms",
127 # "Document.get:selectedStylesheetSet",
128 # "Document.set:selectedStylesheetSet",
129 # "Document.get:preferredStylesheetSet",
130 "Document.get:links",
131 "Document.set:domain",
132 "Document.get:implementation",
133 "Document.createAttributeNS",
134 "Document.get:inputEncoding",
135 "Document.get:height",
136 "Document.get:width",
137 "Element.getElementsByTagNameNS",
138 "Document.get:compatMode",
139 "Document.importNode",
140 "Document.evaluate",
141 "Document.get:images",
142 "Document.createExpression",
143 "Document.getOverrideStyle",
144 "Document.xmlStandalone",
145 "Document.createComment",
146 "Document.adoptNode",
147 "Document.get:characterSet",
148 "Document.createAttribute",
149 "Document.get:URL",
150 "Document.createEntityReference",
151 "Document.get:documentURI",
152 "Document.set:documentURI",
153 "Document.createNodeIterator",
154 "Document.createProcessingInstruction",
155 "Document.get:doctype",
156 "Document.createTreeWalker",
157 "Document.location",
158 "Document.createNSResolver",
159 "Document.get:xmlEncoding",
160 "Document.get:defaultCharset",
161 "Document.get:applets",
162 "Document.getSelection",
163 "Document.xmlVersion",
164 "Document.get:anchors",
165 "Document.getElementsByTagNameNS",
166 "DocumentType.*",
167 "Element.hasAttributeNS",
168 "Element.getAttributeNS",
169 "Element.setAttributeNode",
170 "Element.getAttributeNode",
171 "Element.removeAttributeNode",
172 "Element.removeAttributeNS",
173 "Element.setAttributeNodeNS",
174 "Element.getAttributeNodeNS",
175 "Element.setAttributeNS",
176 "BodyElement.text",
177 "AnchorElement.text",
178 "OptionElement.text",
179 "ScriptElement.text",
180 "TitleElement.text",
181 # "EventSource.get:url",
182 # TODO(jacobr): should these be removed?
183 "Document.close",
184 "Document.hasFocus",
185
186 "Document.vlinkColor",
187 "Document.captureEvents",
188 "Document.releaseEvents",
189 "Document.get:compatMode",
190 "Document.designMode",
191 "Document.dir",
192 "Document.all",
193 "Document.write",
194 "Document.fgColor",
195 "Document.bgColor",
196 "Document.get:plugins",
197 "Document.alinkColor",
198 "Document.get:embeds",
199 "Document.open",
200 "Document.clear",
201 "Document.get:scripts",
202 "Document.writeln",
203 "Document.linkColor",
204 "Element.get:itemRef",
205 "Element.outerText",
206 "Element.accessKey",
207 "Element.get:itemType",
208 "Element.innerText",
209 "Element.set:outerHTML",
210 "Element.itemScope",
211 "Element.itemValue",
212 "Element.itemId",
213 "Element.get:itemProp",
214 'Element.scrollIntoView',
215 'Element.get:classList',
216 "EmbedElement.getSVGDocument",
217 "FormElement.get:elements",
218 "HTMLFrameElement.*",
219 "HTMLFrameSetElement.*",
220 "HtmlElement.version",
221 "HtmlElement.manifest",
222 "Document.version",
223 "Document.manifest",
224 # "IFrameElement.getSVGDocument", #TODO(jacobr): should this be removed
225 "InputElement.dirName",
226 "HTMLIsIndexElement.*",
227 "ObjectElement.getSVGDocument",
228 "HTMLOptionsCollection.*",
229 "HTMLPropertiesCollection.*",
230 "SelectElement.remove",
231 "TextAreaElement.dirName",
232 "NamedNodeMap.*",
233 "Node.isEqualNode",
234 "Node.get:TEXT_NODE",
235 "Node.hasAttributes",
236 "Node.get:DOCUMENT_TYPE_NODE",
237 "Node.get:DOCUMENT_POSITION_FOLLOWING",
238 "Node.lookupNamespaceURI",
239 "Node.get:ELEMENT_NODE",
240 "Node.get:namespaceURI",
241 "Node.get:DOCUMENT_FRAGMENT_NODE",
242 "Node.get:localName",
243 "Node.isDefaultNamespace",
244 "Node.compareDocumentPosition",
245 "Node.get:baseURI",
246 "Node.isSameNode",
247 "Node.get:DOCUMENT_POSITION_DISCONNECTED",
248 "Node.get:DOCUMENT_NODE",
249 "Node.get:DOCUMENT_POSITION_CONTAINS",
250 "Node.get:COMMENT_NODE",
251 "Node.get:ENTITY_REFERENCE_NODE",
252 "Node.isSupported",
253 "Node.get:DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC",
254 "Node.get:NOTATION_NODE",
255 "Node.normalize",
256 "Node.get:parentElement",
257 "Node.get:ATTRIBUTE_NODE",
258 "Node.get:ENTITY_NODE",
259 "Node.get:DOCUMENT_POSITION_CONTAINED_BY",
260 "Node.get:prefix",
261 "Node.set:prefix",
262 "Node.get:DOCUMENT_POSITION_PRECEDING",
263 "Node.get:nodeValue",
264 "Node.set:nodeValue",
265 "Node.get:CDATA_SECTION_NODE",
266 "Node.get:nodeName",
267 "Node.lookupPrefix",
268 "Node.get:PROCESSING_INSTRUCTION_NODE",
269 "IFrameElement.get:contentDocument",
270 "Window.get:frameElement",
271 ])
272
273 class HtmlRenamer(object):
274 def __init__(self, database):
275 self._database = database
276
277 def RenameInterface(self, interface):
278 if interface.id.startswith('HTML'):
279 if any(interface.id in ['Element', 'Document']
280 for interface in self._database.Hierarchy(interface)):
281 return interface.id[len('HTML'):]
282 elif interface.id in _html_interface_renames:
283 return _html_interface_renames[interface.id]
284 return interface.id
285
286 def RenameMember(self, interface_name, member, member_prefix=''):
287 """
288 Returns the name of the member in the HTML library or None if the member is
289 suppressed in the HTML library
290 """
291 interface = self._database.GetInterface(interface_name)
292
293 if self._FindMatch(interface, member, member_prefix, _removed_html_members):
294 return None
295
296 name = self._FindMatch(interface, member, member_prefix,
297 _renamed_html_members)
298 target_name = _renamed_html_members[name] if name else member
299 if self._FindMatch(interface, member, member_prefix, _private_html_members):
300 if not target_name.startswith('$dom_'): # e.g. $dom_svgClassName
301 target_name = '$dom_' + target_name
302 return target_name
303
304 def _FindMatch(self, interface, member, member_prefix, candidates):
305 for interface in self._database.Hierarchy(interface):
306 html_interface_name = self.RenameInterface(interface)
307 member_name = html_interface_name + '.' + member
308 if member_name in candidates:
309 return member_name
310 member_name = html_interface_name + '.' + member_prefix + member
311 if member_name in candidates:
312 return member_name
OLDNEW
« no previous file with comments | « lib/dom/scripts/go.sh ('k') | lib/dom/scripts/idlnode.py » ('j') | lib/html/scripts/logging.conf » ('J')

Powered by Google App Engine
This is Rietveld 408576698