The plugin's goal is to resolve preprocessor instructions of Arma2/Arma3 missions and addons source files using Gulp.
npm install gulp-armapreprocessor
const gulp = require 'gulp';
const preprocessor = require 'gulp-armapreprocessor';
gulp.task('preprocess', () => {
return gulp.src('description.ext')
.pipe(preprocessor())
.pipe(/*further processing*/);
});
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.
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*/
});
Returns: PreprocessorStream
Required: no
Required: no
Type: PreprocessorStorage
Returns: PreprocessorStorage
Add the current stream content into the storage
Clean out the storage
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>"
.