rot

Perform simple rotational letter substitution (such as ROT-13) in JavaScript.

npm install rot
1 downloads in the last day
4 downloads in the last week
7 downloads in the last month

rot Build status Dependency status

rot is a JavaScript library that performs rotational letter substitution. It can be used to shift any ASCII letters in the input string by a given number of positions in the alphabet. To ROT-13 the string 'abc', for example:

Installation

Via npm:

npm install rot

Via Bower:

bower install rot

Via Component:

component install mathiasbynens/rot

In a browser:

<script src="rot.js"></script>

In Narwhal, Node.js, and RingoJS:

var rot = require('rot');

In Rhino:

load('rot.js');

Using an AMD loader like RequireJS:

require(
  {
    'paths': {
      'rot': 'path/to/rot'
    }
  },
  ['rot'],
  function(rot) {
    console.log(rot);
  }
);

API

rot.version

A string representing the semantic version number.

rot(text, [ n = 13 ])

This function takes a string of text and shifts any ASCII letters in the input string by n positions in the alphabet (to the right). The optional n argument defaults to 13. It can be any number from 0 to 26. (Other numeric values are accepted too, but they’re not useful; e.g. ROT-1337 is the same as ROT-11.)

// ROT-13 is the default
rot('abc');
// → 'nop'

rot('abc', 13);
// → 'nop'

To decrypt rotational ciphertext for which the n value is known, simply pass 26 - n or just -n as the second parameter to rot(). For example, to decrypt ROT-5:

rot('Ymnx xywnsl nx jshwduyji zxnsl WTY-5.', 26 - 5);
// → 'This string is encrypted using ROT-5.'

rot('Ymnx xywnsl nx jshwduyji zxnsl WTY-5.', -5);
// → 'This string is encrypted using ROT-5.'

Using the rot binary

To use the rot binary in your shell, simply install rot globally using npm:

npm install -g rot

After that you will be able to perform simple rotation encryption from the command line:

$ rot 'foo bar baz'
sbb one onm

$ rot -n 13 'foo bar baz'
sbb one onm

Read a local text file, encrypt it using ROT-5, and save the result to a new file:

$ rot -n 5 < foo.txt > foo-rot-5.txt

Or do the same with an online text file:

$ curl -sL "http://git.io/jH5wdg" | rot -n 5 > rot-5.txt

Or, the opposite — read a local file containing ROT-5 encoded text, decode it back to readable text, and save the result to a new file:

$ rot -n 21 < rot-5.txt > original.txt

See rot --help for the full list of options.

Support

rot is designed to work in at least Node.js v0.10.0, Narwhal 0.3.2, RingoJS 0.8-0.9, PhantomJS 1.9.0, Rhino 1.7RC4, as well as old and modern versions of Chrome, Firefox, Safari, Opera, and Internet Explorer.

Unit tests & code coverage

After cloning this repository, run npm install to install the dependencies needed for he development and testing. You may want to install Istanbul globally using npm install istanbul -g.

Once that’s done, you can run the unit tests in Node using npm test or node tests/tests.js. To run the tests in Rhino, Ringo, Narwhal, and web browsers as well, use grunt test.

To generate the code coverage report, use grunt cover.

Author

twitter/mathias
Mathias Bynens

License

rot is available under the MIT license.

npm loves you