/** * Returns the nesting depth of this element in the document element hierarchy. * <p> * The {@link Source#fullSequentialParse()} method must be called (either explicitly or implicitly) after construction of the <code>Source</code> object if this method is to be used. * An <code>IllegalStateException</code> is thrown if a full sequential parse has not been performed or if it was performed after this element was found. * <p> * A <a href="Source.html#TopLevelElement">top-level element</a> has a nesting depth of <code>0</code>. * <p> * An element formed from a {@linkplain TagType#isServerTag() server tag} always have a nesting depth of <code>0</code>, * regardless of whether it is nested inside a normal element. * <p> * See the {@link Source#getChildElements()} method for more details. * * @return the nesting depth of this element in the document element hierarchy. * @throws IllegalStateException if a {@linkplain Source#fullSequentialParse() full sequential parse} has not been performed or if it was performed after this element was found. * @see #getParentElement() */ public int getDepth() { if (depth==-1) { getParentElement(); if (depth==-1) depth=0; } return depth; }
public static Element getNamedParent(final Element elem, final String tagName) { Element parentElem = elem.getParentElement(); while (parentElem != null && !parentElem.getName().equals(tagName)) { parentElem = parentElem.getParentElement(); } return parentElem; }
public static Element getNamedParent(final Element elem, final String tagName) { Element parentElem = elem.getParentElement(); while (parentElem != null && !parentElem.getName().equals(tagName)) { parentElem = parentElem.getParentElement(); } return parentElem; }
private String getClosingTagsBehindElement(Element element) { StringBuilder closingTags = new StringBuilder(); Element parent = element.getParentElement(); while (parent != null) { closingTags.append( (parent.getEndTag() == null) ? "" : ("</" + parent.getEndTag().getName() + ">") ); parent = parent.getParentElement(); } return closingTags.toString(); }
/** * Returns the previous sibling of a given element * * @param element * The Jericho HTML element object * @return the previous sibling of the given element. */ public static Element getPreviousSibling(final Element element) { if (element.getParentElement() != null) { final List<Element> parentElements = element.getParentElement().getChildElements(); final int idx = parentElements.indexOf(element); if (idx > 0) { return parentElements.get(idx - 1); } } else if (element.getSource() != null) { final List<Element> parentElements = element.getSource().getChildElements(); final int idx = parentElements.indexOf(element); if (idx > 0) { return parentElements.get(idx - 1); } } return null; }
/** * Returns the previous sibling of a given element * * @param element * The Jericho HTML element object * @return the previous sibling of the given element. */ public static Element getPreviousSibling(final Element element) { if (element.getParentElement() != null) { final List<Element> parentElements = element.getParentElement().getChildElements(); final int idx = parentElements.indexOf(element); if (idx > 0) { return parentElements.get(idx - 1); } } else if (element.getSource() != null) { final List<Element> parentElements = element.getSource().getChildElements(); final int idx = parentElements.indexOf(element); if (idx > 0) { return parentElements.get(idx - 1); } } return null; }
elem = elem.getParentElement();
elem = elem.getParentElement();
@Override public void element(final Element element, final Context context, final BugList bugs) { if (element.getName().equals(CF.CFARGUMENT)) { final String name = element.getAttributeValue(CF.NAME) != null ? element.getAttributeValue(CF.NAME) : ""; ArgInfo argInfo = new ArgInfo(); argInfo.casedName=name; argInfo.argumentLineNo=context.startLine(); argInfo.argumentOffset=element.getAttributeValue(CF.NAME) != null ? element.getAttributes().get(CF.NAME).getValueSegment().getBegin() : element.getBegin(); argInfo.type=element.getAttributeValue(CF.TYPE); currentArgs.put(name.toLowerCase(), argInfo); final String code = element.getParentElement().toString(); if (isUsed(code, name.toLowerCase())) { argInfo.used=true; } } }
@Override public void element(final Element element, final Context context, final BugList bugs) { if (element.getName().equals(CF.CFARGUMENT)) { final String name = element.getAttributeValue(CF.NAME) != null ? element.getAttributeValue(CF.NAME) : ""; ArgInfo argInfo = new ArgInfo(); argInfo.casedName=name; argInfo.argumentLineNo=context.startLine(); argInfo.argumentOffset=element.getAttributeValue(CF.NAME) != null ? element.getAttributes().get(CF.NAME).getValueSegment().getBegin() : element.getBegin(); argInfo.type=element.getAttributeValue(CF.TYPE); currentArgs.put(name.toLowerCase(), argInfo); final String code = element.getParentElement().toString(); if (isUsed(code, name.toLowerCase())) { argInfo.used=true; } } }
while ((element = element.getParentElement()) != null) { context.addParentTag(element.getName());
@Override public void element(final Element element, final Context context, final BugList bugs) { if (element.getName().equals(CF.CFARGUMENT)) { final String name = element.getAttributeValue(CF.NAME); final boolean required = CFTool.toBoolean(element.getAttributeValue(CF.REQUIRED)); final String defaultExpr = element.getAttributeValue(CF.DEFAULT); final String code = element.getParentElement().toString(); final boolean checked = isCheck(code, name); if (!required && defaultExpr == null && !checked) { element.getSource().getRow(element.getBegin()); element.getSource().getColumn(element.getBegin()); context.addMessage("ARG_DEFAULT_MISSING", name); } } }
@Override public void element(final Element element, final Context context, final BugList bugs) { if (element.getName().equals(CF.CFARGUMENT)) { final String name = element.getAttributeValue(CF.NAME); final boolean required = CFTool.toBoolean(element.getAttributeValue(CF.REQUIRED)); final String defaultExpr = element.getAttributeValue(CF.DEFAULT); final String code = element.getParentElement().toString(); final boolean checked = isCheck(code, name); if (!required && defaultExpr == null && !checked) { element.getSource().getRow(element.getBegin()); element.getSource().getColumn(element.getBegin()); context.addMessage("ARG_DEFAULT_MISSING", name); } } }