UNPKG

@antisoftwareclub/i18next-pseudo

Version:

Pseudolocalization plugin for i18next

81 lines (67 loc) 3.32 kB
'use strict'; exports.__esModule = true; exports.default = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _utils = require('./utils'); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Pseudo = function () { function Pseudo() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$languageToPseudo = _ref.languageToPseudo, languageToPseudo = _ref$languageToPseudo === undefined ? 'en' : _ref$languageToPseudo, _ref$letterMultiplier = _ref.letterMultiplier, letterMultiplier = _ref$letterMultiplier === undefined ? 2 : _ref$letterMultiplier, _ref$repeatedLetters = _ref.repeatedLetters, repeatedLetters = _ref$repeatedLetters === undefined ? _utils.vowels : _ref$repeatedLetters, _ref$uglifedLetterObj = _ref.uglifedLetterObject, uglifedLetterObject = _ref$uglifedLetterObj === undefined ? _utils.uglifiedAlphabet : _ref$uglifedLetterObj, _ref$wrapped = _ref.wrapped, wrapped = _ref$wrapped === undefined ? false : _ref$wrapped, _ref$enabled = _ref.enabled, enabled = _ref$enabled === undefined ? true : _ref$enabled, _ref$uglifyHTMLTags = _ref.uglifyHTMLTags, uglifyHTMLTags = _ref$uglifyHTMLTags === undefined ? true : _ref$uglifyHTMLTags; _classCallCheck(this, Pseudo); this.name = 'pseudo'; this.type = 'postProcessor'; this.options = { languageToPseudo: languageToPseudo, letterMultiplier: letterMultiplier, wrapped: wrapped, repeatedLetters: repeatedLetters, letters: uglifedLetterObject, enabled: enabled, uglifyHTMLTags: uglifyHTMLTags }; } Pseudo.prototype.configurePseudo = function configurePseudo(options) { this.options = _extends({}, this.options, options); }; Pseudo.prototype.process = function process(value, key, options, translator) { var _this = this; if (translator.language && this.options.languageToPseudo !== translator.language || !this.options.enabled) { return value; } var curlyBracketCount = 0; var angleBracketCount = 0; var processedValue = value.split('').map(function (letter) { switch (letter) { case '}': curlyBracketCount--;return letter; case '{': curlyBracketCount++;return letter; case '>': angleBracketCount--;return letter; case '<': angleBracketCount++;return letter; } if (curlyBracketCount === 2) return letter; if (angleBracketCount > 0 && !_this.options.uglifyHTMLTags) return letter; return _this.options.repeatedLetters.indexOf(letter) !== -1 ? _this.options.letters[letter].repeat(_this.options.letterMultiplier) : _this.options.letters[letter] || letter; }).join(''); return (0, _utils.stringWrapper)({ shouldWrap: this.options.wrapped, string: processedValue }); }; return Pseudo; }(); exports.default = Pseudo; module.exports = exports['default'];