Skip to content

Commit c510371

Browse files
committed
Added class, id mutations to NodeBuilder
1 parent 93846d8 commit c510371

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

lib/src/node_builder.dart

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,35 @@ class NodeBuilder {
7272

7373
NodeBuilder removeAttribute(String name) =>
7474
changeAttributesMapped((map) => map..remove(name));
75+
76+
NodeBuilder setId(String id) => setAttribute('id', id);
77+
78+
NodeBuilder setClassName(String className) =>
79+
setAttribute('class', className);
80+
81+
NodeBuilder setClasses(Iterable<String> classes) =>
82+
setClassName(classes.join(' '));
83+
84+
NodeBuilder setClassesMapped(Iterable<String> Function(List<String>) f) {
85+
var clazz = attributes['class'];
86+
var classes = <String>[];
87+
88+
if (clazz is String)
89+
classes.addAll(clazz.split(' '));
90+
else if (clazz is Iterable) classes.addAll(clazz.map((s) => s.toString()));
91+
92+
return setClasses(f(classes));
93+
}
94+
95+
NodeBuilder addClass(String className) => setClassesMapped(
96+
(classes) => classes.contains(className) ? classes : classes
97+
..add(className));
98+
99+
NodeBuilder removeClass(String className) =>
100+
setClassesMapped((classes) => classes..remove(className));
101+
102+
NodeBuilder toggleClass(String className) =>
103+
setClassesMapped((classes) => classes.contains(className)
104+
? (classes..remove(className))
105+
: (classes..add(className)));
75106
}

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: html_builder
22
description: Build HTML AST's and render them to HTML. This can be used as an internal DSL, i.e. for a templating engine.
3-
version: 1.0.4
3+
version: 1.0.5
44
author: Tobe O <thosakwe@gmail.com>
55
homepage: https://github.com/thosakwe/html_builder
66
environment:

0 commit comments

Comments
 (0)