Class PreprocessingVisitor

java.lang.Object
org.xmlet.htmlapifaster.ElementVisitor
htmlflow.visitor.HtmlVisitor
htmlflow.visitor.PreprocessingVisitor
Direct Known Subclasses:
PreprocessingVisitorAsync

public class PreprocessingVisitor extends HtmlVisitor
This visitor is used to make a preprocessing resolution of an HtmlTemplate. It will collect the resulting HTML from visiting static HTML elements into an auxiliary StringBuilder that later is extracted to: String staticHtml = sb.substring(staticBlockIndex); to create an HtmlContinuationSyncStatic object. It also interleaves the creation of HtmlContinuationDynamic nodes that only store dynamicHtmlBlock objects corresponding to a BiConsumer<E, U> (being E an element and U the model). The U comes from external module HtmlApiFaster whose classes are not strongly typed with the Model. Thus, only the dynamic() and visitDynamic() methods in HtmlApiFaster were made generic to carry a type parameter U corresponding to the type of the Model.
  • Field Summary

    Fields inherited from class htmlflow.visitor.HtmlVisitor

    depth, isClosed, isIndented, out
  • Constructor Summary

    Constructors
    Constructor
    Description
    PreprocessingVisitor(boolean isIndented)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final void
     
    clone(boolean isIndented)
    Since HtmlVisitor is immutable this is the preferred way to create a copy of the existing HtmlVisitor instance with a different isIndented state.
     
    protected final void
     
    void
    resolve(Object model)
    Creates the last static HTML block.
    sb()
    The main StringBuilder.
    <M, E extends org.xmlet.htmlapifaster.Element>
    void
    visitAwait(E element, org.xmlet.htmlapifaster.async.AwaitConsumer<E,M> asyncAction)
     
    <E extends org.xmlet.htmlapifaster.Element, U>
    void
    visitDynamic(E element, BiConsumer<E,U> dynamicHtmlBlock)
    Here we are creating 2 HtmlContinuation objects: one for previous static HTML and a next one corresponding to the consumer passed to dynamic().

    Methods inherited from class org.xmlet.htmlapifaster.ElementVisitor

    visitAttributeAbbr, visitAttributeAccept, visitAttributeAcceptCharset, visitAttributeAccesskey, visitAttributeAction, visitAttributeAllowfullscreen, visitAttributeAllowpaymentrequest, visitAttributeAlt, visitAttributeAltimg, visitAttributeAltimgHeigth, visitAttributeAltimgValign, visitAttributeAltimgWidth, visitAttributeAlttext, visitAttributeAsync, visitAttributeAutocomplete, visitAttributeAutoComplete, visitAttributeAutofocus, visitAttributeAutoplay, visitAttributeBorder, visitAttributeCdgroup, visitAttributeCell, visitAttributeCharset, visitAttributeChecked, visitAttributeCite, visitAttributeClass, visitAttributeCols, visitAttributeColspan, visitAttributeColumnheader, visitAttributeContent, visitAttributeContenteditable, visitAttributeControls, visitAttributeCoords, visitAttributeCrossorigin, visitAttributeData, visitAttributeDatetime, visitAttributeDefault, visitAttributeDefer, visitAttributeDir, visitAttributeDirname, visitAttributeDirName, visitAttributeDisabled, visitAttributeDisplay, visitAttributeDownload, visitAttributeDraggable, visitAttributeEnctype, visitAttributeFor, visitAttributeForm, visitAttributeFormaction, visitAttributeFormenctype, visitAttributeFormmethod, visitAttributeFormnovalidate, visitAttributeFormtarget, visitAttributeHeaders, visitAttributeHeight, visitAttributeHidden, visitAttributeHigh, visitAttributeHref, visitAttributeHreflang, visitAttributeHttpEquiv, visitAttributeId, visitAttributeIsmap, visitAttributeKind, visitAttributeLabel, visitAttributeLang, visitAttributeList, visitAttributeLongdesc, visitAttributeLoop, visitAttributeLow, visitAttributeManifest, visitAttributeMax, visitAttributeMaxlength, visitAttributeMaxwidth, visitAttributeMedia, visitAttributeMethod, visitAttributeMin, visitAttributeMinlength, visitAttributeMultiple, visitAttributeMuted, visitAttributeName, visitAttributeNonce, visitAttributeNovalidate, visitAttributeOnabort, visitAttributeOnafterprint, visitAttributeOnauxclick, visitAttributeOnbeforeprint, visitAttributeOnbeforeunload, visitAttributeOnblur, visitAttributeOncancel, visitAttributeOncanplay, visitAttributeOncanplaythrough, visitAttributeOnchange, visitAttributeOnclick, visitAttributeOnclose, visitAttributeOncuechange, visitAttributeOndblclick, visitAttributeOndrag, visitAttributeOndragend, visitAttributeOndragenter, visitAttributeOndragexit, visitAttributeOndragleave, visitAttributeOndragover, visitAttributeOndragstart, visitAttributeOndrop, visitAttributeOndurationchange, visitAttributeOnemptied, visitAttributeOnended, visitAttributeOnerror, visitAttributeOnfocus, visitAttributeOnhashchange, visitAttributeOninput, visitAttributeOninvalid, visitAttributeOnkeydown, visitAttributeOnkeypress, visitAttributeOnkeyup, visitAttributeOnlanguagechange, visitAttributeOnload, visitAttributeOnloadeddata, visitAttributeOnloadedmetadata, visitAttributeOnloadend, visitAttributeOnloadstart, visitAttributeOnmessage, visitAttributeOnmousedown, visitAttributeOnmouseenter, visitAttributeOnmouseleave, visitAttributeOnmousemove, visitAttributeOnmouseout, visitAttributeOnmouseover, visitAttributeOnmouseup, visitAttributeOnoffline, visitAttributeOnonline, visitAttributeOnpagehide, visitAttributeOnpageshow, visitAttributeOnpause, visitAttributeOnplay, visitAttributeOnplaying, visitAttributeOnpopstate, visitAttributeOnprogress, visitAttributeOnratechange, visitAttributeOnrejectionhandled, visitAttributeOnreset, visitAttributeOnresize, visitAttributeOnscroll, visitAttributeOnseeked, visitAttributeOnseeking, visitAttributeOnselect, visitAttributeOnshow, visitAttributeOnstalled, visitAttributeOnstorage, visitAttributeOnsubmit, visitAttributeOnsuspend, visitAttributeOntimeupdate, visitAttributeOntoogle, visitAttributeOnunhandledrejection, visitAttributeOnunload, visitAttributeOnvolumenchange, visitAttributeOnwaiting, visitAttributeOnwheel, visitAttributeOpen, visitAttributeOptimum, visitAttributeOverflow, visitAttributePattern, visitAttributePlaceholder, visitAttributePoster, visitAttributePreload, visitAttributeReadonly, visitAttributeReferrerpolicy, visitAttributeRel, visitAttributeRequired, visitAttributeRev, visitAttributeReversed, visitAttributeRow, visitAttributeRowgroup, visitAttributeRowheader, visitAttributeRows, visitAttributeRowspan, visitAttributeSandbox, visitAttributeScope, visitAttributeSelected, visitAttributeShape, visitAttributeSize, visitAttributeSizes, visitAttributeSpan, visitAttributeSpellcheck, visitAttributeSrc, visitAttributeSrcDoc, visitAttributeSrclang, visitAttributeSrcset, visitAttributeSrcSet, visitAttributeStart, visitAttributeStep, visitAttributeStyle, visitAttributeTabIndex, visitAttributeTarget, visitAttributeTitle, visitAttributeTranslate, visitAttributeType, visitAttributeTypemustmatch, visitAttributeUsemap, visitAttributeValue, visitAttributeWidth, visitAttributeWrap, visitAttributeX, visitAttributeY, visitElementA, visitElementAbbr, visitElementAddress, visitElementArea, visitElementArticle, visitElementAside, visitElementAudio, visitElementB, visitElementBase, visitElementBdi, visitElementBdo, visitElementBlockquote, visitElementBody, visitElementBr, visitElementButton, visitElementCanvas, visitElementCaption, visitElementCite, visitElementCode, visitElementCol, visitElementColgroup, visitElementData, visitElementDatalist, visitElementDd, visitElementDel, visitElementDetails, visitElementDetailsComplete, visitElementDetailsSummary, visitElementDfn, visitElementDialog, visitElementDiv, visitElementDl, visitElementDt, visitElementEm, visitElementEmbed, visitElementFieldset, visitElementFigcaption, visitElementFigure, visitElementFooter, visitElementForm, visitElementH1, visitElementH2, visitElementH3, visitElementH4, visitElementH5, visitElementH6, visitElementHead, visitElementHeader, visitElementHr, visitElementHtml, visitElementI, visitElementIframe, visitElementImg, visitElementInput, visitElementIns, visitElementKbd, visitElementLabel, visitElementLegend, visitElementLi, visitElementLink, visitElementMain, visitElementMap, visitElementMark, visitElementMath, visitElementMeta, visitElementMeter, visitElementNav, visitElementNoscript, visitElementObject, visitElementOl, visitElementOptgroup, visitElementOption, visitElementOutput, visitElementP, visitElementParam, visitElementPicture, visitElementPre, visitElementProgress, visitElementQ, visitElementRb, visitElementRp, visitElementRt, visitElementRtc, visitElementRuby, visitElementS, visitElementSamp, visitElementScript, visitElementSection, visitElementSelect, visitElementSmall, visitElementSource, visitElementSpan, visitElementStrong, visitElementStyle, visitElementSub, visitElementSummary, visitElementSup, visitElementSvg, visitElementTable, visitElementTbody, visitElementTd, visitElementTemplate, visitElementTextarea, visitElementTfoot, visitElementTh, visitElementThead, visitElementTime, visitElementTitle, visitElementTr, visitElementTrack, visitElementU, visitElementUl, visitElementVar, visitElementVideo, visitElementWbr, visitParentA, visitParentAbbr, visitParentAddress, visitParentArticle, visitParentAside, visitParentAudio, visitParentB, visitParentBdi, visitParentBdo, visitParentBlockquote, visitParentBody, visitParentButton, visitParentCanvas, visitParentCaption, visitParentCite, visitParentCode, visitParentColgroup, visitParentData, visitParentDatalist, visitParentDd, visitParentDel, visitParentDetails, visitParentDetailsComplete, visitParentDetailsSummary, visitParentDfn, visitParentDialog, visitParentDiv, visitParentDl, visitParentDt, visitParentEm, visitParentFieldset, visitParentFigcaption, visitParentFigure, visitParentFooter, visitParentForm, visitParentH1, visitParentH2, visitParentH3, visitParentH4, visitParentH5, visitParentH6, visitParentHead, visitParentHeader, visitParentHtml, visitParentI, visitParentIframe, visitParentIns, visitParentKbd, visitParentLabel, visitParentLegend, visitParentLi, visitParentMain, visitParentMap, visitParentMark, visitParentMath, visitParentMeter, visitParentNav, visitParentNoscript, visitParentObject, visitParentOl, visitParentOptgroup, visitParentOption, visitParentOutput, visitParentP, visitParentPicture, visitParentPre, visitParentProgress, visitParentQ, visitParentRb, visitParentRp, visitParentRt, visitParentRtc, visitParentRuby, visitParentS, visitParentSamp, visitParentScript, visitParentSection, visitParentSelect, visitParentSmall, visitParentSpan, visitParentStrong, visitParentStyle, visitParentSub, visitParentSummary, visitParentSup, visitParentSvg, visitParentTable, visitParentTbody, visitParentTd, visitParentTemplate, visitParentTextarea, visitParentTfoot, visitParentTh, visitParentThead, visitParentTime, visitParentTitle, visitParentTr, visitParentTrack, visitParentU, visitParentUl, visitParentVar, visitParentVideo, visitParentWbr

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • PreprocessingVisitor

      public PreprocessingVisitor(boolean isIndented)
  • Method Details

    • sb

      public final StringBuilder sb()
      The main StringBuilder.
    • getFirst

      public final HtmlContinuation getFirst()
    • visitDynamic

      public <E extends org.xmlet.htmlapifaster.Element, U> void visitDynamic(E element, BiConsumer<E,U> dynamicHtmlBlock)
      Here we are creating 2 HtmlContinuation objects: one for previous static HTML and a next one corresponding to the consumer passed to dynamic(). We will first create the dynamic continuation that will be the next node of the static continuation. U is the type of the model passed to the dynamic HTML block that is the same as T in this visitor. Yet, since it came from HtmlApiFaster that is not typed by the Model, then we have to use another generic argument for the type of the model.
      Specified by:
      visitDynamic in class org.xmlet.htmlapifaster.ElementVisitor
      Type Parameters:
      E - Type of the parent Element.
      U - Type of the model passed to the dynamic HTML block that is the same as T in this visitor.
      Parameters:
      element - The parent element.
      dynamicHtmlBlock - The continuation that consumes the element and a model.
    • visitAwait

      public <M, E extends org.xmlet.htmlapifaster.Element> void visitAwait(E element, org.xmlet.htmlapifaster.async.AwaitConsumer<E,M> asyncAction)
      Specified by:
      visitAwait in class org.xmlet.htmlapifaster.ElementVisitor
    • chainContinuationStatic

      protected final void chainContinuationStatic(HtmlContinuation nextContinuation)
    • indentAndAdvanceStaticBlockIndex

      protected final void indentAndAdvanceStaticBlockIndex()
    • resolve

      public void resolve(Object model)
      Creates the last static HTML block.
      Specified by:
      resolve in class HtmlVisitor
    • clone

      public final HtmlVisitor clone(boolean isIndented)
      Description copied from class: HtmlVisitor
      Since HtmlVisitor is immutable this is the preferred way to create a copy of the existing HtmlVisitor instance with a different isIndented state.
      Specified by:
      clone in class HtmlVisitor
      Parameters:
      isIndented - If the new visitor should indent HTML output or not.