linguee-client
Version:
A simple node.js Linguee client.
120 lines • 4.85 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WordExtractor = void 0;
const Extractor_1 = __importStar(require("./Extractor"));
class WordExtractor extends Extractor_1.default {
constructor(extractors) {
super(extractors);
}
createExtratorStorage() {
return {
term: '',
type: '',
additionalInfo: null,
translations: [],
uncommonTranslations: [],
audio: [],
};
}
createAdditionalInfoStorage() {
return {
verbs: [],
plural: '',
context: '',
};
}
run(content) {
const storage = this.createExtratorStorage();
const $descriptionWrapper = content.find('.lemma_desc');
storage.term = $descriptionWrapper.find('a.dictLink').text();
const $audio = $descriptionWrapper.find('a.audio');
if ($audio.length) {
const audio = this.extractors.audio.run($audio);
if (audio) {
storage.audio.push(audio);
}
}
const $wordType = $descriptionWrapper.find('.tag_wordtype');
if ($wordType.length) {
storage.type = $wordType.text();
}
else if ($descriptionWrapper.find('.tag_type').length) {
storage.type = $descriptionWrapper.find('.tag_type').text();
}
const $formsPlural = $descriptionWrapper.find('.forms_plural');
const additionalInfo = this.createAdditionalInfoStorage();
let joinAdditionalInfo = false;
if ($formsPlural.length) {
joinAdditionalInfo = true;
additionalInfo.plural = $formsPlural.find('.formLink').text().trim();
}
const $formsVerbs = $descriptionWrapper.find('.forms_verb');
if ($formsVerbs.length) {
joinAdditionalInfo = true;
$formsVerbs.find('.tag_s .formLink').each((_, elem) => {
additionalInfo.verbs.push((0, Extractor_1.createExtractorContent)(elem).text());
});
}
const $context = $descriptionWrapper.find('.tag_lemma_context');
if ($context.length) {
joinAdditionalInfo = true;
additionalInfo.context = $context.find('.placeholder').text().trim();
}
const $translationsLines = content.find('.translation_lines');
if (joinAdditionalInfo) {
storage.additionalInfo = additionalInfo;
}
(() => {
const $translations = $translationsLines.find('> .translation');
if ($translations.length) {
for (let i = 0; i < $translations.length; i++) {
const translation = this.extractors.translation.run($translations.eq(i));
storage.translations.push(translation);
}
}
})();
(() => {
const $translationsGroup = $translationsLines.find('.translation_group');
for (let i = 0; i < $translationsGroup.length; i++) {
const $uncommon = $translationsGroup.eq(i).find('.notascommon');
const $translations = $translationsGroup.eq(i).find('.translation');
for (let j = 0; j < $translations.length; j++) {
const translation = this.extractors.translation.run($translations.eq(j));
if (!$uncommon.length) {
storage.translations.push(translation);
}
else {
storage.uncommonTranslations.push(translation);
}
}
}
})();
return storage;
}
}
exports.WordExtractor = WordExtractor;
exports.default = WordExtractor;
//# sourceMappingURL=WordExtractor.js.map