olc

1.0.0 • Public • Published

olc

NPM version Build Status Windows Build Status Dependency Status


Ruins days by replacing characters 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;

Replace a semicolon (;) with a greek question mark (;) in your friend's JavaScript and watch them pull their hair out over the syntax error.

By default, that's all that plugin does but can replace other homographs via options. See the test/expected directory for example output.

Installation

npm install olc

Basic usage (without Gulp)

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'));
});

Options

Mode

If omitted, this option defaults to greek.

Greek

olc({
    mode: 'greek'
})

This mode only replaces semi-colons with the Greek question mark as the specification tweet says.

One

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).

All

olc({
    mode: 'all'
})

Will replace all instances of the homographs we look for with their counterparts.

charactersToReplace

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.

Package Sidebar

Install

npm i olc

Weekly Downloads

2

Version

1.0.0

License

MIT

Last publish

Collaborators

  • adam-lynch