UNPKG

@awesome-fe/translate

Version:
46 lines 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Dict = void 0; const markdown_translator_1 = require("../translator/markdown-translator"); const extractor_engine_1 = require("../translation-engine/extractor-engine"); const fs_1 = require("fs"); const path_1 = require("path"); class Dict { entries = []; constructor() { } async open(dictFile) { const engine = new extractor_engine_1.ExtractorEngine(); await engine.setup(''); try { const translator = new markdown_translator_1.MarkdownTranslator(engine); if (!(0, fs_1.existsSync)(dictFile)) { (0, fs_1.mkdirSync)((0, path_1.dirname)(dictFile), { recursive: true }); (0, fs_1.writeFileSync)(dictFile, '', 'utf8'); } await translator.translateFile(dictFile); this.entries = engine.entries; } finally { await engine.tearDown(); } } async close() { } async get(english) { return fuzzyLookup(this.entries, english); } } exports.Dict = Dict; const markdownHeaderPattern = /^(#+) +(.*)$/; function fuzzyLookup(entries, english) { for (let entry of entries) { const [, , base1] = entry.english.match(markdownHeaderPattern) ?? ['', '', entry.english]; const [, prefix, base2] = english.match(markdownHeaderPattern) ?? ['', '', english]; if (base1 === base2) { const [, , chinese] = entry.chinese?.match(markdownHeaderPattern) ?? ['', '', entry.chinese]; return { ...entry, chinese: [prefix, chinese].filter(it => !!it).join(' ') }; } } } //# sourceMappingURL=dict.js.map