gulp-armapreprocessor
v2.0.1
Published
The plugin for Gulp which allows to resolve C++ preprocessor instructions
Downloads
109
Maintainers
Readme
Gulp Arma Preprocessor plugin
The plugin's goal is to resolve preprocessor instructions of Arma2/Arma3 missions and addons source files using Gulp.
Installation
npm install gulp-armapreprocessor
Usage
const gulp = require 'gulp';
const preprocessor = require 'gulp-armapreprocessor';
gulp.task('preprocess', () => {
return gulp.src('description.ext')
.pipe(preprocessor())
.pipe(/*further processing*/);
});
Unsupported instructions
Include resolution
The plugin will try to resolve #include
statements, fetching the required files from the fyle system, relatively to the current file being processed. I.e. if you process a file ${cwd}\src\description.ext
and there a line #include "config\defines.hpp"
in it, the resulting file ${cwd}\src\config\defines.hpp
will be fetched.
Using preprocessor cache
In some situations you may need to substitute #include
's content, say if the #include
'd file has been preprocessed by another stream and has not been persisted on disk. In that case the following snippet may become handy.
const gulp = require 'gulp';
const preprocessor = require 'gulp-armapreprocessor';
const storage = preprocessor.createStorage();
gulp.task('preprocess', () => {
const defines = gulp.src('defines.hpp')
.pipe(/*some processing goes here*/)
.pipe(storage.add());//save the preprocessed version into a storage
const description = gulp.src('description.ext')//contains a line: #include "defines.hpp"
.pipe(preprocessor({ storage: storage }))//all the #include's will be resolved against the storage first
.pipe(/*further processing*/);
/*some further actions on streams*/
});
Plugin API
preprocessor([options])
Returns: PreprocessorStream
options
Required: no
options.storage
Required: no
Type: PreprocessorStorage
preprocessor.createStorage()
Returns: PreprocessorStorage
PreprocessorStorage API
storage.add()
Add the current stream content into the storage
storage.clear()
Clean out the storage
Known issues
The #define
's containing both #
and single-quote
symbols inside their values (e.g. #define STRUCT_TEXT "<t color='#aaffaa'>%1</t>"
) get corrupted while processing. To avoid, replace single-quote
symbols with 2x double-quote
, e.g. #define STRUCT_TEXT "<t color=""#aaffaa"">%1</t>"
.