Use SetBase for CssClassSet
diff --git a/lib/src/css_class_set.dart b/lib/src/css_class_set.dart
index e1fc3f1..eca2400 100644
--- a/lib/src/css_class_set.dart
+++ b/lib/src/css_class_set.dart
@@ -9,7 +9,7 @@
import 'package:html/dom.dart';
-class ElementCssClassSet extends CssClassSetImpl {
+class ElementCssClassSet extends _CssClassSetImpl {
final Element _element;
ElementCssClassSet(this._element);
@@ -108,7 +108,7 @@
void toggleAll(Iterable<String> iterable, [bool shouldAdd]);
}
-abstract class CssClassSetImpl implements CssClassSet {
+abstract class _CssClassSetImpl extends SetBase<String> implements CssClassSet {
String toString() {
return readClasses().join(' ');
}
@@ -140,43 +140,10 @@
*/
bool get frozen => false;
- // interface Iterable - BEGIN
Iterator<String> get iterator => readClasses().iterator;
- // interface Iterable - END
-
- // interface Collection - BEGIN
- void forEach(void f(String element)) {
- readClasses().forEach(f);
- }
-
- String join([String separator = ""]) => readClasses().join(separator);
-
- Iterable<T> map<T>(T f(String e)) => readClasses().map(f);
-
- Iterable<String> where(bool f(String element)) => readClasses().where(f);
-
- Iterable<T> expand<T>(Iterable<T> f(String element)) =>
- readClasses().expand(f);
-
- bool every(bool f(String element)) => readClasses().every(f);
-
- bool any(bool f(String element)) => readClasses().any(f);
-
- bool get isEmpty => readClasses().isEmpty;
-
- bool get isNotEmpty => readClasses().isNotEmpty;
int get length => readClasses().length;
- String reduce(String combine(String value, String element)) {
- return readClasses().reduce(combine);
- }
-
- T fold<T>(T initialValue, T combine(T previousValue, String element)) {
- return readClasses().fold(initialValue, combine);
- }
- // interface Collection - END
-
// interface Set - BEGIN
/**
* Determine if this element contains the class [value].
@@ -189,6 +156,8 @@
/** Lookup from the Set interface. Not interesting for a String set. */
String lookup(Object value) => contains(value) ? value as String : null;
+ Set<String> toSet() => readClasses().toSet();
+
/**
* Add the class [value] to element.
*
@@ -198,7 +167,7 @@
bool add(String value) {
// TODO - figure out if we need to do any validation here
// or if the browser natively does enough.
- return modify((s) => s.add(value));
+ return _modify((s) => s.add(value));
}
/**
@@ -217,27 +186,6 @@
}
/**
- * Add all classes specified in [iterable] to element.
- *
- * This is the Dart equivalent of jQuery's
- * [addClass](http://api.jquery.com/addClass/).
- */
- void addAll(Iterable<String> iterable) {
- // TODO - see comment above about validation.
- modify((s) => s.addAll(iterable));
- }
-
- /**
- * Remove all classes specified in [iterable] from element.
- *
- * This is the Dart equivalent of jQuery's
- * [removeClass](http://api.jquery.com/removeClass/).
- */
- void removeAll(Iterable<Object> iterable) {
- modify((s) => s.removeAll(iterable));
- }
-
- /**
* Toggles all classes specified in [iterable] on element.
*
* Iterate through [iterable]'s items, and add it if it is not on it, or
@@ -251,53 +199,6 @@
iterable.forEach((e) => toggle(e, shouldAdd));
}
- void retainAll(Iterable<Object> iterable) {
- modify((s) => s.retainAll(iterable));
- }
-
- void removeWhere(bool test(String name)) {
- modify((s) => s.removeWhere(test));
- }
-
- void retainWhere(bool test(String name)) {
- modify((s) => s.retainWhere(test));
- }
-
- bool containsAll(Iterable<Object> collection) =>
- readClasses().containsAll(collection);
-
- Set<String> intersection(Set<Object> other) =>
- readClasses().intersection(other);
-
- Set<String> union(Set<String> other) => readClasses().union(other);
-
- Set<String> difference(Set<Object> other) => readClasses().difference(other);
-
- String get first => readClasses().first;
- String get last => readClasses().last;
- String get single => readClasses().single;
- List<String> toList({bool growable: true}) =>
- readClasses().toList(growable: growable);
- Set<String> toSet() => readClasses().toSet();
- Iterable<String> take(int n) => readClasses().take(n);
- Iterable<String> takeWhile(bool test(String value)) =>
- readClasses().takeWhile(test);
- Iterable<String> skip(int n) => readClasses().skip(n);
- Iterable<String> skipWhile(bool test(String value)) =>
- readClasses().skipWhile(test);
- String firstWhere(bool test(String value), {String orElse()}) =>
- readClasses().firstWhere(test, orElse: orElse);
- String lastWhere(bool test(String value), {String orElse()}) =>
- readClasses().lastWhere(test, orElse: orElse);
- String singleWhere(bool test(String value)) =>
- readClasses().singleWhere(test);
- String elementAt(int index) => readClasses().elementAt(index);
-
- void clear() {
- modify((s) => s.clear());
- }
- // interface Set - END
-
/**
* Helper method used to modify the set of css classes on this element.
*
@@ -307,7 +208,7 @@
* After f returns, the modified set is written to the
* className property of this element.
*/
- modify(f(Set<String> s)) {
+ bool _modify(bool f(Set<String> s)) {
Set<String> s = readClasses();
var ret = f(s);
writeClasses(s);
diff --git a/pubspec.yaml b/pubspec.yaml
index 265a983..09bf52e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: html
-version: 0.13.2
+version: 0.13.3-dev
author: Dart Team <misc@dartlang.org>
description: A library for working with HTML documents. Previously known as html5lib.
homepage: https://github.com/dart-lang/html