mirror of
https://github.com/musix-org/musix-oss
synced 2025-06-17 04:26:00 +00:00
Modules
This commit is contained in:
113
node_modules/encoding/lib/encoding.js
generated
vendored
Normal file
113
node_modules/encoding/lib/encoding.js
generated
vendored
Normal file
@ -0,0 +1,113 @@
|
||||
'use strict';
|
||||
|
||||
var iconvLite = require('iconv-lite');
|
||||
// Load Iconv from an external file to be able to disable Iconv for webpack
|
||||
// Add /\/iconv-loader$/ to webpack.IgnorePlugin to ignore it
|
||||
var Iconv = require('./iconv-loader');
|
||||
|
||||
// Expose to the world
|
||||
module.exports.convert = convert;
|
||||
|
||||
/**
|
||||
* Convert encoding of an UTF-8 string or a buffer
|
||||
*
|
||||
* @param {String|Buffer} str String to be converted
|
||||
* @param {String} to Encoding to be converted to
|
||||
* @param {String} [from='UTF-8'] Encoding to be converted from
|
||||
* @param {Boolean} useLite If set to ture, force to use iconvLite
|
||||
* @return {Buffer} Encoded string
|
||||
*/
|
||||
function convert(str, to, from, useLite) {
|
||||
from = checkEncoding(from || 'UTF-8');
|
||||
to = checkEncoding(to || 'UTF-8');
|
||||
str = str || '';
|
||||
|
||||
var result;
|
||||
|
||||
if (from !== 'UTF-8' && typeof str === 'string') {
|
||||
str = new Buffer(str, 'binary');
|
||||
}
|
||||
|
||||
if (from === to) {
|
||||
if (typeof str === 'string') {
|
||||
result = new Buffer(str);
|
||||
} else {
|
||||
result = str;
|
||||
}
|
||||
} else if (Iconv && !useLite) {
|
||||
try {
|
||||
result = convertIconv(str, to, from);
|
||||
} catch (E) {
|
||||
console.error(E);
|
||||
try {
|
||||
result = convertIconvLite(str, to, from);
|
||||
} catch (E) {
|
||||
console.error(E);
|
||||
result = str;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
result = convertIconvLite(str, to, from);
|
||||
} catch (E) {
|
||||
console.error(E);
|
||||
result = str;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (typeof result === 'string') {
|
||||
result = new Buffer(result, 'utf-8');
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert encoding of a string with node-iconv (if available)
|
||||
*
|
||||
* @param {String|Buffer} str String to be converted
|
||||
* @param {String} to Encoding to be converted to
|
||||
* @param {String} [from='UTF-8'] Encoding to be converted from
|
||||
* @return {Buffer} Encoded string
|
||||
*/
|
||||
function convertIconv(str, to, from) {
|
||||
var response, iconv;
|
||||
iconv = new Iconv(from, to + '//TRANSLIT//IGNORE');
|
||||
response = iconv.convert(str);
|
||||
return response.slice(0, response.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert encoding of astring with iconv-lite
|
||||
*
|
||||
* @param {String|Buffer} str String to be converted
|
||||
* @param {String} to Encoding to be converted to
|
||||
* @param {String} [from='UTF-8'] Encoding to be converted from
|
||||
* @return {Buffer} Encoded string
|
||||
*/
|
||||
function convertIconvLite(str, to, from) {
|
||||
if (to === 'UTF-8') {
|
||||
return iconvLite.decode(str, from);
|
||||
} else if (from === 'UTF-8') {
|
||||
return iconvLite.encode(str, to);
|
||||
} else {
|
||||
return iconvLite.encode(iconvLite.decode(str, from), to);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts charset name if needed
|
||||
*
|
||||
* @param {String} name Character set
|
||||
* @return {String} Character set name
|
||||
*/
|
||||
function checkEncoding(name) {
|
||||
return (name || '').toString().trim().
|
||||
replace(/^latin[\-_]?(\d+)$/i, 'ISO-8859-$1').
|
||||
replace(/^win(?:dows)?[\-_]?(\d+)$/i, 'WINDOWS-$1').
|
||||
replace(/^utf[\-_]?(\d+)$/i, 'UTF-$1').
|
||||
replace(/^ks_c_5601\-1987$/i, 'CP949').
|
||||
replace(/^us[\-_]?ascii$/i, 'ASCII').
|
||||
toUpperCase();
|
||||
}
|
14
node_modules/encoding/lib/iconv-loader.js
generated
vendored
Normal file
14
node_modules/encoding/lib/iconv-loader.js
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
var iconv_package;
|
||||
var Iconv;
|
||||
|
||||
try {
|
||||
// this is to fool browserify so it doesn't try (in vain) to install iconv.
|
||||
iconv_package = 'iconv';
|
||||
Iconv = require(iconv_package).Iconv;
|
||||
} catch (E) {
|
||||
// node-iconv not present
|
||||
}
|
||||
|
||||
module.exports = Iconv;
|
Reference in New Issue
Block a user