ng2-translate
Version:
An implementation of angular translate for Angular 2
54 lines (53 loc) • 1.89 kB
JavaScript
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
import { Injectable } from "@angular/core";
import { isDefined } from "./util";
export var TranslateParser = (function () {
function TranslateParser() {
}
return TranslateParser;
}());
export var DefaultTranslateParser = (function (_super) {
__extends(DefaultTranslateParser, _super);
function DefaultTranslateParser() {
_super.apply(this, arguments);
this.templateMatcher = /{{\s?([^{}\s]*)\s?}}/g;
}
DefaultTranslateParser.prototype.interpolate = function (expr, params) {
var _this = this;
if (typeof expr !== 'string' || !params) {
return expr;
}
return expr.replace(this.templateMatcher, function (substring, b) {
var r = _this.getValue(params, b);
return isDefined(r) ? r : substring;
});
};
DefaultTranslateParser.prototype.getValue = function (target, key) {
var keys = key.split('.');
key = '';
do {
key += keys.shift();
if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {
target = target[key];
key = '';
}
else if (!keys.length) {
target = undefined;
}
else {
key += '.';
}
} while (keys.length);
return target;
};
DefaultTranslateParser.decorators = [
{ type: Injectable },
];
/** @nocollapse */
DefaultTranslateParser.ctorParameters = function () { return []; };
return DefaultTranslateParser;
}(TranslateParser));