node-js-preprocessor
v1.0.11
Published
A code preprocessor for nodejs
Downloads
1
Readme
nodejs-preprocessor
An code preprocessor for nodejs. See samples/hello for basic usage info.
The preprocessor can be used to generate app-specific code from a source folder. A json object controls conditional code generation and expressions that can be inserted into the code at preprocessing time.
Example
The code generator can be invoked by a code-snippet like this (main.js):
/**
* "Hello world" example of the preprocessor. It preprocesses the contents of folder "codeTemplates" into folder "generated".
* The appSpec argument controls the code generation; check codeTemplates hello.js and the corresponding file after preprocessiong
* in folder generated.
*
*/
const { preprocess } = require('node-js-preprocessor')
const config = {
inputFolder: 'codeTemplates',
outputFolder: 'generated'
}
/**
* settings in appSpec control how the code is preprocessed; you can customize anything in here
* depending on what should be controlled by the preprocessing. The entries here are specific to
* the hello-world example in this folder
*/
const appSpec = {
sayHelloTo: "World",
includeGreeting: true,
generatedMessage: 'This code is generated!'
}
if (require.main === module) {
if (process.argv[2]) {
appSpec.sayHelloTo = process.argv[2]
}
preprocess(config, appSpec)
}
Here's the hello.js file in the codeTemplates folder:
/**
* $${generatedMessage.toUpperCase()}
*
* This file contains preprocessor directives (lines starting with '//!') and preprocesspor variables defined in appSpec
* - all directive lines together must form valid Javascript syntax.
* - preprocessor variables are accessed using just their respective name (path) inside the processor directives
* - preprocessor variables and expressions within the "normal" code must be surrounded using $${ } (double-dollar)
*/
if (require.main === module) {
console.log(`Hello $${sayHelloTo}`) // reads 'sayHelloTo' from appSpec given as argument to the preprocessor
// conditional code generation
//! if (includeGreeting) {
console.log('I hope you are doing well!')
//! }
// using variables defined at preprocessing time:
//! var finalMsg = "That's all I have to say..."
console.log("$${finalMsg}")
}
Now, if you run node main.js Friend
the preprocessor generates the corresponding generated/hello.js as follows:
/**
* THIS CODE IS GENERATED!
*
* This file contains preprocessor directives (lines starting with '//!') and preprocesspor variables defined in appSpec
* - all directive lines together must form valid Javascript syntax.
* - preprocessor variables are accessed using just their respective name (path) inside the processor directives
* - preprocessor variables and expressions within the "normal" code must be surrounded using { } (double-dollar)
*/
if (require.main === module) {
console.log(`Hello Friend`) // reads 'sayHelloTo' from appSpec given as argument to the preprocessor
// conditional code generation
console.log('I hope you are doing well!')
// using variables defined at preprocessing time:
console.log("That's all I have to say...")
}