UNPKG

@awesome-fe/translate

Version:
61 lines 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExtractorEngine = void 0; const translation_engine_1 = require("./translation-engine"); const fs_1 = require("fs"); const path_1 = require("path"); const get_new_filename_for_1 = require("./get-new-filename-for"); const sentence_formatter_1 = require("./sentence-formatter"); class ExtractorEngine extends translation_engine_1.TranslationEngine { options; constructor(options = {}) { super(); this.options = options; } _entries = []; get entries() { return this._entries; } async batchTranslate(sentences, format) { for (let [original, translation] of sentences) { const newEntry = { english: sentence_formatter_1.SentenceFormatter.toMarkdown(original.trim(), format), chinese: sentence_formatter_1.SentenceFormatter.toMarkdown(translation?.trim(), format), }; const existingEntry = this.entries.find(it => it.english === original); if (!existingEntry) { this._entries.push(newEntry); } else { Object.assign(existingEntry, newEntry); } } return sentences; } saveToFile(dictFile) { const content = this.entries.map((entry) => [entry.english, entry.chinese].join('\n\n')) .join('\n\n') .replace(/\n\n\n+/g, '\n\n') .trim(); if (content) { const dir = (0, path_1.dirname)(dictFile); (0, fs_1.mkdirSync)(dir, { recursive: true }); (0, fs_1.writeFileSync)(dictFile, content, 'utf8'); } } async setup(currentFile) { await super.setup(currentFile); this._entries = []; } async tearDown() { const dict = this.options.dict; if (dict) { const cwd = this.options.cwd; const currentFile = this.currentFile; const dictFile = (0, get_new_filename_for_1.getNewFilenameFor)(currentFile, cwd, dict, '.dict.md'); this.saveToFile(dictFile); } } } exports.ExtractorEngine = ExtractorEngine; //# sourceMappingURL=extractor-engine.js.map