UNPKG

2.8 kBJavaScriptView Raw
1var __extends = (this && this.__extends) || (function () {
2 var extendStatics = Object.setPrototypeOf ||
3 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
5 return function (d, b) {
6 extendStatics(d, b);
7 function __() { this.constructor = d; }
8 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9 };
10})();
11import { Injectable } from "@angular/core";
12import { isDefined } from "./util";
13var TranslateParser = (function () {
14 function TranslateParser() {
15 }
16 return TranslateParser;
17}());
18export { TranslateParser };
19var TranslateDefaultParser = (function (_super) {
20 __extends(TranslateDefaultParser, _super);
21 function TranslateDefaultParser() {
22 var _this = _super !== null && _super.apply(this, arguments) || this;
23 _this.templateMatcher = /{{\s?([^{}\s]*)\s?}}/g;
24 return _this;
25 }
26 TranslateDefaultParser.prototype.interpolate = function (expr, params) {
27 var result;
28 if (typeof expr === 'string') {
29 result = this.interpolateString(expr, params);
30 }
31 else if (typeof expr === 'function') {
32 result = this.interpolateFunction(expr, params);
33 }
34 else {
35 // this should not happen, but an unrelated TranslateService test depends on it
36 result = expr;
37 }
38 return result;
39 };
40 TranslateDefaultParser.prototype.getValue = function (target, key) {
41 var keys = key.split('.');
42 key = '';
43 do {
44 key += keys.shift();
45 if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {
46 target = target[key];
47 key = '';
48 }
49 else if (!keys.length) {
50 target = undefined;
51 }
52 else {
53 key += '.';
54 }
55 } while (keys.length);
56 return target;
57 };
58 TranslateDefaultParser.prototype.interpolateFunction = function (fn, params) {
59 return fn(params);
60 };
61 TranslateDefaultParser.prototype.interpolateString = function (expr, params) {
62 var _this = this;
63 if (!params) {
64 return expr;
65 }
66 return expr.replace(this.templateMatcher, function (substring, b) {
67 var r = _this.getValue(params, b);
68 return isDefined(r) ? r : substring;
69 });
70 };
71 return TranslateDefaultParser;
72}(TranslateParser));
73export { TranslateDefaultParser };
74TranslateDefaultParser.decorators = [
75 { type: Injectable },
76];
77/** @nocollapse */
78TranslateDefaultParser.ctorParameters = function () { return []; };