aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/encoding/lib/encoding.js
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/encoding/lib/encoding.js')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/encoding/lib/encoding.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/encoding/lib/encoding.js b/sandbox/testAppNevena/Front/node_modules/encoding/lib/encoding.js
new file mode 100644
index 00000000..865c24bc
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/encoding/lib/encoding.js
@@ -0,0 +1,83 @@
+'use strict';
+
+var iconvLite = require('iconv-lite');
+
+// 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
+ * @return {Buffer} Encoded string
+ */
+function convert(str, to, from) {
+ from = checkEncoding(from || 'UTF-8');
+ to = checkEncoding(to || 'UTF-8');
+ str = str || '';
+
+ var result;
+
+ if (from !== 'UTF-8' && typeof str === 'string') {
+ str = Buffer.from(str, 'binary');
+ }
+
+ if (from === to) {
+ if (typeof str === 'string') {
+ result = Buffer.from(str);
+ } else {
+ result = str;
+ }
+ } else {
+ try {
+ result = convertIconvLite(str, to, from);
+ } catch (E) {
+ console.error(E);
+ result = str;
+ }
+ }
+
+ if (typeof result === 'string') {
+ result = Buffer.from(result, 'utf-8');
+ }
+
+ return result;
+}
+
+/**
+ * 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();
+}