public static TagType resolve(String value) { if (value == null || value.isEmpty()) { return null; } value = value.trim(); for (TagType type : getAll()) { if (type.getValue().equalsIgnoreCase(value)) { return type; } } return null; }
public static TagHolder resolveTagHolder(String tagString, int start, int end) { if (tagString == null || tagString.isEmpty()) { return null; } TagHolder result = new TagHolder(); String trimmedTag = tagString.substring(1, tagString.length() - 1); // Removed < and > char startChar = trimmedTag.charAt(0); if (startChar == '/') { result.setStartTag(false); trimmedTag = trimmedTag.substring(2); } else { result.setStartTag(true); trimmedTag = trimmedTag.substring(1); } int spaceLocation = trimmedTag.indexOf(" "); if (spaceLocation < 0) { spaceLocation = trimmedTag.length(); } String name = trimmedTag.substring(0, spaceLocation); TagType newType = TagType.resolve(name); if (newType == null) { logger.warn("Tag type not recognized: " + name); return null; } result.setType(newType); result.setStartTagPosition(start); result.setEndTagPosition(end); if (result.isStartTag()) { int indexOfVar = trimmedTag.indexOf("var="); String newExpression = trimmedTag.substring(indexOfVar + 5); newExpression = newExpression.substring(0, newExpression.lastIndexOf('"')); result.setExpression(newExpression); } return result; }