1.0.11 • Published 5 years ago

node-js-preprocessor v1.0.11

Weekly downloads
15
License
ISC
Repository
github
Last release
5 years ago

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...")
}
1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago