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

Unified Diff: tools/dom/templates/html/impl/impl_Element.darttemplate

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: tools/dom/templates/html/impl/impl_Element.darttemplate
diff --git a/tools/dom/templates/html/impl/impl_Element.darttemplate b/tools/dom/templates/html/impl/impl_Element.darttemplate
index 1ef1b731b379ddbaa4d889b577f7218b222e30f8..72af8a8363453b7a5bec1153e2dcdbed5c351950 100644
--- a/tools/dom/templates/html/impl/impl_Element.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Element.darttemplate
@@ -15,14 +15,22 @@ class _ChildrenElementList implements List {
: _childElements = element.$dom_children,
_element = element;
- List<Element> _toList() {
- final output = new List(_childElements.length);
+ List<Element> toList() {
+ final output = new List<Element>.fixedLength(_childElements.length);
for (int i = 0, len = _childElements.length; i < len; i++) {
output[i] = _childElements[i];
}
return output;
}
+ Set<Element> toSet() {
+ final output = new Set<Element>(_childElements.length);
+ for (int i = 0, len = _childElements.length; i < len; i++) {
+ output.add(_childElements[i]);
+ }
+ return output;
+ }
+
bool contains(Element element) => _childElements.contains(element);
void forEach(void f(Element element)) {
@@ -31,46 +39,71 @@ class _ChildrenElementList implements List {
}
}
- List<Element> filter(bool f(Element element)) {
- final output = [];
- forEach((Element element) {
- if (f(element)) {
- output.add(element);
- }
- });
- return new _FrozenElementList._wrap(output);
- }
-
bool every(bool f(Element element)) {
for (Element element in this) {
if (!f(element)) {
return false;
}
- };
+ }
return true;
}
- bool some(bool f(Element element)) {
+ bool any(bool f(Element element)) {
for (Element element in this) {
if (f(element)) {
return true;
}
- };
+ }
return false;
}
- Collection map(f(Element element)) {
- final out = [];
- for (Element el in this) {
- out.add(f(el));
- }
- return out;
+ String join([String separator]) {
+ return Collections.joinList(this, separator);
+ }
+
+ List mappedBy(f(Element element)) {
+ return new MappedList<Element, dynamic>(this, f);
}
+ Iterable<Element> where(bool f(Element element))
+ => new WhereIterable<Element>(this, f);
+
bool get isEmpty {
return _element.$dom_firstElementChild == null;
}
+ List<Element> take(int n) {
+ return new ListView<Element>(this, 0, n);
+ }
+
+ Iterable<Element> takeWhile(bool test(Element value)) {
+ return new TakeWhileIterable<Element>(this, test);
+ }
+
+ List<Element> skip(int n) {
+ return new ListView<Element>(this, n, null);
+ }
+
+ Iterable<Element> skipWhile(bool test(Element value)) {
+ return new SkipWhileIterable<Element>(this, test);
+ }
+
+ Element firstMatching(bool test(Element value), {Element orElse()}) {
+ return Collections.firstMatching(this, test, orElse);
+ }
+
+ Element lastMatching(bool test(Element value), {Element orElse()}) {
+ return Collections.lastMatchingInList(this, test, orElse);
+ }
+
+ Element singleMatching(bool test(Element value)) {
+ return Collections.singleMatching(this, test);
+ }
+
+ Element elementAt(int index) {
+ return this[index];
+ }
+
int get length {
return _childElements.length;
}
@@ -95,10 +128,10 @@ class _ChildrenElementList implements List {
Element addLast(Element value) => add(value);
- Iterator<Element> iterator() => _toList().iterator();
+ Iterator<Element> get iterator => toList().iterator;
- void addAll(Collection<Element> collection) {
- for (Element element in collection) {
+ void addAll(Iterable<Element> iterable) {
+ for (Element element in iterable) {
_element.$dom_appendChild(element);
}
}
@@ -159,12 +192,29 @@ class _ChildrenElementList implements List {
}
Element get first {
- return _element.$dom_firstElementChild;
+ Element result = _element.$dom_firstElementChild;
+ if (result == null) throw new StateError("No elements");
+ return result;
}
Element get last {
- return _element.$dom_lastElementChild;
+ Element result = _element.$dom_lastElementChild;
+ if (result == null) throw new StateError("No elements");
+ return result;
+ }
+
+ Element get single {
+ if (length > 1) throw new StateError("More than one element");
+ return first;
+ }
+
+ Element min([int compare(Element a, Element b)]) {
+ return _Collections.minInList(this, compare);
+ }
+
+ Element max([int compare(Element a, Element b)]) {
+ return _Collections.maxInList(this, compare);
}
}
@@ -190,22 +240,17 @@ class _FrozenElementList implements List {
}
}
- Collection map(f(Element element)) {
- final out = [];
- for (Element el in this) {
- out.add(f(el));
- }
- return out;
+ String join([String separator]) {
+ return Collections.joinList(this, separator);
}
- List<Element> filter(bool f(Element element)) {
- final out = [];
- for (Element el in this) {
- if (f(el)) out.add(el);
- }
- return out;
+ List mappedBy(f(Element element)) {
+ return new MappedList<Element, dynamic>(this, f);
}
+ Iterable<Element> where(bool f(Element element))
+ => new WhereIterable<Element>(this, f);
+
bool every(bool f(Element element)) {
for(Element element in this) {
if (!f(element)) {
@@ -215,7 +260,7 @@ class _FrozenElementList implements List {
return true;
}
- bool some(bool f(Element element)) {
+ bool any(bool f(Element element)) {
for(Element element in this) {
if (f(element)) {
return true;
@@ -224,6 +269,38 @@ class _FrozenElementList implements List {
return false;
}
+ List<Element> take(int n) {
+ return new ListView<Element>(this, 0, n);
+ }
+
+ Iterable<Element> takeWhile(bool test(T value)) {
+ return new TakeWhileIterable<Element>(this, test);
+ }
+
+ List<Element> skip(int n) {
+ return new ListView<Element>(this, n, null);
+ }
+
+ Iterable<Element> skipWhile(bool test(T value)) {
+ return new SkipWhileIterable<Element>(this, test);
+ }
+
+ Element firstMatching(bool test(Element value), {Element orElse()}) {
+ return Collections.firstMatching(this, test, orElse);
+ }
+
+ Element lastMatching(bool test(Element value), {Element orElse()}) {
+ return Collections.lastMatchingInList(this, test, orElse);
+ }
+
+ Element singleMatching(bool test(Element value)) {
+ return Collections.singleMatching(this, test);
+ }
+
+ Element elementAt(int index) {
+ return this[index];
+ }
+
bool get isEmpty => _nodeList.isEmpty;
int get length => _nodeList.length;
@@ -246,9 +323,9 @@ class _FrozenElementList implements List {
throw new UnsupportedError('');
}
- Iterator<Element> iterator() => new _FrozenElementListIterator(this);
+ Iterator<Element> get iterator => new _FrozenElementListIterator(this);
- void addAll(Collection<Element> collection) {
+ void addAll(Iterable<Element> iterable) {
throw new UnsupportedError('');
}
@@ -297,6 +374,16 @@ class _FrozenElementList implements List {
Element get first => _nodeList.first;
Element get last => _nodeList.last;
+
+ Element get single => _nodeList.single;
+
+ Element min([int compare(Element a, Element b)]) {
+ return _Collections.minInList(this, compare);
+ }
+
+ Element max([int compare(Element a, Element b)]) {
+ return _Collections.maxInList(this, compare);
+ }
}
class _FrozenElementListIterator implements Iterator<Element> {
@@ -306,21 +393,28 @@ class _FrozenElementListIterator implements Iterator<Element> {
_FrozenElementListIterator(this._list);
/**
- * Gets the next element in the iteration. Throws a
- * [StateError("No more elements")] if no element is left.
+ * Moves to the next element. Returns true if the iterator is positioned
+ * at an element. Returns false if it is positioned after the last element.
*/
- Element next() {
- if (!hasNext) {
- throw new StateError("No more elements");
+ bool moveNext() {
+ int nextIndex = _index + 1;
+ if (nextIndex < _list.length) {
+ _current = _list[nextIndex];
+ _index = nextIndex;
+ return true;
}
-
- return _list[_index++];
+ _index = _list.length;
+ _current = null;
+ return false;
}
/**
- * Returns whether the [Iterator] has elements left.
+ * Returns the element the [Iterator] is positioned at.
+ *
+ * Return [:null:] if the iterator is positioned before the first, or
+ * after the last element.
*/
- bool get hasNext => _index < _list.length;
+ E get current => _current;
}
class _ElementCssClassSet extends CssClassSet {
@@ -344,7 +438,7 @@ class _ElementCssClassSet extends CssClassSet {
void writeClasses(Set<String> s) {
List list = new List.from(s);
- _element.$dom_className = Strings.join(list, ' ');
+ _element.$dom_className = s.join(' ');
}
}

Powered by Google App Engine
This is Rietveld 408576698