Skip to content

Commit 273cbde

Browse files
committed
Add punycode algorithm
1 parent 900065c commit 273cbde

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

lib/string-codec.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use strict';
2-
var adler32, alldecoder, allenchashes, allencoder, ascii85, base91, bufferDecoder, bufferEncoder, caesar, cheerio, crc, crypto, decalgos, dechashes, decmd5, decoder, decrypter, encalgos, enchashes, encoder, hex_parse, recipro, request, rev, rotX,
2+
var adler32, alldecoder, allenchashes, allencoder, ascii85, base91, bufferDecoder, bufferEncoder, caesar, cheerio, crc, crypto, decalgos, dechashes, decmd5, decoder, decrypter, encalgos, enchashes, encoder, hex_parse, punycode, recipro, request, rev, rotX,
33
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
44

55
crc = require('crc');
@@ -18,9 +18,11 @@ cheerio = require('cheerio');
1818

1919
request = require('sync-request');
2020

21+
punycode = require('punycode');
22+
2123
allencoder = [];
2224

23-
encalgos = ['hex', 'ascii', 'base64', 'base85', 'z85', 'ascii85', 'base91', 'rot5', 'rot13', 'rot18', 'rot47', 'rev', 'crc1', 'crc8', 'crc16', 'crc24', 'crc32', 'adler32', 'url', 'unixtime', 'lower', 'upper'];
25+
encalgos = ['hex', 'ascii', 'base64', 'base85', 'z85', 'ascii85', 'base91', 'rot5', 'rot13', 'rot18', 'rot47', 'rev', 'crc1', 'crc8', 'crc16', 'crc24', 'crc32', 'adler32', 'url', 'unixtime', 'lower', 'upper', 'punycode'];
2426

2527
enchashes = ['md4', 'md5', 'sha', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'rmd160', 'whirlpool'];
2628

@@ -34,7 +36,7 @@ allencoder = allencoder.concat(encalgos, allenchashes);
3436

3537
alldecoder = [];
3638

37-
decalgos = ['hex', 'ascii', 'base64', 'base85', 'z85', 'ascii85', 'base91', 'rot5', 'rot13', 'rot18', 'rot47', 'rev', 'url', 'unixtime'];
39+
decalgos = ['hex', 'ascii', 'base64', 'base85', 'z85', 'ascii85', 'base91', 'rot5', 'rot13', 'rot18', 'rot47', 'rev', 'url', 'unixtime', 'punycode'];
3840

3941
dechashes = ['md5'];
4042

@@ -143,6 +145,8 @@ bufferEncoder = function(buf, algo) {
143145
return new Buffer(buf.toString().toLowerCase());
144146
case 'upper':
145147
return new Buffer(buf.toString().toUpperCase());
148+
case 'punycode':
149+
return new Buffer(punycode.toASCII(buf.toString()));
146150
default:
147151
if (indexOf.call(allenchashes, algo) >= 0) {
148152
return new Buffer(crypto.createHash(algo).update(buf).digest('hex'));
@@ -191,6 +195,8 @@ bufferDecoder = function(buf, algo) {
191195
return new Buffer(decodeURIComponent(buf.toString()));
192196
case 'unixtime':
193197
return new Buffer((new Date(parseInt(buf.toString()) * 1000)).toString());
198+
case 'punycode':
199+
return new Buffer(punycode.toUnicode(buf.toString()));
194200
case 'md5':
195201
return new Buffer(decrypter[algo](buf.toString()));
196202
default:

src/string-codec.coffee

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ caesar = require 'caesar-salad'
88
adler32 = require 'adler-32'
99
cheerio = require 'cheerio'
1010
request = require 'sync-request'
11+
punycode = require 'punycode'
1112

1213
allencoder = []
1314
encalgos = ['hex', 'ascii', 'base64', 'base85', 'z85', 'ascii85', 'base91',
1415
'rot5', 'rot13', 'rot18', 'rot47', 'rev', 'crc1', 'crc8', 'crc16',
15-
'crc24', 'crc32', 'adler32', 'url', 'unixtime', 'lower', 'upper']
16+
'crc24', 'crc32', 'adler32', 'url', 'unixtime', 'lower', 'upper',
17+
'punycode']
1618
enchashes = ['md4', 'md5', 'sha', 'sha1', 'sha224', 'sha256', 'sha384',
1719
'sha512', 'rmd160', 'whirlpool']
1820
allenchashes = enchashes.concat(crypto.getHashes())
@@ -22,7 +24,8 @@ allencoder = allencoder.concat(encalgos,allenchashes)
2224

2325
alldecoder = []
2426
decalgos = ['hex', 'ascii', 'base64', 'base85', 'z85', 'ascii85', 'base91',
25-
'rot5', 'rot13', 'rot18', 'rot47', 'rev', 'url', 'unixtime']
27+
'rot5', 'rot13', 'rot18', 'rot47', 'rev', 'url', 'unixtime',
28+
'punycode']
2629
dechashes = ['md5']
2730
alldecoder = alldecoder.concat(decalgos,dechashes)
2831

@@ -109,6 +112,8 @@ bufferEncoder = (buf, algo) ->
109112
new Buffer(buf.toString().toLowerCase())
110113
when 'upper'
111114
new Buffer(buf.toString().toUpperCase())
115+
when 'punycode'
116+
new Buffer(punycode.toASCII(buf.toString()))
112117
else
113118
if algo in allenchashes
114119
new Buffer(crypto.createHash(algo).update(buf).digest('hex'))
@@ -145,6 +150,8 @@ bufferDecoder = (buf, algo) ->
145150
new Buffer(decodeURIComponent(buf.toString()))
146151
when 'unixtime'
147152
new Buffer((new Date(parseInt(buf.toString())*1000)).toString())
153+
when 'punycode'
154+
new Buffer(punycode.toUnicode(buf.toString()))
148155
when 'md5'
149156
new Buffer(decrypter[algo](buf.toString()))
150157
else

0 commit comments

Comments
 (0)