linguee-client
Version:
A simple node.js Linguee client.
48 lines • 1.92 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExtractorsFactory = void 0;
const AudioExtractor_1 = __importDefault(require("./AudioExtractor"));
const TranslationExtractor_1 = __importDefault(require("./TranslationExtractor"));
const WikiExtractor_1 = __importDefault(require("./WikiExtractor"));
const WordExtractor_1 = __importDefault(require("./WordExtractor"));
const LingueeExtractor_1 = __importDefault(require("./LingueeExtractor"));
const ucFirst = (str) => {
return str.charAt(0).toUpperCase() + str.slice(1);
};
class ExtractorsFactory {
static create(type) {
let _creatorFunctionName = `_create${ucFirst(type)}Extractor`;
if (Reflect.has(ExtractorsFactory, _creatorFunctionName)) {
const creatorFunction = Reflect.get(ExtractorsFactory, _creatorFunctionName);
return creatorFunction();
}
throw new Error('Invalid Extractor');
}
static _createLingueeExtractor() {
return new LingueeExtractor_1.default({
word: ExtractorsFactory.create('word'),
wiki: ExtractorsFactory.create('wiki'),
});
}
static _createWordExtractor() {
return new WordExtractor_1.default({
translation: ExtractorsFactory.create('translation'),
audio: ExtractorsFactory.create('audio'),
});
}
static _createWikiExtractor() {
return new WikiExtractor_1.default();
}
static _createTranslationExtractor() {
return new TranslationExtractor_1.default();
}
static _createAudioExtractor() {
return new AudioExtractor_1.default();
}
}
exports.ExtractorsFactory = ExtractorsFactory;
exports.default = ExtractorsFactory;
//# sourceMappingURL=ExtractorsFactory.js.map