Giter Site home page Giter Site logo

swhiteman / q-encoding Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mathiasbynens/q-encoding

0.0 1.0 0.0 23 KB

A robust & character encoding–agnostic JavaScript implementation of the `Q` encoding as defined by RFC 2047.

Home Page: https://mths.be/q

License: MIT License

JavaScript 95.18% HTML 4.82%

q-encoding's Introduction

q-encoding Build status Dependency status

q-encoding is a character encoding–agnostic JavaScript implementation of the Q encoding as defined by RFC 2047. It can be used to encode data with any character encoding to its Q-encoded form, or the other way around (i.e. decoding).

An online demo is available.

Installation

Via npm:

npm install q-encoding

Via Bower:

bower install q-encoding

Via Component:

component install mathiasbynens/q-encoding

In a browser:

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

In Narwhal, Node.js, and RingoJS:

var q = require('q-encoding');

In Rhino:

load('q.js');

Using an AMD loader like RequireJS:

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

API

q.version

A string representing the semantic version number.

q.encode(input)

This function takes an encoded byte string (the input parameter) and Q-encodes it. Each item in the input string represents an octet as per the desired character encoding. Here’s an example that uses UTF-8:

var utf8 = require('utf8');

q.encode(utf8.encode('foo = bar'));
// → 'foo_=3D_bar'

q.encode(utf8.encode('Iñtërnâtiônàlizætiøn☃💩'));
// → 'I=C3=B1t=C3=ABrn=C3=A2ti=C3=B4n=C3=A0liz=C3=A6ti=C3=B8n=E2=98=83=F0=9F=92=A9'

q.decode(text)

This function takes a Q-encoded string of text (the text parameter) and Q-decodes it. The return value is a ‘byte string’, i.e. a string of which each item represents an octet as per the character encoding that’s being used. Here’s an example that uses UTF-8:

var utf8 = require('utf8');

utf8.decode(q.decode('foo_=3D_bar'));
// → 'foo = bar'

utf8.decode(q.decode('I=C3=B1t=C3=ABrn=C3=A2ti=C3=B4n=C3=A0liz=C3=A6ti=C3=B8n=E2=98=83=F0=9F=92=A9'));
// → 'Iñtërnâtiônàlizætiøn☃💩'

Using the q binary

To use the q binary in your shell, simply install q-encoding globally using npm:

npm install -g q-encoding

After that, you’ll be able to use q on the command line. Note that while the q-encoding library itself is character encoding–agnostic, the command-line tool applies the UTF-8 character encoding on all input.

$ q --encode 'foo = bar'
foo_=3D_bar

$ q --decode 'foo_=3D_bar'
foo = bar

Read a local text file, Quoted-Printable-encode it, and save the result to a new file:

$ q --encode < foo.txt > foo-q.txt

Or do the same with an online text file:

$ curl -sL 'https://mths.be/brh' | q --encode > q.txt

Or, the opposite — read a local file containing a Quoted-Printable-encoded message, decode it back to plain text, and save the result to a new file:

$ q --decode < q.txt > original.txt

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

Support

q-encoding 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 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

q-encoding is available under the MIT license.

q-encoding's People

Contributors

mathiasbynens avatar conradirwin avatar swhiteman avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.