Package Exports
- iterable-string-interceptor
Readme
iterable-string-interceptor
Intercept Iterable string - backbone for template engines
import { iterableStringInterceptor } from "iterable-string-interceptor";
import { createReadStream } from "fs";
import { readFile } from "fs/promises";
// double values inside {{}}
// {{7}} -> 14
for await (const chunk of iterableStringInterceptor(createReadStream('aFile', { encoding: "utf8" }),
expression => expression * 2
)) {
process.stdout.write(chunk);
}import { iterableStringInterceptor } from "iterable-string-interceptor";
import { createReadStream } from "fs";
import { readFile } from "fs/promises";
// handle expression as to be included content {{filename}}
for await (const chunk of iterableStringInterceptor(createReadStream('aFile', { encoding: "utf8" }),
async * (expression) => { yield readFile(expression, { encoding: "utf8" }); }
)) {
process.stdout.write(chunk);
}API
Table of Contents
ExpressionTransformer
Type: function (string, string, Iterable<string>, EarlyConsumerCallback, string, string): AsyncIterable<string>
Parameters
expressionstring detected expression without leadIn / leadOutremainderstring chunk after leadOutsourceIterable<string> original sourcecbEarlyConsumerCallback to be called if remainder has changedleadInstring expression entry sequenceleadOutstring expression exit sequence
Returns AsyncIterable<string> transformed source
EarlyConsumerCallback
Will be called from the ExpressionTransformer if the given remainder needs to be altered.
Type: function (string): void
Parameters
remainderstring new remainder to be used by iterableStringInterceptor
iterableStringInterceptor
Intercept into a async iterable string source, detecting lead in/outs like '{{' and '}}' and asking a transformer for a replacement iterable string.
Parameters
sourceIterable<string>transformExpressionTransformerleadInstring expression entry sequence (optional, default"{{")leadOutstring expression exit sequence (optional, default"}}")
Returns AsyncIterable<string> transformed source
install
With npm do:
npm install iterable-string-interceptorlicense
BSD-2-Clause