package org.nate.internal.selector;
import static org.nate.internal.util.Assertions.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.nate.Engine;
public class NateSelectors {
private static final Pattern ATTRIBUTE_SELECTOR_PATTERN = Pattern.compile("^(.*)@@(.+)$");
public static NateSelector from(Object selectorObject) {
assertType("selector", selectorObject, String.class);
String selectorString = ((String) selectorObject).trim();
Matcher attributeSelectorMatcher = ATTRIBUTE_SELECTOR_PATTERN.matcher(selectorString);
if (attributeSelectorMatcher.matches()) {
String elementSelectorString = attributeSelectorMatcher.group(1).trim();
String attributeSelectorString = attributeSelectorMatcher.group(2).trim();
return AttributeSelectors.from(elementSelectorString, attributeSelectorString);
}
if (Engine.CONTENT_ATTRIBUTE.equals(selectorString)) {
return new SelfSelector();
}
return new ElementSelector(selectorString);
}
}