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 removes a CSS class. */ public class RemoveCssClassMoulder implements Moulder { private final Value<String> value; /** * @param value * a value that returns the CSS class */ public RemoveCssClassMoulder(Value<String> value) { this.value = value; } /** * @param cssClass * the CSS class */ public RemoveCssClassMoulder(String cssClass) { this(new SimpleValue<String>(cssClass)); } public List<Node> process(Element element) { if (element.hasAttr("class")) { final String cssClass = value.get(); final String attr = element.attr("class"); final String regex = "\\b" + Pattern.quote(cssClass) + "\\b"; String[] parts = attr.split(regex); if (parts == null) parts = new String[] { "" }; StringBuilder sb = new StringBuilder(); for (String part: parts) sb.append(' ').append(part.trim()); element.attr("class", sb.toString().trim()); } List<Node> res = new ArrayList<Node>(); res.add(element); return res; } }