public List<Element> getChildElements() { return fSource.getChildElements(); }
/** * Returns the parent of this element in the document element hierarchy. * <p> * The {@link Source#fullSequentialParse()} method must be called (either explicitly or implicitly) immediately 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> * This method returns <code>null</code> for a <a href="Source.html#TopLevelElement">top-level element</a>, * as well as any element formed from a {@linkplain TagType#isServerTag() server tag}, regardless of whether it is nested inside a normal element. * <p> * See the {@link Source#getChildElements()} method for more details. * * @return the parent of this element in the document element hierarchy, or <code>null</code> if this element is a <a href="Source.html#TopLevelElement">top-level element</a>. * @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 #getChildElements() */ public Element getParentElement() { if (parentElement==Element.NOT_CACHED) { if (!source.wasFullSequentialParseCalled()) throw new IllegalStateException("This operation is only possible after a full sequential parse has been performed"); if (startTag.isOrphaned()) throw new IllegalStateException("This operation is only possible if a full sequential parse was performed immediately after construction of the Source object"); source.getChildElements(); if (parentElement==Element.NOT_CACHED) parentElement=null; } return parentElement; }
@Override public void parse(URL url, Reader reader, IHtmlCallback callback, String fileName) throws TranslatorToCAst.Error { warnings.clear(); Parser parser = new Parser(callback, fileName); Source src; try { src = new Source(reader); src.setLogger(Config.LoggerProvider.getLogger(fileName)); List<Element> childElements = src.getChildElements(); for (Element e : childElements) { parser.parse(e); } if (! warnings.isEmpty()) { throw new TranslatorToCAst.Error(warnings); } } catch (IOException e) { System.err.println("Error parsing file: " + e.getMessage()); } } /**
@Override public void parse(URL url, Reader reader, IHtmlCallback callback, String fileName) throws TranslatorToCAst.Error { warnings.clear(); Parser parser = new Parser(callback, fileName); Source src; try { src = new Source(reader); src.setLogger(Config.LoggerProvider.getLogger(fileName)); List<Element> childElements = src.getChildElements(); for (Element e : childElements) { parser.parse(e); } if (! warnings.isEmpty()) { throw new TranslatorToCAst.Error(warnings); } } catch (IOException e) { System.err.println("Error parsing file: " + e.getMessage()); } } /**
/** * 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; }
/** * Parse a given HTML template and return the a result object containing the expressions and a * transformed HTML. * * @param htmlTemplate The HTML template to process, as a String * @param context Context of the Component we are currently processing * @param messager Used to report errors in template during Annotation Processing * @return A {@link TemplateParserResult} containing the processed template and expressions */ public TemplateParserResult parseHtmlTemplate(String htmlTemplate, TemplateParserContext context, Elements elements, Messager messager, URI htmlTemplateUri) { this.context = context; this.elements = elements; this.messager = messager; this.logger = new TemplateParserLogger(context, messager); this.htmlTemplateUri = htmlTemplateUri; initJerichoConfig(this.logger); Source source = new Source(htmlTemplate); outputDocument = new OutputDocument(source); result = new TemplateParserResult(context); processImports(source); result.setScopedCss(processScopedCss(source)); source.getChildElements().forEach(this::processElement); result.setProcessedTemplate(outputDocument.toString()); return result; }