aboutsummaryrefslogtreecommitdiff
path: root/node_modules/gettext-parser/lib/shared.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/gettext-parser/lib/shared.js')
-rw-r--r--node_modules/gettext-parser/lib/shared.js120
1 files changed, 0 insertions, 120 deletions
diff --git a/node_modules/gettext-parser/lib/shared.js b/node_modules/gettext-parser/lib/shared.js
deleted file mode 100644
index 44bfb86f7..000000000
--- a/node_modules/gettext-parser/lib/shared.js
+++ /dev/null
@@ -1,120 +0,0 @@
-'use strict';
-
-// Expose to the world
-module.exports.parseHeader = parseHeader;
-module.exports.generateHeader = generateHeader;
-module.exports.formatCharset = formatCharset;
-module.exports.foldLine = foldLine;
-
-/**
- * Parses a header string into an object of key-value pairs
- *
- * @param {String} str Header string
- * @return {Object} An object of key-value pairs
- */
-function parseHeader(str) {
- var lines = (str || '').split('\n'),
- headers = {};
-
- lines.forEach(function(line) {
- var parts = line.trim().split(':'),
- key = (parts.shift() || '').trim().toLowerCase(),
- value = parts.join(':').trim();
- if (!key) {
- return;
- }
- headers[key] = value;
- });
-
- return headers;
-}
-
-/**
- * Convert first letters after - to uppercase, other lowercase
- *
- * @param {String} str String to be updated
- * @return {String} A string with uppercase words
- */
-function upperCaseWords(str) {
- return (str || '').toLowerCase().trim().replace(/^(MIME|POT?(?=\-)|[a-z])|\-[a-z]/gi, function(str) {
- return str.toUpperCase();
- });
-}
-
-/**
- * Joins a header object of key value pairs into a header string
- *
- * @param {Object} header Object of key value pairs
- * @return {String} Header string
- */
-function generateHeader(header) {
- var lines = [];
-
- Object.keys(header || {}).forEach(function(key) {
- if (key) {
- lines.push(upperCaseWords(key) + ': ' + (header[key] || '').trim());
- }
- });
-
- return lines.join('\n') + (lines.length ? '\n' : '');
-}
-
-/**
- * Normalizes charset name. Converts utf8 to utf-8, WIN1257 to windows-1257 etc.
- *
- * @param {String} charset Charset name
- * @return {String} Normalized charset name
- */
-function formatCharset(charset, defaultCharset) {
- return (charset || 'iso-8859-1').toString().toLowerCase().
- replace(/^utf[\-_]?(\d+)$/, 'utf-$1').
- replace(/^win(?:dows)?[\-_]?(\d+)$/, 'windows-$1').
- replace(/^latin[\-_]?(\d+)$/, 'iso-8859-$1').
- replace(/^(us[\-_]?)?ascii$/, 'ascii').
- replace(/^charset$/, defaultCharset || 'iso-8859-1').
- trim();
-}
-
-/**
- * Folds long lines according to PO format
- *
- * @param {String} str PO formatted string to be folded
- * @param {Number} [maxLen=76] Maximum allowed length for folded lines
- * @return {Array} An array of lines
- */
-function foldLine(str, maxLen) {
-
- maxLen = maxLen || 76;
-
- var lines = [],
- curLine = '',
- pos = 0,
- len = str.length,
- match;
-
- while (pos < len) {
- curLine = str.substr(pos, maxLen);
-
- // ensure that the line never ends with a partial escaping
- // make longer lines if needed
- while (curLine.substr(-1) === '\\' && pos + curLine.length < len) {
- curLine += str.charAt(pos + curLine.length);
- }
-
- // ensure that if possible, line breaks are done at reasonable places
- if ((match = curLine.match(/\\n/))) {
- curLine = curLine.substr(0, match.index + 2);
- } else if (pos + curLine.length < len) {
- if ((match = curLine.match(/(\s+)[^\s]*$/)) && match.index > 0) {
- curLine = curLine.substr(0, match.index + match[1].length);
- } else if ((match = curLine.match(/([\x21-\x40\x5b-\x60\x7b-\x7e]+)[^\x21-\x40\x5b-\x60\x7b-\x7e]*$/)) && match.index > 0) {
- curLine = curLine.substr(0, match.index + match[1].length);
- }
- }
-
- lines.push(curLine);
- pos += curLine.length;
- }
-
- return lines;
-} \ No newline at end of file