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

Side by Side Diff: tools/dom/src/AttributeMap.dart

Issue 1894713002: Strong html (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: ptal Created 4 years, 8 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
« no previous file with comments | « tools/dom/scripts/systemhtml.py ('k') | tools/dom/src/CrossFrameTypes.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of html; 5 part of html;
6 6
7 abstract class _AttributeMap implements Map<String, String> { 7 abstract class _AttributeMap implements Map<String, String> {
8 final Element _element; 8 final Element _element;
9 9
10 _AttributeMap(this._element); 10 _AttributeMap(this._element);
11 11
12 void addAll(Map<String, String> other) { 12 void addAll(Map<String, String> other) {
13 other.forEach((k, v) { this[k] = v; }); 13 other.forEach((k, v) { this[k] = v; });
14 } 14 }
15 15
16 bool containsValue(String value) { 16 bool containsValue(Object value) {
17 for (var v in this.values) { 17 for (var v in this.values) {
18 if (value == v) { 18 if (value == v) {
19 return true; 19 return true;
20 } 20 }
21 } 21 }
22 return false; 22 return false;
23 } 23 }
24 24
25 String putIfAbsent(String key, String ifAbsent()) { 25 String putIfAbsent(String key, String ifAbsent()) {
26 if (!containsKey(key)) { 26 if (!containsKey(key)) {
(...skipping 11 matching lines...) Expand all
38 void forEach(void f(String key, String value)) { 38 void forEach(void f(String key, String value)) {
39 for (var key in keys) { 39 for (var key in keys) {
40 var value = this[key]; 40 var value = this[key];
41 f(key, value); 41 f(key, value);
42 } 42 }
43 } 43 }
44 44
45 Iterable<String> get keys { 45 Iterable<String> get keys {
46 // TODO: generate a lazy collection instead. 46 // TODO: generate a lazy collection instead.
47 var attributes = _element._attributes; 47 var attributes = _element._attributes;
48 var keys = new List<String>(); 48 var keys = <String>[];
49 for (int i = 0, len = attributes.length; i < len; i++) { 49 for (int i = 0, len = attributes.length; i < len; i++) {
50 if (_matches(attributes[i])) { 50 _Attr attr = attributes[i];
51 keys.add(attributes[i].name); 51 if (_matches(attr)) {
52 keys.add(attr.name);
52 } 53 }
53 } 54 }
54 return keys; 55 return keys;
55 } 56 }
56 57
57 Iterable<String> get values { 58 Iterable<String> get values {
58 // TODO: generate a lazy collection instead. 59 // TODO: generate a lazy collection instead.
59 var attributes = _element._attributes; 60 var attributes = _element._attributes;
60 var values = new List<String>(); 61 var values = <String>[];
61 for (int i = 0, len = attributes.length; i < len; i++) { 62 for (int i = 0, len = attributes.length; i < len; i++) {
62 if (_matches(attributes[i])) { 63 _Attr attr = attributes[i];
63 values.add(attributes[i].value); 64 if (_matches(attr)) {
65 values.add(attr.value);
64 } 66 }
65 } 67 }
66 return values; 68 return values;
67 } 69 }
68 70
69 /** 71 /**
70 * Returns true if there is no {key, value} pair in the map. 72 * Returns true if there is no {key, value} pair in the map.
71 */ 73 */
72 bool get isEmpty { 74 bool get isEmpty {
73 return length == 0; 75 return length == 0;
(...skipping 10 matching lines...) Expand all
84 bool _matches(Node node); 86 bool _matches(Node node);
85 } 87 }
86 88
87 /** 89 /**
88 * Wrapper to expose [Element.attributes] as a typed map. 90 * Wrapper to expose [Element.attributes] as a typed map.
89 */ 91 */
90 class _ElementAttributeMap extends _AttributeMap { 92 class _ElementAttributeMap extends _AttributeMap {
91 93
92 _ElementAttributeMap(Element element): super(element); 94 _ElementAttributeMap(Element element): super(element);
93 95
94 bool containsKey(String key) { 96 bool containsKey(Object key) {
95 return _element._hasAttribute(key); 97 return _element._hasAttribute(key);
96 } 98 }
97 99
98 String operator [](String key) { 100 String operator [](Object key) {
99 return _element.getAttribute(key); 101 return _element.getAttribute(key);
100 } 102 }
101 103
102 void operator []=(String key, String value) { 104 void operator []=(String key, String value) {
103 _element.setAttribute(key, value); 105 _element.setAttribute(key, value);
104 } 106 }
105 107
106 String remove(String key) { 108 String remove(Object key) {
107 String value = _element.getAttribute(key); 109 String value = _element.getAttribute(key);
108 _element._removeAttribute(key); 110 _element._removeAttribute(key);
109 return value; 111 return value;
110 } 112 }
111 113
112 /** 114 /**
113 * The number of {key, value} pairs in the map. 115 * The number of {key, value} pairs in the map.
114 */ 116 */
115 int get length { 117 int get length {
116 return keys.length; 118 return keys.length;
117 } 119 }
118 120
119 bool _matches(Node node) => node._namespaceUri == null; 121 bool _matches(Node node) => node._namespaceUri == null;
120 } 122 }
121 123
122 /** 124 /**
123 * Wrapper to expose namespaced attributes as a typed map. 125 * Wrapper to expose namespaced attributes as a typed map.
124 */ 126 */
125 class _NamespacedAttributeMap extends _AttributeMap { 127 class _NamespacedAttributeMap extends _AttributeMap {
126 128
127 final String _namespace; 129 final String _namespace;
128 130
129 _NamespacedAttributeMap(Element element, this._namespace): super(element); 131 _NamespacedAttributeMap(Element element, this._namespace): super(element);
130 132
131 bool containsKey(String key) { 133 bool containsKey(Object key) {
132 return _element._hasAttributeNS(_namespace, key); 134 return _element._hasAttributeNS(_namespace, key);
133 } 135 }
134 136
135 String operator [](String key) { 137 String operator [](Object key) {
136 return _element.getAttributeNS(_namespace, key); 138 return _element.getAttributeNS(_namespace, key);
137 } 139 }
138 140
139 void operator []=(String key, String value) { 141 void operator []=(String key, String value) {
140 _element.setAttributeNS(_namespace, key, value); 142 _element.setAttributeNS(_namespace, key, value);
141 } 143 }
142 144
143 String remove(String key) { 145 String remove(Object key) {
144 String value = this[key]; 146 String value = this[key];
145 _element._removeAttributeNS(_namespace, key); 147 _element._removeAttributeNS(_namespace, key);
146 return value; 148 return value;
147 } 149 }
148 150
149 /** 151 /**
150 * The number of {key, value} pairs in the map. 152 * The number of {key, value} pairs in the map.
151 */ 153 */
152 int get length { 154 int get length {
153 return keys.length; 155 return keys.length;
(...skipping 13 matching lines...) Expand all
167 169
168 _DataAttributeMap(this._attributes); 170 _DataAttributeMap(this._attributes);
169 171
170 // interface Map 172 // interface Map
171 173
172 void addAll(Map<String, String> other) { 174 void addAll(Map<String, String> other) {
173 other.forEach((k, v) { this[k] = v; }); 175 other.forEach((k, v) { this[k] = v; });
174 } 176 }
175 177
176 // TODO: Use lazy iterator when it is available on Map. 178 // TODO: Use lazy iterator when it is available on Map.
177 bool containsValue(String value) => values.any((v) => v == value); 179 bool containsValue(Object value) => values.any((v) => v == value);
178 180
179 bool containsKey(String key) => _attributes.containsKey(_attr(key)); 181 bool containsKey(Object key) => _attributes.containsKey(_attr(key));
180 182
181 String operator [](String key) => _attributes[_attr(key)]; 183 String operator [](Object key) => _attributes[_attr(key)];
182 184
183 void operator []=(String key, String value) { 185 void operator []=(String key, String value) {
184 _attributes[_attr(key)] = value; 186 _attributes[_attr(key)] = value;
185 } 187 }
186 188
187 String putIfAbsent(String key, String ifAbsent()) => 189 String putIfAbsent(String key, String ifAbsent()) =>
188 _attributes.putIfAbsent(_attr(key), ifAbsent); 190 _attributes.putIfAbsent(_attr(key), ifAbsent);
189 191
190 String remove(String key) => _attributes.remove(_attr(key)); 192 String remove(Object key) => _attributes.remove(_attr(key));
191 193
192 void clear() { 194 void clear() {
193 // Needs to operate on a snapshot since we are mutating the collection. 195 // Needs to operate on a snapshot since we are mutating the collection.
194 for (String key in keys) { 196 for (String key in keys) {
195 remove(key); 197 remove(key);
196 } 198 }
197 } 199 }
198 200
199 void forEach(void f(String key, String value)) { 201 void forEach(void f(String key, String value)) {
200 _attributes.forEach((String key, String value) { 202 _attributes.forEach((String key, String value) {
201 if (_matches(key)) { 203 if (_matches(key)) {
202 f(_strip(key), value); 204 f(_strip(key), value);
203 } 205 }
204 }); 206 });
205 } 207 }
206 208
207 Iterable<String> get keys { 209 Iterable<String> get keys {
208 final keys = new List<String>(); 210 final keys = <String>[];
209 _attributes.forEach((String key, String value) { 211 _attributes.forEach((String key, String value) {
210 if (_matches(key)) { 212 if (_matches(key)) {
211 keys.add(_strip(key)); 213 keys.add(_strip(key));
212 } 214 }
213 }); 215 });
214 return keys; 216 return keys;
215 } 217 }
216 218
217 Iterable<String> get values { 219 Iterable<String> get values {
218 final values = new List<String>(); 220 final values = <String>[];
219 _attributes.forEach((String key, String value) { 221 _attributes.forEach((String key, String value) {
220 if (_matches(key)) { 222 if (_matches(key)) {
221 values.add(value); 223 values.add(value);
222 } 224 }
223 }); 225 });
224 return values; 226 return values;
225 } 227 }
226 228
227 int get length => keys.length; 229 int get length => keys.length;
228 230
(...skipping 29 matching lines...) Expand all
258 String _toHyphenedName(String word) { 260 String _toHyphenedName(String word) {
259 var sb = new StringBuffer(); 261 var sb = new StringBuffer();
260 for (int i = 0; i < word.length; i++) { 262 for (int i = 0; i < word.length; i++) {
261 var lower = word[i].toLowerCase(); 263 var lower = word[i].toLowerCase();
262 if (word[i] != lower && i > 0) sb.write('-'); 264 if (word[i] != lower && i > 0) sb.write('-');
263 sb.write(lower); 265 sb.write(lower);
264 } 266 }
265 return sb.toString(); 267 return sb.toString();
266 } 268 }
267 } 269 }
OLDNEW
« no previous file with comments | « tools/dom/scripts/systemhtml.py ('k') | tools/dom/src/CrossFrameTypes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698