package moulder.moulds; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import moulder.Moulder; import moulder.Value; import moulder.values.SimpleValue; /** * Moulder, which adds a CSS class if it's not already present. */ public class AddCssClassMoulder implements Moulder { private final Value<String> value; /** * @param value * a value that returns the CSS class */ public AddCssClassMoulder(Value<String> value) { this.value = value; } /** * @param cssClass * the CSS class */ public AddCssClassMoulder(String cssClass) { this(new SimpleValue<String>(cssClass)); } public List<Node> process(Element element) { final String cssClass = value.get(); final String attr = element.attr("class"); String regex = ".*\\b" + Pattern.quote(cssClass) + "\\b.*"; if (!attr.matches(regex)) { final String val = attr.trim() + " " + cssClass; element.attr("class", val.trim()); } List<Node> res = new ArrayList<Node>(); res.add(element); return res; } }