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

Unified Diff: tools/dom/templates/immutable_list_mixin.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
« no previous file with comments | « tools/dom/templates/html/impl/impl_Storage.darttemplate ('k') | tools/html_json_doc/lib/json_to_html.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/dom/templates/immutable_list_mixin.darttemplate
diff --git a/tools/dom/templates/immutable_list_mixin.darttemplate b/tools/dom/templates/immutable_list_mixin.darttemplate
index 0728c244148c98a1b610b8b82cff513d7975cf44..f94ba1ca29fb4df2cc2fd3c216fe8ca8a4659eb3 100644
--- a/tools/dom/templates/immutable_list_mixin.darttemplate
+++ b/tools/dom/templates/immutable_list_mixin.darttemplate
@@ -3,31 +3,17 @@
// From Iterable<$E>:
- Iterator<$E> iterator() {
+ Iterator<$E> get iterator {
// Note: NodeLists are not fixed size. And most probably length shouldn't
// be cached in both iterator _and_ forEach method. For now caching it
// for consistency.
return new FixedSizeListIterator<$E>(this);
}
- // From Collection<$E>:
$if DEFINE_LENGTH_AS_NUM_ITEMS
// SVG Collections expose numberOfItems rather than length.
int get length => numberOfItems;
$endif
-
- void add($E value) {
- throw new UnsupportedError("Cannot add to immutable List.");
- }
-
- void addLast($E value) {
- throw new UnsupportedError("Cannot add to immutable List.");
- }
-
- void addAll(Collection<$E> collection) {
- throw new UnsupportedError("Cannot add to immutable List.");
- }
-
dynamic reduce(dynamic initialValue, dynamic combine(dynamic, $E)) {
return Collections.reduce(this, initialValue, combine);
}
@@ -40,17 +26,60 @@ $endif
void forEach(void f($E element)) => Collections.forEach(this, f);
- Collection map(f($E element)) => Collections.map(this, [], f);
+ String join([String separator]) => Collections.joinList(this, separator);
+
+ List mappedBy(f($E element)) => new MappedList<$E, dynamic>(this, f);
- Collection<$E> filter(bool f($E element)) =>
- Collections.filter(this, <$E>[], f);
+ Iterable<$E> where(bool f($E element)) => new WhereIterable<$E>(this, f);
bool every(bool f($E element)) => Collections.every(this, f);
- bool some(bool f($E element)) => Collections.some(this, f);
+ bool any(bool f($E element)) => Collections.any(this, f);
bool get isEmpty => this.length == 0;
+ List<$E> take(int n) => new ListView<$E>(this, 0, n);
+
+ Iterable<$E> takeWhile(bool test($E value)) {
+ return new TakeWhileIterable<$E>(this, test);
+ }
+
+ List<$E> skip(int n) => new ListView<$E>(this, n, null);
+
+ Iterable<$E> skipWhile(bool test($E value)) {
+ return new SkipWhileIterable<$E>(this, test);
+ }
+
+ $E firstMatching(bool test($E value), { $E orElse() }) {
+ return Collections.firstMatching(this, test, orElse);
+ }
+
+ $E lastMatching(bool test($E value), {$E orElse()}) {
+ return Collections.lastMatchingInList(this, test, orElse);
+ }
+
+ $E singleMatching(bool test($E value)) {
+ return Collections.singleMatching(this, test);
+ }
+
+ $E elementAt(int index) {
+ return this[index];
+ }
+
+ // From Collection<$E>:
+
+ void add($E value) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ void addLast($E value) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
+ void addAll(Iterable<$E> iterable) {
+ throw new UnsupportedError("Cannot add to immutable List.");
+ }
+
// From List<$E>:
$if DEFINE_LENGTH_SETTER
void set length(int value) {
@@ -78,9 +107,25 @@ $endif
return Lists.lastIndexOf(this, element, start);
}
- $E get first => this[0];
+ $E get first {
+ if (this.length > 0) return this[0];
+ throw new StateError("No elements");
+ }
+
+ $E get last {
+ if (this.length > 0) return this[this.length - 1];
+ throw new StateError("No elements");
+ }
+
+ $E get single {
+ if (length == 1) return this[0];
+ if (length == 0) throw new StateError("No elements");
+ throw new StateError("More than one element");
+ }
+
+ $E min([int compare($E a, $E b)]) => _Collections.minInList(this, compare);
- $E get last => this[length - 1];
+ $E max([int compare($E a, $E b)]) => _Collections.maxInList(this, compare);
$E removeAt(int pos) {
throw new UnsupportedError("Cannot removeAt on immutable List.");
« no previous file with comments | « tools/dom/templates/html/impl/impl_Storage.darttemplate ('k') | tools/html_json_doc/lib/json_to_html.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698