- From: Ari Nordström <ari.nordstrom@gmail.com>
- Date: Fri, 16 Jun 2017 10:10:55 +0200
- To: "Imsieke, Gerrit, le-tex" <gerrit.imsieke@le-tex.de>
- Cc: XProc Dev <xproc-dev@w3.org>
- Message-ID: <CAC0oti036EKCi3xPffnWurOD8Ws5Xx08Zyzf3k-xY4+kbRn-sg@mail.gmail.com>
Happy Birthday, Norm! (And I love the pipeline, Gerrit!) /Ari On 16 June 2017 at 09:49, Imsieke, Gerrit, le-tex <gerrit.imsieke@le-tex.de> wrote: > Dear Norm, > > All the best wishes, and please accept this recursive, lyrics-generating > XProc step as a gist er gift. > > –Gerrit > > https://gist.github.com/gimsieke/8f869d2681a31fd249051e927bfdcf68 > > <?xml version="1.0" encoding="UTF-8"?> > <p:declare-step xmlns:p="http://www.w3.org/ns/xproc" > xmlns:ndw50="urn:ndw:birthday:50" > xmlns:c="http://www.w3.org/ns/xproc-step" > xmlns:cx="http://xmlcalabash.com/ns/extensions" > version="1.0" > exclude-inline-prefixes="c cx ndw50" > type="ndw50:serenade" name="serenade"> > > <p:output port="serenade-lines" sequence="true"> > <p:pipe port="lines" step="finished-yet"/> > </p:output> > <p:output port="result" primary="true"/> > <p:serialization port="result" indent="true" > omit-xml-declaration="false"/> > > <p:option name="times" select="'50'"/> > > <p:input port="source" sequence="true" primary="true"> > <p:inline><line xmlns="http://docbook.org/ns/docbook">Happy birthday > to you.</line></p:inline> > </p:input> > > <p:split-sequence initial-only="true" test="position() = 1" > name="first-line"/> > > <p:sink/> > > <p:count name="count"> > <p:input port="source"> > <p:pipe port="source" step="serenade"/> > </p:input> > </p:count> > > <p:sink/> > > <p:choose name="finished-yet"> > <p:xpath-context> > <p:pipe port="result" step="count"/> > </p:xpath-context> > <p:when test="number(/*) lt number($times)"> > <p:output port="lines" sequence="true"> > <p:pipe port="serenade-lines" step="recurse"/> > </p:output> > <p:output port="serenade" primary="true"> > <p:pipe port="result" step="recurse"/> > </p:output> > <ndw50:serenade name="recurse"> > <p:input port="source"> > <p:pipe port="matched" step="first-line"/> > <p:pipe port="source" step="serenade"/> > </p:input> > <p:with-option name="times" select="$times"/> > </ndw50:serenade> > <p:sink/> > </p:when> > <p:otherwise> > <p:output port="lines" sequence="true"/> > <p:output port="serenade" primary="true"/> > <p:wrap-sequence wrapper="poetry" wrapper-namespace="http://docb > ook.org/ns/docbook" name="w1"> > <p:input port="source"> > <p:pipe port="source" step="serenade"/> > </p:input> > </p:wrap-sequence> > <p:insert match="/*" position="last-child" name="i1"> > <p:input port="insertion"> > <p:inline><line xmlns="http://docbook.org/ns/docbook">Happy > birthday dear Norman!</line></p:inline> > </p:input> > </p:insert> > <p:insert match="/*" position="last-child" name="i2"> > <p:input port="insertion"> > <p:pipe port="matched" step="first-line"/> > </p:input> > </p:insert> > </p:otherwise> > </p:choose> > > </p:declare-step> > >
Received on Friday, 16 June 2017 08:11:27 UTC