src/Language/Manager.ts   A
last analyzed

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 32
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
eloc 25
mnd 1
bc 1
fnc 1
dl 0
loc 32
rs 10
bpm 1
cpm 2
noi 0
c 0
b 0
f 0
ccs 9
cts 9
cp 1

1 Function

Rating   Name   Duplication   Size   Complexity  
A Manager.getTranslator 0 11 2
1
import Loader from './Loader';
2
import Translator from './Translator';
3
import TranslatorFactory from './Translator/Factory';
4
5
interface Translators {
6
  [languageCode: string]: Translator;
7
}
8
9
export default class Manager {
10
  protected loader: Loader;
11
  protected translators: Translators;
12
  protected translatorFactory: TranslatorFactory;
13
14
  constructor(loader: Loader, translatorFactory: TranslatorFactory) {
15 4
    this.loader = loader;
16 4
    this.translatorFactory = translatorFactory;
17 4
    this.translators = {};
18
  }
19
20
  async getTranslator(languageCode: string): Promise<Translator> {
21 3
    if (this.translators.hasOwnProperty(languageCode)) {
22 1
      return this.translators[languageCode];
23
    }
24
25 2
    const languageData = await this.loader.loadLanguage(languageCode);
26 2
    const translator: Translator = this.translatorFactory.createTranslator(languageData);
27 2
    this.translators[languageCode] = translator;
28
29 2
    return translator;
30
  }
31
}
32