InterpolationParser
object InterpolationParser
Value members
Concrete methods
def parseHtmlParts[Fragment <: DocumentFragment](parts: IndexedSeq[String], argumentErrorHandler: (String, Int) => Unit { def apply(message: String, argumentIndex: Int): Unit; }, document: Document { def createDocumentFragment(): Fragment; }): Fragment
Concatenate parts
and parse it as HTML, assuming there are arguments
between each parts.
Concatenate parts
and parse it as HTML, assuming there are arguments
between each parts.
- Example:
Given two HTML elements, and an argument as the content of the first element,
val parts = IndexedSeq("<section>", "</section><br><footer></footer>")
when parsing it,
val htmlFragment = InterpolationParser.parseHtmlParts( parts, { (message, _) => fail(message) }, )
then the result should be an HTML fragment including the two elements,
import javax.xml.transform.stream.StreamResult import javax.xml.transform.TransformerFactory import javax.xml.transform.OutputKeys import javax.xml.transform.dom.DOMSource import java.io.StringWriter import scala.util.chaining.given val writer = new StringWriter() TransformerFactory .newInstance() .newTransformer() .tap(_.setOutputProperty(OutputKeys.METHOD, "html")) .tap(_.setOutputProperty(OutputKeys.INDENT, "no")) .transform(new DOMSource(htmlFragment), new StreamResult(writer)) writer.toString() should be("<SECTION></SECTION><BR><FOOTER></FOOTER>")
and there should be a placeholder in the first element.
val placeholder = htmlFragment.getFirstChild().getFirstChild() val argIndex = placeholder.getUserData( InterpolationParser.ElementArgumentUserDataKey ) argIndex should be(0)