Ruins days by replacing characters in files with a homograph / homoglyph (like substituting semi-colons with the Greek question mark). "Olc" is the Irish word for "bad".
Inspired by Ben Johnson's tweet;
By default, that's all that plugin does but can replace other homographs as well (for extra frustration) via options. See the test/expected directory for example output.
npm install olc
You'll need to pass Vinyl files, with a Buffer / Stream as content.
var olc = require('olc');
var File = require('vinyl');
var file = new File({
path: 'example/directory/file.js',
cwd: 'example/',
base: 'example/directory',
contents: fs.createReadStream('example/directory/file.js')
// or contents: new Buffer(fs.readFileSync('example/directory/file.js'))
});
// or instead of creating a new file with the vinyl module,
// just use my glob-to-vinyl module
var stream = olc();
stream.on('data', function(newFile){
// Tada!
// newFile now has Greek question marks instead of semi-colons
});
stream
.write(file)
.end();
Gulp usage
var gulp = require('gulp');
var olc = require('olc');
gulp.task('default', function() {
gulp.src('*.js')
.pipe(olc())
.pipe(gulp.dest('./output'));
});
If omitted, this option defaults to greek
.
olc({
mode: 'greek'
})
This mode only replaces semi-colons with the Greek question mark as the specification tweet says.
olc({
mode: 'one'
})
This mode will chose a target homograph at random and replace it throughout each file. For extra confusion, if the character has multiple possible homographs, then both will used as a substitution (randomly per occurrence).
olc({
mode: 'all'
})
Will replace all instances of the homographs we look for with their counterparts.
olc({
charactersToReplace: ';)('
// or charactersToReplace: [';', ')', '(']
})
This option (a string or array) of characters which should be replaced with their homographs. Characters which aren't one of the homographs we look for will be ignored.
If this option is given, the mode
option is ignored.