pull/1/merge
Joseph Finlayson 10 years ago
commit 6c7a90b90c

1
.gitignore vendored

@ -0,0 +1 @@
node_modules

@ -1,7 +1,7 @@
{ {
"name": "js-md2", "name": "js-md2",
"version": "0.2.0", "version": "0.2.1",
"main": ["build/md2.min.js"], "main": ["src/md2.js"],
"ignore": [ "ignore": [
"samples", "samples",
"tests" "tests"

@ -3,20 +3,31 @@
* https://github.com/emn178/js-md2 * https://github.com/emn178/js-md2
* *
* Copyright 2014-2015, emn178@gmail.com * Copyright 2014-2015, emn178@gmail.com
* Copyright 2015, joseph.finlayson@gmail.com
* *
* Licensed under the MIT license: * Licensed under the MIT license:
* http://www.opensource.org/licenses/MIT * http://www.opensource.org/licenses/MIT
*/ */
;(function(root, undefined) { ;
(function (root, undefined) {
'use strict'; 'use strict';
var NODE_JS = typeof(module) != 'undefined';
if(NODE_JS) { var NODE_JS = typeof window === 'undefined';
if (NODE_JS) {
root = global; root = global;
} }
// Note that for maximum portability, libraries that are not jQuery should
// declare themselves as anonymous modules, and avoid setting a global if an
// AMD loader is present. jQuery is a special case. For more information, see
// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
var HEX_CHARS = '0123456789abcdef'.split(''); var HEX_CHARS = '0123456789abcdef'.split('');
var S = [ 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13, var S = [0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13,
0x62, 0xA7, 0x05, 0xF3, 0xC0, 0xC7, 0x73, 0x8C, 0x98, 0x93, 0x2B, 0xD9, 0xBC, 0x4C, 0x82, 0xCA, 0x62, 0xA7, 0x05, 0xF3, 0xC0, 0xC7, 0x73, 0x8C, 0x98, 0x93, 0x2B, 0xD9, 0xBC, 0x4C, 0x82, 0xCA,
0x1E, 0x9B, 0x57, 0x3C, 0xFD, 0xD4, 0xE0, 0x16, 0x67, 0x42, 0x6F, 0x18, 0x8A, 0x17, 0xE5, 0x12, 0x1E, 0x9B, 0x57, 0x3C, 0xFD, 0xD4, 0xE0, 0x16, 0x67, 0x42, 0x6F, 0x18, 0x8A, 0x17, 0xE5, 0x12,
0xBE, 0x4E, 0xC4, 0xD6, 0xDA, 0x9E, 0xDE, 0x49, 0xA0, 0xFB, 0xF5, 0x8E, 0xBB, 0x2F, 0xEE, 0x7A, 0xBE, 0x4E, 0xC4, 0xD6, 0xDA, 0x9E, 0xDE, 0x49, 0xA0, 0xFB, 0xF5, 0x8E, 0xBB, 0x2F, 0xEE, 0x7A,
@ -35,11 +46,11 @@
var M = [], X = [], C = []; var M = [], X = [], C = [];
var md2 = function(message, asciiOnly) { var md2 = function (message, asciiOnly) {
var code, i, j, k, t, L = 0, loop = 1, B, var code, i, j, k, t, L = 0, loop = 1, B,
index = 0, start = 0, bytes = 0, length = message.length; index = 0, start = 0, bytes = 0, length = message.length;
for(i = 0;i < 16;++i) { for (i = 0; i < 16; ++i) {
X[i] = C[i] = 0; X[i] = C[i] = 0;
} }
@ -52,18 +63,21 @@
M[4] = M[5] = M[6] = M[7] = M[4] = M[5] = M[6] = M[7] =
M[8] = M[9] = M[10] = M[11] = M[8] = M[9] = M[10] = M[11] =
M[12] = M[13] = M[14] = M[15] = 0; M[12] = M[13] = M[14] = M[15] = 0;
for (i = start;index < length && i < 16; ++index) { for (i = start; index < length && i < 16; ++index) {
code = message.charCodeAt(index); code = message.charCodeAt(index);
if (code < 0x80) { if (code < 0x80) {
M[i++] = code; M[i++] = code;
} else if (code < 0x800) { }
else if (code < 0x800) {
M[i++] = 0xc0 | (code >> 6); M[i++] = 0xc0 | (code >> 6);
M[i++] = 0x80 | (code & 0x3f); M[i++] = 0x80 | (code & 0x3f);
} else if (code < 0xd800 || code >= 0xe000) { }
else if (code < 0xd800 || code >= 0xe000) {
M[i++] = 0xe0 | (code >> 12); M[i++] = 0xe0 | (code >> 12);
M[i++] = 0x80 | ((code >> 6) & 0x3f); M[i++] = 0x80 | ((code >> 6) & 0x3f);
M[i++] = 0x80 | (code & 0x3f); M[i++] = 0x80 | (code & 0x3f);
} else { }
else {
code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
M[i++] = 0xf0 | (code >> 18); M[i++] = 0xf0 | (code >> 18);
M[i++] = 0x80 | ((code >> 12) & 0x3f); M[i++] = 0x80 | ((code >> 12) & 0x3f);
@ -74,20 +88,20 @@
bytes += i - start; bytes += i - start;
start = i - 16; start = i - 16;
if(index == length && i < 16) { if (index == length && i < 16) {
loop = 2; loop = 2;
t = 16 - (bytes & 15); t = 16 - (bytes & 15);
for(;i < 16;++i) { for (; i < 16; ++i) {
M[i] = t; M[i] = t;
} }
} }
for(i = 0;i < 16;++i) { for (i = 0; i < 16; ++i) {
C[i] ^= S[M[i] ^ L]; C[i] ^= S[M[i] ^ L];
L = C[i]; L = C[i];
} }
for(i = 0;i < loop;++i) { for (i = 0; i < loop; ++i) {
B = i === 0 ? M : C; B = i === 0 ? M : C;
X[16] = B[0]; X[16] = B[0];
@ -124,25 +138,32 @@
X[47] = X[31] ^ X[15]; X[47] = X[31] ^ X[15];
t = 0; t = 0;
for(j = 0;j < 18;++j) { for (j = 0; j < 18; ++j) {
for(k = 0;k < 48;++k) { for (k = 0; k < 48; ++k) {
X[k] = t = X[k] ^ S[t]; X[k] = t = X[k] ^ S[t];
} }
t = (t + j) & 0xFF; t = (t + j) & 0xFF;
} }
} }
} while(loop == 1); } while (loop == 1);
var hex = ''; var hex = '';
for(i = 0;i < 16;++i) { for (i = 0; i < 16; ++i) {
hex += HEX_CHARS[(X[i] >> 4) & 0x0F] + HEX_CHARS[X[i] & 0x0F]; hex += HEX_CHARS[(X[i] >> 4) & 0x0F] + HEX_CHARS[X[i] & 0x0F];
} }
return hex; return hex;
}; };
if(!root.JS_MD2_TEST && NODE_JS) { if (!root.JS_MD2_TEST && NODE_JS) {
module.exports = md2; module.exports = md2;
} else if(root) { }
else if (typeof define === "function" && define.amd) {
define("md2", [], function () {
return md2;
});
}
else if (root) {
root.md2 = md2; root.md2 = md2;
} }
}(this)); }(this));

Loading…
Cancel
Save