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);
}
Type: Function
-
expression
string detected expression without leadIn / leadOut -
remainder
string chunk after leadOut -
source
Iterable<string> original source -
cb
EarlyConsumerCallback to be called if remainder has changed -
leadIn
string expression entry sequence -
leadOut
string expression exit sequence
Returns AsyncIterable<string> transformed source
Will be called from the ExpressionTransformer if the given remainder needs to be altered.
Type: Function
-
remainder
string new remainder to be used by iterableStringInterceptor
Intercept into a async iterable string source, detecting lead in/outs like '{{' and '}}' and asking a transformer for a replacement iterable string.
-
source
Iterable<string> -
transform
ExpressionTransformer -
leadIn
string expression entry sequence (optional, default"{{"
) -
leadOut
string expression exit sequence (optional, default"}}"
)
Returns AsyncIterable<string> transformed source
With npm do:
npm install iterable-string-interceptor
BSD-2-Clause