ngx-ode-sijil 4.6.0-dev.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/s5l.component.mjs +52 -0
- package/esm2020/lib/ngx-ode-sijil.module.mjs +42 -0
- package/esm2020/lib/pipes/translate.pipe.mjs +18 -0
- package/esm2020/lib/services/bundles.service.mjs +98 -0
- package/esm2020/lib/services/parser/fragments.parser.mjs +142 -0
- package/esm2020/lib/services/parser/parser.interface.mjs +15 -0
- package/esm2020/lib/services/require/httprequire.service.mjs +23 -0
- package/esm2020/lib/services/require/require.interface.mjs +8 -0
- package/esm2020/lib/services/sijil.opts.mjs +11 -0
- package/esm2020/ngx-ode-sijil.mjs +5 -0
- package/esm2020/public-api.mjs +8 -0
- package/fesm2015/{ngx-ode-sijil.js → ngx-ode-sijil.mjs} +74 -349
- package/fesm2015/ngx-ode-sijil.mjs.map +1 -0
- package/fesm2020/ngx-ode-sijil.mjs +403 -0
- package/fesm2020/ngx-ode-sijil.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/s5l.component.d.ts +3 -0
- package/lib/ngx-ode-sijil.module.d.ts +9 -2
- package/lib/pipes/translate.pipe.d.ts +3 -0
- package/lib/services/require/httprequire.service.d.ts +3 -0
- package/package.json +27 -17
- package/CHANGELOG.md +0 -12
- package/bundles/ngx-ode-sijil.umd.js +0 -1029
- package/bundles/ngx-ode-sijil.umd.js.map +0 -1
- package/bundles/ngx-ode-sijil.umd.min.js +0 -16
- package/bundles/ngx-ode-sijil.umd.min.js.map +0 -1
- package/esm2015/lib/components/s5l.component.js +0 -92
- package/esm2015/lib/ngx-ode-sijil.module.js +0 -51
- package/esm2015/lib/pipes/translate.pipe.js +0 -39
- package/esm2015/lib/services/bundles.service.js +0 -154
- package/esm2015/lib/services/parser/fragments.parser.js +0 -208
- package/esm2015/lib/services/parser/parser.interface.js +0 -40
- package/esm2015/lib/services/require/httprequire.service.js +0 -47
- package/esm2015/lib/services/require/require.interface.js +0 -22
- package/esm2015/lib/services/sijil.opts.js +0 -25
- package/esm2015/ngx-ode-sijil.js +0 -15
- package/esm2015/public-api.js +0 -13
- package/esm5/lib/components/s5l.component.js +0 -98
- package/esm5/lib/ngx-ode-sijil.module.js +0 -64
- package/esm5/lib/pipes/translate.pipe.js +0 -44
- package/esm5/lib/services/bundles.service.js +0 -243
- package/esm5/lib/services/parser/fragments.parser.js +0 -230
- package/esm5/lib/services/parser/parser.interface.js +0 -57
- package/esm5/lib/services/require/httprequire.service.js +0 -50
- package/esm5/lib/services/require/require.interface.js +0 -38
- package/esm5/lib/services/sijil.opts.js +0 -41
- package/esm5/ngx-ode-sijil.js +0 -15
- package/esm5/public-api.js +0 -13
- package/fesm2015/ngx-ode-sijil.js.map +0 -1
- package/fesm5/ngx-ode-sijil.js +0 -829
- package/fesm5/ngx-ode-sijil.js.map +0 -1
- package/ngx-ode-sijil.d.ts +0 -9
- package/ngx-ode-sijil.metadata.json +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-ode-sijil.mjs","sources":["../../../projects/ngx-ode-sijil/src/lib/services/bundles.service.ts","../../../projects/ngx-ode-sijil/src/lib/components/s5l.component.ts","../../../projects/ngx-ode-sijil/src/lib/pipes/translate.pipe.ts","../../../projects/ngx-ode-sijil/src/lib/services/require/require.interface.ts","../../../projects/ngx-ode-sijil/src/lib/services/parser/parser.interface.ts","../../../projects/ngx-ode-sijil/src/lib/services/sijil.opts.ts","../../../projects/ngx-ode-sijil/src/lib/services/require/httprequire.service.ts","../../../projects/ngx-ode-sijil/src/lib/services/parser/fragments.parser.ts","../../../projects/ngx-ode-sijil/src/lib/ngx-ode-sijil.module.ts","../../../projects/ngx-ode-sijil/src/public-api.ts","../../../projects/ngx-ode-sijil/src/ngx-ode-sijil.ts"],"sourcesContent":["import { RequireService } from './require/require.interface';\nimport { Parser } from './parser/parser.interface';\nimport { SijilOpts } from './sijil.opts';\n\n/**\n * Defines a BundlesService, whice is the main entry point for Sijil operations.\n *\n * A BundlesServices has three dependencies :\n * - RequireService : Used to fetch bundles\n * - Parser : Used to parse logic inside bundle values\n * - SijilOpts : An object containing custom settings\n */\nexport class BundlesService {\n\n constructor(private requireService: RequireService, private parser: Parser, sijilOpts: SijilOpts) {\n this.defaultLanguage = sijilOpts.defaultLanguage;\n if(!this.defaultLanguage && typeof window !== 'undefined') {\n this.defaultLanguage = window.navigator.language.split('-')[0];\n }\n this.currentLanguage = this.defaultLanguage;\n }\n\n private bundles: Object = {};\n /**\n * Fallback language.\n */\n defaultLanguage: string;\n /**\n * Current language.\n */\n currentLanguage: string;\n\n /**\n * Add keys/values to an existing bundle, or create it if missing.\n *\n * @param bundle An object containing translations as key / values.\n * @param lang The language to map the bundle with, or the current langugage if omitted.\n */\n addToBundle(bundle: Object, lang?: string) : void {\n const targetLanguage = lang || this.currentLanguage || this.defaultLanguage || 'en';\n\n if(!this.bundles[targetLanguage]) {\n this.bundles[targetLanguage] = {};\n }\n\n this.bundles[targetLanguage] = Object.assign({}, this.bundles[targetLanguage], bundle);\n\n if(!this.currentLanguage) {\n this.currentLanguage = lang;\n }\n }\n\n /**\n * Loads a bundle and associates it with a language.\n * If the target language already contains key/values, then we mixin the new bundle and the existing one.\n *\n * @param where The path, or whatever the RequireService needs to fetch the bundle.\n * @param lang The target language, or the current language if omitted.\n * @returns A Promise, because the RequireService can be (is - by default) asynchronous.\n */\n loadBundle(where, lang?: string) : Promise<void> {\n return this.requireService.load(where)\n .then(bundle => {\n this.addToBundle(bundle, lang);\n })\n }\n /**\n * Loads multiple bundles and associates then with a language.\n *\n * @see {@link loadBundle}\n */\n loadBundles(specs: { lang: string, where: any }[]): Promise<void[]> {\n return Promise.all(specs.map((spec) => {\n return this.loadBundle(spec.where, spec.lang);\n }))\n }\n\n /**\n * Removes a bundle from the bundles list.\n *\n * @param lang Language to remove.\n */\n unloadBundle(lang: string): void {\n delete this.bundles[lang];\n }\n\n /**\n * @returns Returns a list of all loaded languages.\n */\n getLoadedLanguages() : string[] {\n return Object.keys(this.bundles);\n }\n\n /**\n * Translates a single key into a target language, using the parameters provided if needed.\n *\n * @param key Key to translate\n * @param parameters Parameters to use if the translation contains logic.\n * @param lang Target language, of the current language if omitted.\n * @returns The computed translation, or the key if no match was found in the bundles (including the fallback language bundle).\n */\n translate(key: string, parameters?: Object | any[], lang?: string) : string {\n const targetLanguage = lang || this.currentLanguage;\n\n const rawTranslation : string = this.bundles[targetLanguage] &&\n this.bundles[targetLanguage][key] ||\n this.defaultLanguage &&\n this.bundles[this.defaultLanguage] &&\n this.bundles[this.defaultLanguage][key] ||\n key;\n\n if(rawTranslation !== key && parameters) {\n return this.parser.compile(rawTranslation, parameters, (e) => { console.error(e); return key; });\n } else {\n return rawTranslation;\n }\n }\n}\n","import { Component, Input, ElementRef, ViewChild, AfterViewInit, ChangeDetectionStrategy, DoCheck } from '@angular/core';\nimport { BundlesService } from '../services/bundles.service';\n\n@Component({\n selector: 's5l',\n template: `\n <span #wrapper>\n <ng-content></ng-content>\n </span>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class S5lComponent implements AfterViewInit, DoCheck {\n\n constructor(private bundlesService: BundlesService) {}\n\n @ViewChild('wrapper') wrapperRef: ElementRef;\n\n private value: string;\n private loaded: boolean;\n private displayedValue: string;\n\n @Input(\"s5l-params\") parameters: Object | any[];\n @Input(\"s5l-lang\") fixedLanguage: string;\n\n private refreshTranslation() {\n const newDisplayedValue = this.bundlesService.translate(this.value, this.parameters, this.fixedLanguage)\n if (this.displayedValue !== newDisplayedValue) {\n this.displayedValue = newDisplayedValue;\n this.wrapperRef.nativeElement.innerHTML = this.displayedValue;\n }\n }\n\n ngAfterViewInit(): void {\n this.value = this.wrapperRef.nativeElement.innerHTML.trim();\n this.loaded = true;\n this.refreshTranslation();\n }\n\n ngDoCheck(): void {\n if (!this.loaded) {\n return;\n }\n this.refreshTranslation();\n }\n}\n","import { BundlesService } from '../services/bundles.service';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'translate', pure: false})\nexport class TranslatePipe implements PipeTransform {\n\n constructor(private bundlesService: BundlesService) {}\n\n transform(key: string, parameters?: object | any[], lang?: string): string {\n return this.bundlesService.translate(key, parameters, lang);\n }\n\n}\n","/**\n * Service used to fetch bundles.\n *\n * @export\n */\nexport abstract class RequireService {\n /**\n * Fetch a bundle.\n * @memberOf RequireService\n */\n load: (from: any) => Promise<Object>;\n}\n","export class ParserError extends Error {\n constructor(public message: string, public fragment: string) {\n super(message)\n }\n}\n\nexport type ParserCallback = (_ : ParserError) => string;\n/**\n * Parses logic inside translations.\n *\n * @export\n */\nexport abstract class Parser {\n /**\n * Processes a string, isolating logic fragments and compiling them.\n *\n * @memberOf Parser\n */\n compile: (text: string, parameters: any, error?: ParserCallback) => string;\n}\n","/**\n * Contains Sijil options.\n *\n * @export\n */\nexport abstract class SijilOpts {\n /** Fallback language when a translation is not available in the current language. */\n defaultLanguage: string;\n}\n\nexport let defaultSijilOpts : SijilOpts = {\n defaultLanguage: window ? window.navigator.language.split('-')[0] : undefined\n};\n","import { RequireService } from './require.interface'\nimport { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\n\n/**\n * Fetches a bundle from a target url.\n *\n * @export\n */\n@Injectable()\nexport class HttpRequireService implements RequireService {\n\n constructor(private httpClient: HttpClient){}\n\n load(url) : Promise<Object> {\n return this.httpClient.get(url).toPromise()\n .then(data => data);\n }\n\n}\n","import { Parser, ParserCallback, ParserError } from './parser.interface';\n\n/**\n * The default Sijil parser.\n *\n * - Input : bundle value (translation) + parameters (Object or Array)\n * - Output : compiled translation\n *\n * Logic is contained inside mustache blocks : {{ LOGIC BLOCK }}\n *\n * There are two variants :\n * - A single parameter key (when the params are contained inside an object) or index (params contained inside an array)\n *\n * Examples:\n *\n * {{ key }} + { \"key\" : \"my key\" } = my key\n *\n * {{ 1 }} + [1, 2] = 2\n *\n * - A ternary-like condition\n *\n * {{ condition ? trueValue : falseValue }}\n * Where condition may be : a single parameter key/index, or 2 clauses with the following operators : ==, >, =>, <=, <\n *\n * Examples:\n *\n * (the $ sign to refer to a variable is mandatory when a clause contains more than 1 word)\n *\n * {{ count > 1 ? $count cats : 1 cat }} + {\"count\": 10} = 10 cats\n * {{ 1 < count ? $count cats : 1 cat }} + {\"count\": 1} = 1 cat\n *\n * @export\n */\n// @dynamic\nexport class FragmentsParser implements Parser {\n\n constructor(){}\n\n private static delimiters: string[] = ['{{', '}}'];\n private static delimRegexp = new RegExp(`${FragmentsParser.delimiters[0]}[^}]+${FragmentsParser.delimiters[1]}`, 'gm');\n\n private static defaultErrorCallback: ParserCallback = (e: ParserError) => {\n console.error(e);\n return e.fragment;\n }\n\n private getParameter(parameters: Object | any[], fragment: string, strict?: boolean): string {\n const splittedFrag = fragment.split(/\\s+/);\n if(splittedFrag.length === 1) {\n return fragment[0] === '$' ?\n parameters[fragment.substr(1)] :\n strict ?\n fragment :\n parameters[fragment] !== undefined ?\n parameters[fragment] :\n fragment;\n }\n return fragment.split(/\\s+/).reduce((l, r) => {\n l.push(r[0] === '$' ? parameters[r.substr(1)] : r);\n return l;\n }, []).join(' ');\n }\n\n private compileFragment(fragment: string, parameters: Object | any[]): string {\n fragment = fragment.replace(/{{|}}/g, '');\n\n let interrogationIndex;\n let dotsIndex;\n if ((interrogationIndex = fragment.indexOf('?')) > 0 && (dotsIndex = fragment.lastIndexOf(':')) > 1) {\n const condition = fragment.substring(0, interrogationIndex).trim();\n const trueReturn = fragment.substring(interrogationIndex + 1, dotsIndex).trim();\n const falseReturn = fragment.substring(dotsIndex + 1).trim();\n const computedTrueReturn = this.getParameter(parameters, trueReturn);\n const computedFalseReturn = this.getParameter(parameters, falseReturn);\n\n const splittedCondition = condition.split(/\\s+/);\n\n if (splittedCondition.length === 1) {\n\n // Single variable case\n\n const variable = parameters[splittedCondition[0]];\n\n return variable ?\n computedTrueReturn :\n computedFalseReturn;\n\n } else if (splittedCondition.length === 3) {\n\n // Operator case\n\n const leftHandParam = this.getParameter(parameters, splittedCondition[0], parameters instanceof Array);\n const rightHand = this.getParameter(parameters, splittedCondition[2], parameters instanceof Array);\n const comparisonOperator = splittedCondition[1];\n\n switch (comparisonOperator) {\n case '==':\n return leftHandParam === rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '>':\n return leftHandParam > rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '>=':\n return leftHandParam >= rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '<':\n return leftHandParam < rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '<=':\n return leftHandParam <= rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n default:\n throw new ParserError(`Invalid conditional operator for fragment : ${fragment}`, fragment);\n }\n\n } else {\n throw new ParserError(`Invalid condition for fragment : ${fragment}`, fragment);\n }\n } else {\n fragment = fragment.trim();\n return parameters[fragment];\n }\n }\n\n compile(rawTranslation: string, parameters: Object, onError?: ParserCallback): string {\n\n const parts = rawTranslation.split(FragmentsParser.delimRegexp);\n const fragments = rawTranslation.match(FragmentsParser.delimRegexp);\n\n let compiledTranslation = '';\n\n if (!onError) {\n onError = FragmentsParser.defaultErrorCallback;\n }\n\n if (!fragments) {\n compiledTranslation += rawTranslation;\n } else {\n for (let i = 0; i < parts.length; i++) {\n compiledTranslation += parts[i];\n if (i > fragments.length - 1) {\n continue;\n }\n try {\n compiledTranslation += this.compileFragment(fragments[i], parameters);\n } catch (e) {\n compiledTranslation += onError(e);\n }\n }\n }\n\n return compiledTranslation;\n\n }\n\n}\n","import { NgModule, ModuleWithProviders, Type } from '@angular/core';\nimport { S5lComponent } from './components/s5l.component';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { HttpClientModule } from '@angular/common/http';\nimport { RequireService } from './services/require/require.interface';\nimport { Parser } from './services/parser/parser.interface';\nimport { SijilOpts, defaultSijilOpts } from './services/sijil.opts';\nimport { BundlesService } from './services/bundles.service';\nimport { HttpRequireService } from './services/require/httprequire.service';\nimport { FragmentsParser } from './services/parser/fragments.parser';\n\n@NgModule({\n declarations: [S5lComponent, TranslatePipe],\n imports: [HttpClientModule],\n exports: [S5lComponent, TranslatePipe]\n})\nexport class NgxOdeSijilModule {\n static forRoot(require?: Type<RequireService>, parser?: Type<Parser>, options?: SijilOpts): ModuleWithProviders<NgxOdeSijilModule> {\n return {\n ngModule: NgxOdeSijilModule,\n providers: [\n { provide: BundlesService, useClass: BundlesService, deps: [ RequireService, Parser, SijilOpts ] },\n { provide: RequireService, useClass: require || HttpRequireService },\n { provide: Parser, useClass: parser || FragmentsParser },\n { provide: SijilOpts, useValue: options || defaultSijilOpts }\n ]\n };\n }\n\n static forChild(): ModuleWithProviders<NgxOdeSijilModule> {\n return {\n ngModule: NgxOdeSijilModule,\n providers: []\n };\n }\n}\n","/*\n * Public API Surface of ngx-ode-sijil\n */\n\nexport * from './lib/services/bundles.service';\nexport * from './lib/components/s5l.component';\nexport * from './lib/pipes/translate.pipe';\nexport * from './lib/ngx-ode-sijil.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BundlesService"],"mappings":"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"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, ChangeDetectionStrategy, ViewChild, Input, Pipe, Injectable, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common/http';
|
|
4
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Defines a BundlesService, whice is the main entry point for Sijil operations.
|
|
8
|
+
*
|
|
9
|
+
* A BundlesServices has three dependencies :
|
|
10
|
+
* - RequireService : Used to fetch bundles
|
|
11
|
+
* - Parser : Used to parse logic inside bundle values
|
|
12
|
+
* - SijilOpts : An object containing custom settings
|
|
13
|
+
*/
|
|
14
|
+
class BundlesService {
|
|
15
|
+
constructor(requireService, parser, sijilOpts) {
|
|
16
|
+
this.requireService = requireService;
|
|
17
|
+
this.parser = parser;
|
|
18
|
+
this.bundles = {};
|
|
19
|
+
this.defaultLanguage = sijilOpts.defaultLanguage;
|
|
20
|
+
if (!this.defaultLanguage && typeof window !== 'undefined') {
|
|
21
|
+
this.defaultLanguage = window.navigator.language.split('-')[0];
|
|
22
|
+
}
|
|
23
|
+
this.currentLanguage = this.defaultLanguage;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Add keys/values to an existing bundle, or create it if missing.
|
|
27
|
+
*
|
|
28
|
+
* @param bundle An object containing translations as key / values.
|
|
29
|
+
* @param lang The language to map the bundle with, or the current langugage if omitted.
|
|
30
|
+
*/
|
|
31
|
+
addToBundle(bundle, lang) {
|
|
32
|
+
const targetLanguage = lang || this.currentLanguage || this.defaultLanguage || 'en';
|
|
33
|
+
if (!this.bundles[targetLanguage]) {
|
|
34
|
+
this.bundles[targetLanguage] = {};
|
|
35
|
+
}
|
|
36
|
+
this.bundles[targetLanguage] = Object.assign({}, this.bundles[targetLanguage], bundle);
|
|
37
|
+
if (!this.currentLanguage) {
|
|
38
|
+
this.currentLanguage = lang;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Loads a bundle and associates it with a language.
|
|
43
|
+
* If the target language already contains key/values, then we mixin the new bundle and the existing one.
|
|
44
|
+
*
|
|
45
|
+
* @param where The path, or whatever the RequireService needs to fetch the bundle.
|
|
46
|
+
* @param lang The target language, or the current language if omitted.
|
|
47
|
+
* @returns A Promise, because the RequireService can be (is - by default) asynchronous.
|
|
48
|
+
*/
|
|
49
|
+
loadBundle(where, lang) {
|
|
50
|
+
return this.requireService.load(where)
|
|
51
|
+
.then(bundle => {
|
|
52
|
+
this.addToBundle(bundle, lang);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Loads multiple bundles and associates then with a language.
|
|
57
|
+
*
|
|
58
|
+
* @see {@link loadBundle}
|
|
59
|
+
*/
|
|
60
|
+
loadBundles(specs) {
|
|
61
|
+
return Promise.all(specs.map((spec) => {
|
|
62
|
+
return this.loadBundle(spec.where, spec.lang);
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Removes a bundle from the bundles list.
|
|
67
|
+
*
|
|
68
|
+
* @param lang Language to remove.
|
|
69
|
+
*/
|
|
70
|
+
unloadBundle(lang) {
|
|
71
|
+
delete this.bundles[lang];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* @returns Returns a list of all loaded languages.
|
|
75
|
+
*/
|
|
76
|
+
getLoadedLanguages() {
|
|
77
|
+
return Object.keys(this.bundles);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Translates a single key into a target language, using the parameters provided if needed.
|
|
81
|
+
*
|
|
82
|
+
* @param key Key to translate
|
|
83
|
+
* @param parameters Parameters to use if the translation contains logic.
|
|
84
|
+
* @param lang Target language, of the current language if omitted.
|
|
85
|
+
* @returns The computed translation, or the key if no match was found in the bundles (including the fallback language bundle).
|
|
86
|
+
*/
|
|
87
|
+
translate(key, parameters, lang) {
|
|
88
|
+
const targetLanguage = lang || this.currentLanguage;
|
|
89
|
+
const rawTranslation = this.bundles[targetLanguage] &&
|
|
90
|
+
this.bundles[targetLanguage][key] ||
|
|
91
|
+
this.defaultLanguage &&
|
|
92
|
+
this.bundles[this.defaultLanguage] &&
|
|
93
|
+
this.bundles[this.defaultLanguage][key] ||
|
|
94
|
+
key;
|
|
95
|
+
if (rawTranslation !== key && parameters) {
|
|
96
|
+
return this.parser.compile(rawTranslation, parameters, (e) => { console.error(e); return key; });
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
return rawTranslation;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
class S5lComponent {
|
|
105
|
+
constructor(bundlesService) {
|
|
106
|
+
this.bundlesService = bundlesService;
|
|
107
|
+
}
|
|
108
|
+
refreshTranslation() {
|
|
109
|
+
const newDisplayedValue = this.bundlesService.translate(this.value, this.parameters, this.fixedLanguage);
|
|
110
|
+
if (this.displayedValue !== newDisplayedValue) {
|
|
111
|
+
this.displayedValue = newDisplayedValue;
|
|
112
|
+
this.wrapperRef.nativeElement.innerHTML = this.displayedValue;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
ngAfterViewInit() {
|
|
116
|
+
this.value = this.wrapperRef.nativeElement.innerHTML.trim();
|
|
117
|
+
this.loaded = true;
|
|
118
|
+
this.refreshTranslation();
|
|
119
|
+
}
|
|
120
|
+
ngDoCheck() {
|
|
121
|
+
if (!this.loaded) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
this.refreshTranslation();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
S5lComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: S5lComponent, deps: [{ token: BundlesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
S5lComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.1", type: S5lComponent, selector: "s5l", inputs: { parameters: ["s5l-params", "parameters"], fixedLanguage: ["s5l-lang", "fixedLanguage"] }, viewQueries: [{ propertyName: "wrapperRef", first: true, predicate: ["wrapper"], descendants: true }], ngImport: i0, template: `
|
|
129
|
+
<span #wrapper>
|
|
130
|
+
<ng-content></ng-content>
|
|
131
|
+
</span>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: S5lComponent, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{
|
|
135
|
+
selector: 's5l',
|
|
136
|
+
template: `
|
|
137
|
+
<span #wrapper>
|
|
138
|
+
<ng-content></ng-content>
|
|
139
|
+
</span>`,
|
|
140
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
141
|
+
}]
|
|
142
|
+
}], ctorParameters: function () { return [{ type: BundlesService }]; }, propDecorators: { wrapperRef: [{
|
|
143
|
+
type: ViewChild,
|
|
144
|
+
args: ['wrapper']
|
|
145
|
+
}], parameters: [{
|
|
146
|
+
type: Input,
|
|
147
|
+
args: ["s5l-params"]
|
|
148
|
+
}], fixedLanguage: [{
|
|
149
|
+
type: Input,
|
|
150
|
+
args: ["s5l-lang"]
|
|
151
|
+
}] } });
|
|
152
|
+
|
|
153
|
+
class TranslatePipe {
|
|
154
|
+
constructor(bundlesService) {
|
|
155
|
+
this.bundlesService = bundlesService;
|
|
156
|
+
}
|
|
157
|
+
transform(key, parameters, lang) {
|
|
158
|
+
return this.bundlesService.translate(key, parameters, lang);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
TranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: TranslatePipe, deps: [{ token: BundlesService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
162
|
+
TranslatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.1", ngImport: i0, type: TranslatePipe, name: "translate", pure: false });
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: TranslatePipe, decorators: [{
|
|
164
|
+
type: Pipe,
|
|
165
|
+
args: [{ name: 'translate', pure: false }]
|
|
166
|
+
}], ctorParameters: function () { return [{ type: BundlesService }]; } });
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Service used to fetch bundles.
|
|
170
|
+
*
|
|
171
|
+
* @export
|
|
172
|
+
*/
|
|
173
|
+
class RequireService {
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
class ParserError extends Error {
|
|
177
|
+
constructor(message, fragment) {
|
|
178
|
+
super(message);
|
|
179
|
+
this.message = message;
|
|
180
|
+
this.fragment = fragment;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Parses logic inside translations.
|
|
185
|
+
*
|
|
186
|
+
* @export
|
|
187
|
+
*/
|
|
188
|
+
class Parser {
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Contains Sijil options.
|
|
193
|
+
*
|
|
194
|
+
* @export
|
|
195
|
+
*/
|
|
196
|
+
class SijilOpts {
|
|
197
|
+
}
|
|
198
|
+
let defaultSijilOpts = {
|
|
199
|
+
defaultLanguage: window ? window.navigator.language.split('-')[0] : undefined
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Fetches a bundle from a target url.
|
|
204
|
+
*
|
|
205
|
+
* @export
|
|
206
|
+
*/
|
|
207
|
+
class HttpRequireService {
|
|
208
|
+
constructor(httpClient) {
|
|
209
|
+
this.httpClient = httpClient;
|
|
210
|
+
}
|
|
211
|
+
load(url) {
|
|
212
|
+
return this.httpClient.get(url).toPromise()
|
|
213
|
+
.then(data => data);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
HttpRequireService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpRequireService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
217
|
+
HttpRequireService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpRequireService });
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpRequireService, decorators: [{
|
|
219
|
+
type: Injectable
|
|
220
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* The default Sijil parser.
|
|
224
|
+
*
|
|
225
|
+
* - Input : bundle value (translation) + parameters (Object or Array)
|
|
226
|
+
* - Output : compiled translation
|
|
227
|
+
*
|
|
228
|
+
* Logic is contained inside mustache blocks : {{ LOGIC BLOCK }}
|
|
229
|
+
*
|
|
230
|
+
* There are two variants :
|
|
231
|
+
* - A single parameter key (when the params are contained inside an object) or index (params contained inside an array)
|
|
232
|
+
*
|
|
233
|
+
* Examples:
|
|
234
|
+
*
|
|
235
|
+
* {{ key }} + { "key" : "my key" } = my key
|
|
236
|
+
*
|
|
237
|
+
* {{ 1 }} + [1, 2] = 2
|
|
238
|
+
*
|
|
239
|
+
* - A ternary-like condition
|
|
240
|
+
*
|
|
241
|
+
* {{ condition ? trueValue : falseValue }}
|
|
242
|
+
* Where condition may be : a single parameter key/index, or 2 clauses with the following operators : ==, >, =>, <=, <
|
|
243
|
+
*
|
|
244
|
+
* Examples:
|
|
245
|
+
*
|
|
246
|
+
* (the $ sign to refer to a variable is mandatory when a clause contains more than 1 word)
|
|
247
|
+
*
|
|
248
|
+
* {{ count > 1 ? $count cats : 1 cat }} + {"count": 10} = 10 cats
|
|
249
|
+
* {{ 1 < count ? $count cats : 1 cat }} + {"count": 1} = 1 cat
|
|
250
|
+
*
|
|
251
|
+
* @export
|
|
252
|
+
*/
|
|
253
|
+
// @dynamic
|
|
254
|
+
class FragmentsParser {
|
|
255
|
+
constructor() { }
|
|
256
|
+
getParameter(parameters, fragment, strict) {
|
|
257
|
+
const splittedFrag = fragment.split(/\s+/);
|
|
258
|
+
if (splittedFrag.length === 1) {
|
|
259
|
+
return fragment[0] === '$' ?
|
|
260
|
+
parameters[fragment.substr(1)] :
|
|
261
|
+
strict ?
|
|
262
|
+
fragment :
|
|
263
|
+
parameters[fragment] !== undefined ?
|
|
264
|
+
parameters[fragment] :
|
|
265
|
+
fragment;
|
|
266
|
+
}
|
|
267
|
+
return fragment.split(/\s+/).reduce((l, r) => {
|
|
268
|
+
l.push(r[0] === '$' ? parameters[r.substr(1)] : r);
|
|
269
|
+
return l;
|
|
270
|
+
}, []).join(' ');
|
|
271
|
+
}
|
|
272
|
+
compileFragment(fragment, parameters) {
|
|
273
|
+
fragment = fragment.replace(/{{|}}/g, '');
|
|
274
|
+
let interrogationIndex;
|
|
275
|
+
let dotsIndex;
|
|
276
|
+
if ((interrogationIndex = fragment.indexOf('?')) > 0 && (dotsIndex = fragment.lastIndexOf(':')) > 1) {
|
|
277
|
+
const condition = fragment.substring(0, interrogationIndex).trim();
|
|
278
|
+
const trueReturn = fragment.substring(interrogationIndex + 1, dotsIndex).trim();
|
|
279
|
+
const falseReturn = fragment.substring(dotsIndex + 1).trim();
|
|
280
|
+
const computedTrueReturn = this.getParameter(parameters, trueReturn);
|
|
281
|
+
const computedFalseReturn = this.getParameter(parameters, falseReturn);
|
|
282
|
+
const splittedCondition = condition.split(/\s+/);
|
|
283
|
+
if (splittedCondition.length === 1) {
|
|
284
|
+
// Single variable case
|
|
285
|
+
const variable = parameters[splittedCondition[0]];
|
|
286
|
+
return variable ?
|
|
287
|
+
computedTrueReturn :
|
|
288
|
+
computedFalseReturn;
|
|
289
|
+
}
|
|
290
|
+
else if (splittedCondition.length === 3) {
|
|
291
|
+
// Operator case
|
|
292
|
+
const leftHandParam = this.getParameter(parameters, splittedCondition[0], parameters instanceof Array);
|
|
293
|
+
const rightHand = this.getParameter(parameters, splittedCondition[2], parameters instanceof Array);
|
|
294
|
+
const comparisonOperator = splittedCondition[1];
|
|
295
|
+
switch (comparisonOperator) {
|
|
296
|
+
case '==':
|
|
297
|
+
return leftHandParam === rightHand ?
|
|
298
|
+
computedTrueReturn :
|
|
299
|
+
computedFalseReturn;
|
|
300
|
+
case '>':
|
|
301
|
+
return leftHandParam > rightHand ?
|
|
302
|
+
computedTrueReturn :
|
|
303
|
+
computedFalseReturn;
|
|
304
|
+
case '>=':
|
|
305
|
+
return leftHandParam >= rightHand ?
|
|
306
|
+
computedTrueReturn :
|
|
307
|
+
computedFalseReturn;
|
|
308
|
+
case '<':
|
|
309
|
+
return leftHandParam < rightHand ?
|
|
310
|
+
computedTrueReturn :
|
|
311
|
+
computedFalseReturn;
|
|
312
|
+
case '<=':
|
|
313
|
+
return leftHandParam <= rightHand ?
|
|
314
|
+
computedTrueReturn :
|
|
315
|
+
computedFalseReturn;
|
|
316
|
+
default:
|
|
317
|
+
throw new ParserError(`Invalid conditional operator for fragment : ${fragment}`, fragment);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
throw new ParserError(`Invalid condition for fragment : ${fragment}`, fragment);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
fragment = fragment.trim();
|
|
326
|
+
return parameters[fragment];
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
compile(rawTranslation, parameters, onError) {
|
|
330
|
+
const parts = rawTranslation.split(FragmentsParser.delimRegexp);
|
|
331
|
+
const fragments = rawTranslation.match(FragmentsParser.delimRegexp);
|
|
332
|
+
let compiledTranslation = '';
|
|
333
|
+
if (!onError) {
|
|
334
|
+
onError = FragmentsParser.defaultErrorCallback;
|
|
335
|
+
}
|
|
336
|
+
if (!fragments) {
|
|
337
|
+
compiledTranslation += rawTranslation;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
for (let i = 0; i < parts.length; i++) {
|
|
341
|
+
compiledTranslation += parts[i];
|
|
342
|
+
if (i > fragments.length - 1) {
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
try {
|
|
346
|
+
compiledTranslation += this.compileFragment(fragments[i], parameters);
|
|
347
|
+
}
|
|
348
|
+
catch (e) {
|
|
349
|
+
compiledTranslation += onError(e);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return compiledTranslation;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
FragmentsParser.delimiters = ['{{', '}}'];
|
|
357
|
+
FragmentsParser.delimRegexp = new RegExp(`${FragmentsParser.delimiters[0]}[^}]+${FragmentsParser.delimiters[1]}`, 'gm');
|
|
358
|
+
FragmentsParser.defaultErrorCallback = (e) => {
|
|
359
|
+
console.error(e);
|
|
360
|
+
return e.fragment;
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
class NgxOdeSijilModule {
|
|
364
|
+
static forRoot(require, parser, options) {
|
|
365
|
+
return {
|
|
366
|
+
ngModule: NgxOdeSijilModule,
|
|
367
|
+
providers: [
|
|
368
|
+
{ provide: BundlesService, useClass: BundlesService, deps: [RequireService, Parser, SijilOpts] },
|
|
369
|
+
{ provide: RequireService, useClass: require || HttpRequireService },
|
|
370
|
+
{ provide: Parser, useClass: parser || FragmentsParser },
|
|
371
|
+
{ provide: SijilOpts, useValue: options || defaultSijilOpts }
|
|
372
|
+
]
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
static forChild() {
|
|
376
|
+
return {
|
|
377
|
+
ngModule: NgxOdeSijilModule,
|
|
378
|
+
providers: []
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
NgxOdeSijilModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NgxOdeSijilModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
383
|
+
NgxOdeSijilModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.1", ngImport: i0, type: NgxOdeSijilModule, declarations: [S5lComponent, TranslatePipe], imports: [HttpClientModule], exports: [S5lComponent, TranslatePipe] });
|
|
384
|
+
NgxOdeSijilModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NgxOdeSijilModule, imports: [HttpClientModule] });
|
|
385
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: NgxOdeSijilModule, decorators: [{
|
|
386
|
+
type: NgModule,
|
|
387
|
+
args: [{
|
|
388
|
+
declarations: [S5lComponent, TranslatePipe],
|
|
389
|
+
imports: [HttpClientModule],
|
|
390
|
+
exports: [S5lComponent, TranslatePipe]
|
|
391
|
+
}]
|
|
392
|
+
}] });
|
|
393
|
+
|
|
394
|
+
/*
|
|
395
|
+
* Public API Surface of ngx-ode-sijil
|
|
396
|
+
*/
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Generated bundle index. Do not edit.
|
|
400
|
+
*/
|
|
401
|
+
|
|
402
|
+
export { BundlesService, NgxOdeSijilModule, S5lComponent, TranslatePipe };
|
|
403
|
+
//# sourceMappingURL=ngx-ode-sijil.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-ode-sijil.mjs","sources":["../../../projects/ngx-ode-sijil/src/lib/services/bundles.service.ts","../../../projects/ngx-ode-sijil/src/lib/components/s5l.component.ts","../../../projects/ngx-ode-sijil/src/lib/pipes/translate.pipe.ts","../../../projects/ngx-ode-sijil/src/lib/services/require/require.interface.ts","../../../projects/ngx-ode-sijil/src/lib/services/parser/parser.interface.ts","../../../projects/ngx-ode-sijil/src/lib/services/sijil.opts.ts","../../../projects/ngx-ode-sijil/src/lib/services/require/httprequire.service.ts","../../../projects/ngx-ode-sijil/src/lib/services/parser/fragments.parser.ts","../../../projects/ngx-ode-sijil/src/lib/ngx-ode-sijil.module.ts","../../../projects/ngx-ode-sijil/src/public-api.ts","../../../projects/ngx-ode-sijil/src/ngx-ode-sijil.ts"],"sourcesContent":["import { RequireService } from './require/require.interface';\nimport { Parser } from './parser/parser.interface';\nimport { SijilOpts } from './sijil.opts';\n\n/**\n * Defines a BundlesService, whice is the main entry point for Sijil operations.\n *\n * A BundlesServices has three dependencies :\n * - RequireService : Used to fetch bundles\n * - Parser : Used to parse logic inside bundle values\n * - SijilOpts : An object containing custom settings\n */\nexport class BundlesService {\n\n constructor(private requireService: RequireService, private parser: Parser, sijilOpts: SijilOpts) {\n this.defaultLanguage = sijilOpts.defaultLanguage;\n if(!this.defaultLanguage && typeof window !== 'undefined') {\n this.defaultLanguage = window.navigator.language.split('-')[0];\n }\n this.currentLanguage = this.defaultLanguage;\n }\n\n private bundles: Object = {};\n /**\n * Fallback language.\n */\n defaultLanguage: string;\n /**\n * Current language.\n */\n currentLanguage: string;\n\n /**\n * Add keys/values to an existing bundle, or create it if missing.\n *\n * @param bundle An object containing translations as key / values.\n * @param lang The language to map the bundle with, or the current langugage if omitted.\n */\n addToBundle(bundle: Object, lang?: string) : void {\n const targetLanguage = lang || this.currentLanguage || this.defaultLanguage || 'en';\n\n if(!this.bundles[targetLanguage]) {\n this.bundles[targetLanguage] = {};\n }\n\n this.bundles[targetLanguage] = Object.assign({}, this.bundles[targetLanguage], bundle);\n\n if(!this.currentLanguage) {\n this.currentLanguage = lang;\n }\n }\n\n /**\n * Loads a bundle and associates it with a language.\n * If the target language already contains key/values, then we mixin the new bundle and the existing one.\n *\n * @param where The path, or whatever the RequireService needs to fetch the bundle.\n * @param lang The target language, or the current language if omitted.\n * @returns A Promise, because the RequireService can be (is - by default) asynchronous.\n */\n loadBundle(where, lang?: string) : Promise<void> {\n return this.requireService.load(where)\n .then(bundle => {\n this.addToBundle(bundle, lang);\n })\n }\n /**\n * Loads multiple bundles and associates then with a language.\n *\n * @see {@link loadBundle}\n */\n loadBundles(specs: { lang: string, where: any }[]): Promise<void[]> {\n return Promise.all(specs.map((spec) => {\n return this.loadBundle(spec.where, spec.lang);\n }))\n }\n\n /**\n * Removes a bundle from the bundles list.\n *\n * @param lang Language to remove.\n */\n unloadBundle(lang: string): void {\n delete this.bundles[lang];\n }\n\n /**\n * @returns Returns a list of all loaded languages.\n */\n getLoadedLanguages() : string[] {\n return Object.keys(this.bundles);\n }\n\n /**\n * Translates a single key into a target language, using the parameters provided if needed.\n *\n * @param key Key to translate\n * @param parameters Parameters to use if the translation contains logic.\n * @param lang Target language, of the current language if omitted.\n * @returns The computed translation, or the key if no match was found in the bundles (including the fallback language bundle).\n */\n translate(key: string, parameters?: Object | any[], lang?: string) : string {\n const targetLanguage = lang || this.currentLanguage;\n\n const rawTranslation : string = this.bundles[targetLanguage] &&\n this.bundles[targetLanguage][key] ||\n this.defaultLanguage &&\n this.bundles[this.defaultLanguage] &&\n this.bundles[this.defaultLanguage][key] ||\n key;\n\n if(rawTranslation !== key && parameters) {\n return this.parser.compile(rawTranslation, parameters, (e) => { console.error(e); return key; });\n } else {\n return rawTranslation;\n }\n }\n}\n","import { Component, Input, ElementRef, ViewChild, AfterViewInit, ChangeDetectionStrategy, DoCheck } from '@angular/core';\nimport { BundlesService } from '../services/bundles.service';\n\n@Component({\n selector: 's5l',\n template: `\n <span #wrapper>\n <ng-content></ng-content>\n </span>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class S5lComponent implements AfterViewInit, DoCheck {\n\n constructor(private bundlesService: BundlesService) {}\n\n @ViewChild('wrapper') wrapperRef: ElementRef;\n\n private value: string;\n private loaded: boolean;\n private displayedValue: string;\n\n @Input(\"s5l-params\") parameters: Object | any[];\n @Input(\"s5l-lang\") fixedLanguage: string;\n\n private refreshTranslation() {\n const newDisplayedValue = this.bundlesService.translate(this.value, this.parameters, this.fixedLanguage)\n if (this.displayedValue !== newDisplayedValue) {\n this.displayedValue = newDisplayedValue;\n this.wrapperRef.nativeElement.innerHTML = this.displayedValue;\n }\n }\n\n ngAfterViewInit(): void {\n this.value = this.wrapperRef.nativeElement.innerHTML.trim();\n this.loaded = true;\n this.refreshTranslation();\n }\n\n ngDoCheck(): void {\n if (!this.loaded) {\n return;\n }\n this.refreshTranslation();\n }\n}\n","import { BundlesService } from '../services/bundles.service';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'translate', pure: false})\nexport class TranslatePipe implements PipeTransform {\n\n constructor(private bundlesService: BundlesService) {}\n\n transform(key: string, parameters?: object | any[], lang?: string): string {\n return this.bundlesService.translate(key, parameters, lang);\n }\n\n}\n","/**\n * Service used to fetch bundles.\n *\n * @export\n */\nexport abstract class RequireService {\n /**\n * Fetch a bundle.\n * @memberOf RequireService\n */\n load: (from: any) => Promise<Object>;\n}\n","export class ParserError extends Error {\n constructor(public message: string, public fragment: string) {\n super(message)\n }\n}\n\nexport type ParserCallback = (_ : ParserError) => string;\n/**\n * Parses logic inside translations.\n *\n * @export\n */\nexport abstract class Parser {\n /**\n * Processes a string, isolating logic fragments and compiling them.\n *\n * @memberOf Parser\n */\n compile: (text: string, parameters: any, error?: ParserCallback) => string;\n}\n","/**\n * Contains Sijil options.\n *\n * @export\n */\nexport abstract class SijilOpts {\n /** Fallback language when a translation is not available in the current language. */\n defaultLanguage: string;\n}\n\nexport let defaultSijilOpts : SijilOpts = {\n defaultLanguage: window ? window.navigator.language.split('-')[0] : undefined\n};\n","import { RequireService } from './require.interface'\nimport { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\n\n/**\n * Fetches a bundle from a target url.\n *\n * @export\n */\n@Injectable()\nexport class HttpRequireService implements RequireService {\n\n constructor(private httpClient: HttpClient){}\n\n load(url) : Promise<Object> {\n return this.httpClient.get(url).toPromise()\n .then(data => data);\n }\n\n}\n","import { Parser, ParserCallback, ParserError } from './parser.interface';\n\n/**\n * The default Sijil parser.\n *\n * - Input : bundle value (translation) + parameters (Object or Array)\n * - Output : compiled translation\n *\n * Logic is contained inside mustache blocks : {{ LOGIC BLOCK }}\n *\n * There are two variants :\n * - A single parameter key (when the params are contained inside an object) or index (params contained inside an array)\n *\n * Examples:\n *\n * {{ key }} + { \"key\" : \"my key\" } = my key\n *\n * {{ 1 }} + [1, 2] = 2\n *\n * - A ternary-like condition\n *\n * {{ condition ? trueValue : falseValue }}\n * Where condition may be : a single parameter key/index, or 2 clauses with the following operators : ==, >, =>, <=, <\n *\n * Examples:\n *\n * (the $ sign to refer to a variable is mandatory when a clause contains more than 1 word)\n *\n * {{ count > 1 ? $count cats : 1 cat }} + {\"count\": 10} = 10 cats\n * {{ 1 < count ? $count cats : 1 cat }} + {\"count\": 1} = 1 cat\n *\n * @export\n */\n// @dynamic\nexport class FragmentsParser implements Parser {\n\n constructor(){}\n\n private static delimiters: string[] = ['{{', '}}'];\n private static delimRegexp = new RegExp(`${FragmentsParser.delimiters[0]}[^}]+${FragmentsParser.delimiters[1]}`, 'gm');\n\n private static defaultErrorCallback: ParserCallback = (e: ParserError) => {\n console.error(e);\n return e.fragment;\n }\n\n private getParameter(parameters: Object | any[], fragment: string, strict?: boolean): string {\n const splittedFrag = fragment.split(/\\s+/);\n if(splittedFrag.length === 1) {\n return fragment[0] === '$' ?\n parameters[fragment.substr(1)] :\n strict ?\n fragment :\n parameters[fragment] !== undefined ?\n parameters[fragment] :\n fragment;\n }\n return fragment.split(/\\s+/).reduce((l, r) => {\n l.push(r[0] === '$' ? parameters[r.substr(1)] : r);\n return l;\n }, []).join(' ');\n }\n\n private compileFragment(fragment: string, parameters: Object | any[]): string {\n fragment = fragment.replace(/{{|}}/g, '');\n\n let interrogationIndex;\n let dotsIndex;\n if ((interrogationIndex = fragment.indexOf('?')) > 0 && (dotsIndex = fragment.lastIndexOf(':')) > 1) {\n const condition = fragment.substring(0, interrogationIndex).trim();\n const trueReturn = fragment.substring(interrogationIndex + 1, dotsIndex).trim();\n const falseReturn = fragment.substring(dotsIndex + 1).trim();\n const computedTrueReturn = this.getParameter(parameters, trueReturn);\n const computedFalseReturn = this.getParameter(parameters, falseReturn);\n\n const splittedCondition = condition.split(/\\s+/);\n\n if (splittedCondition.length === 1) {\n\n // Single variable case\n\n const variable = parameters[splittedCondition[0]];\n\n return variable ?\n computedTrueReturn :\n computedFalseReturn;\n\n } else if (splittedCondition.length === 3) {\n\n // Operator case\n\n const leftHandParam = this.getParameter(parameters, splittedCondition[0], parameters instanceof Array);\n const rightHand = this.getParameter(parameters, splittedCondition[2], parameters instanceof Array);\n const comparisonOperator = splittedCondition[1];\n\n switch (comparisonOperator) {\n case '==':\n return leftHandParam === rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '>':\n return leftHandParam > rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '>=':\n return leftHandParam >= rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '<':\n return leftHandParam < rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n case '<=':\n return leftHandParam <= rightHand ?\n computedTrueReturn :\n computedFalseReturn;\n default:\n throw new ParserError(`Invalid conditional operator for fragment : ${fragment}`, fragment);\n }\n\n } else {\n throw new ParserError(`Invalid condition for fragment : ${fragment}`, fragment);\n }\n } else {\n fragment = fragment.trim();\n return parameters[fragment];\n }\n }\n\n compile(rawTranslation: string, parameters: Object, onError?: ParserCallback): string {\n\n const parts = rawTranslation.split(FragmentsParser.delimRegexp);\n const fragments = rawTranslation.match(FragmentsParser.delimRegexp);\n\n let compiledTranslation = '';\n\n if (!onError) {\n onError = FragmentsParser.defaultErrorCallback;\n }\n\n if (!fragments) {\n compiledTranslation += rawTranslation;\n } else {\n for (let i = 0; i < parts.length; i++) {\n compiledTranslation += parts[i];\n if (i > fragments.length - 1) {\n continue;\n }\n try {\n compiledTranslation += this.compileFragment(fragments[i], parameters);\n } catch (e) {\n compiledTranslation += onError(e);\n }\n }\n }\n\n return compiledTranslation;\n\n }\n\n}\n","import { NgModule, ModuleWithProviders, Type } from '@angular/core';\nimport { S5lComponent } from './components/s5l.component';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { HttpClientModule } from '@angular/common/http';\nimport { RequireService } from './services/require/require.interface';\nimport { Parser } from './services/parser/parser.interface';\nimport { SijilOpts, defaultSijilOpts } from './services/sijil.opts';\nimport { BundlesService } from './services/bundles.service';\nimport { HttpRequireService } from './services/require/httprequire.service';\nimport { FragmentsParser } from './services/parser/fragments.parser';\n\n@NgModule({\n declarations: [S5lComponent, TranslatePipe],\n imports: [HttpClientModule],\n exports: [S5lComponent, TranslatePipe]\n})\nexport class NgxOdeSijilModule {\n static forRoot(require?: Type<RequireService>, parser?: Type<Parser>, options?: SijilOpts): ModuleWithProviders<NgxOdeSijilModule> {\n return {\n ngModule: NgxOdeSijilModule,\n providers: [\n { provide: BundlesService, useClass: BundlesService, deps: [ RequireService, Parser, SijilOpts ] },\n { provide: RequireService, useClass: require || HttpRequireService },\n { provide: Parser, useClass: parser || FragmentsParser },\n { provide: SijilOpts, useValue: options || defaultSijilOpts }\n ]\n };\n }\n\n static forChild(): ModuleWithProviders<NgxOdeSijilModule> {\n return {\n ngModule: NgxOdeSijilModule,\n providers: []\n };\n }\n}\n","/*\n * Public API Surface of ngx-ode-sijil\n */\n\nexport * from './lib/services/bundles.service';\nexport * from './lib/components/s5l.component';\nexport * from './lib/pipes/translate.pipe';\nexport * from './lib/ngx-ode-sijil.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.BundlesService"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ElementRef, AfterViewInit, DoCheck } from '@angular/core';
|
|
2
2
|
import { BundlesService } from '../services/bundles.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class S5lComponent implements AfterViewInit, DoCheck {
|
|
4
5
|
private bundlesService;
|
|
5
6
|
constructor(bundlesService: BundlesService);
|
|
@@ -12,4 +13,6 @@ export declare class S5lComponent implements AfterViewInit, DoCheck {
|
|
|
12
13
|
private refreshTranslation;
|
|
13
14
|
ngAfterViewInit(): void;
|
|
14
15
|
ngDoCheck(): void;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<S5lComponent, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<S5lComponent, "s5l", never, { "parameters": "s5l-params"; "fixedLanguage": "s5l-lang"; }, {}, never, ["*"], false>;
|
|
15
18
|
}
|
|
@@ -2,7 +2,14 @@ import { ModuleWithProviders, Type } from '@angular/core';
|
|
|
2
2
|
import { RequireService } from './services/require/require.interface';
|
|
3
3
|
import { Parser } from './services/parser/parser.interface';
|
|
4
4
|
import { SijilOpts } from './services/sijil.opts';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./components/s5l.component";
|
|
7
|
+
import * as i2 from "./pipes/translate.pipe";
|
|
8
|
+
import * as i3 from "@angular/common/http";
|
|
5
9
|
export declare class NgxOdeSijilModule {
|
|
6
|
-
static forRoot(require?: Type<RequireService>, parser?: Type<Parser>, options?: SijilOpts): ModuleWithProviders
|
|
7
|
-
static forChild(): ModuleWithProviders
|
|
10
|
+
static forRoot(require?: Type<RequireService>, parser?: Type<Parser>, options?: SijilOpts): ModuleWithProviders<NgxOdeSijilModule>;
|
|
11
|
+
static forChild(): ModuleWithProviders<NgxOdeSijilModule>;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxOdeSijilModule, never>;
|
|
13
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgxOdeSijilModule, [typeof i1.S5lComponent, typeof i2.TranslatePipe], [typeof i3.HttpClientModule], [typeof i1.S5lComponent, typeof i2.TranslatePipe]>;
|
|
14
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgxOdeSijilModule>;
|
|
8
15
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { BundlesService } from '../services/bundles.service';
|
|
2
2
|
import { PipeTransform } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class TranslatePipe implements PipeTransform {
|
|
4
5
|
private bundlesService;
|
|
5
6
|
constructor(bundlesService: BundlesService);
|
|
6
7
|
transform(key: string, parameters?: object | any[], lang?: string): string;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TranslatePipe, never>;
|
|
9
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<TranslatePipe, "translate", false>;
|
|
7
10
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RequireService } from './require.interface';
|
|
2
2
|
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
3
4
|
/**
|
|
4
5
|
* Fetches a bundle from a target url.
|
|
5
6
|
*
|
|
@@ -9,4 +10,6 @@ export declare class HttpRequireService implements RequireService {
|
|
|
9
10
|
private httpClient;
|
|
10
11
|
constructor(httpClient: HttpClient);
|
|
11
12
|
load(url: any): Promise<Object>;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HttpRequireService, never>;
|
|
14
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<HttpRequireService>;
|
|
12
15
|
}
|
package/package.json
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-ode-sijil",
|
|
3
|
-
"version": "4.6.0
|
|
3
|
+
"version": "4.6.0",
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"tslib": "^2.0.0"
|
|
6
|
+
},
|
|
4
7
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
8
|
+
"@angular/common": "^14.1.1",
|
|
9
|
+
"@angular/core": "^14.1.1"
|
|
7
10
|
},
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
"module": "fesm2015/ngx-ode-sijil.mjs",
|
|
12
|
+
"es2020": "fesm2020/ngx-ode-sijil.mjs",
|
|
13
|
+
"esm2020": "esm2020/ngx-ode-sijil.mjs",
|
|
14
|
+
"fesm2020": "fesm2020/ngx-ode-sijil.mjs",
|
|
15
|
+
"fesm2015": "fesm2015/ngx-ode-sijil.mjs",
|
|
16
|
+
"typings": "index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
"./package.json": {
|
|
19
|
+
"default": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./index.d.ts",
|
|
23
|
+
"esm2020": "./esm2020/ngx-ode-sijil.mjs",
|
|
24
|
+
"es2020": "./fesm2020/ngx-ode-sijil.mjs",
|
|
25
|
+
"es2015": "./fesm2015/ngx-ode-sijil.mjs",
|
|
26
|
+
"node": "./fesm2015/ngx-ode-sijil.mjs",
|
|
27
|
+
"default": "./fesm2020/ngx-ode-sijil.mjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"sideEffects": false
|
|
31
|
+
}
|