/
githubmirror
/
marktext
Обзор
Документация
Войти
/
githubmirror
/
marktext
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/desktop/src/main/utils/pandoc.ts
63 строки
2 KB
Ran Luo
chore: convert repo to pnpm monorepo (packages/desktop, muyajs, website) (#4302)
29 май 2026, 05:25
Не верифицирован
29 май 2026, 05:25
565bfcd
Код
Авторство
О чём код?
// Copy from https://github.com/utatti/simple-pandoc/blob/master/index.js import { spawn } from 'child_process' import type { Readable } from 'stream' import commandExists from 'command-exists' import { isFile2 } from 'common/filesystem' const pandocCommand = 'pandoc' const getCommand = (): string => { if (envPathExists()) { return process.env.MARKTEXT_PANDOC as string } return pandocCommand } interface PandocConverter { (): Promise<string> stream: (srcStream: NodeJS.ReadableStream) => Readable | null } interface PandocFn { (from: string, to: string, ...args: string[]): PandocConverter exists: () => boolean } const pandoc = ((from: string, to: string, ...args: string[]): PandocConverter => { const command = getCommand() const option = ['-s', from, '-t', to].concat(args) const converter = ((): Promise<string> => new Promise((resolve, reject) => { const proc = spawn(command, option) proc.on('error', reject) let data = '' proc.stdout.on('data', (chunk: Buffer | string) => { data += chunk.toString() }) proc.stdout.on('end', () => resolve(data)) proc.stdout.on('error', reject) proc.stdin.end() })) as PandocConverter converter.stream = (srcStream: NodeJS.ReadableStream): Readable | null => { const proc = spawn(command, option) srcStream.pipe(proc.stdin) return proc.stdout } return converter }) as PandocFn pandoc.exists = (): boolean => { if (envPathExists()) { return true } return commandExists.sync(pandocCommand) } const envPathExists = (): boolean => { return !!process.env.MARKTEXT_PANDOC && isFile2(process.env.MARKTEXT_PANDOC) } export default pandoc