UNPKG

@muxik/md-viewer

Version:

A CLI tool for rendering Markdown files with syntax highlighting and pagination, optimized for AI output content display

70 lines 2.7 kB
"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 __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mdview = void 0; const fs_1 = require("fs"); const parser_1 = require("./parser"); const renderer_1 = require("./renderer"); const pager_1 = require("./pager"); const themes_1 = require("./themes"); class Mdview { constructor(options = {}) { this.options = { theme: 'onedark', width: process.stdout.columns || 80, showLineNumbers: false, noPager: false, ...options }; this.parser = new parser_1.MarkdownParser(); } async renderFile(filePath) { try { const content = (0, fs_1.readFileSync)(filePath, 'utf8'); await this.renderContent(content, filePath); } catch (error) { throw new Error(`Failed to read file: ${filePath}`); } } async renderContent(content, title) { const parsed = this.parser.parse(content); const theme = (0, themes_1.getTheme)(this.options.theme || 'onedark'); const renderer = new renderer_1.TerminalRenderer({ theme, width: this.options.width || 80, showLineNumbers: this.options.showLineNumbers }); const lines = renderer.render(parsed.tokens); if (this.options.noPager || lines.length <= (process.stdout.rows || 24) - 2) { lines.forEach(line => console.log(line)); } else { const pager = new pager_1.Pager(lines, { theme, title: title || parsed.title, showLineNumbers: this.options.showLineNumbers }); await pager.show(); } } } exports.Mdview = Mdview; __exportStar(require("./parser"), exports); __exportStar(require("./renderer"), exports); __exportStar(require("./pager"), exports); __exportStar(require("./themes"), exports); //# sourceMappingURL=index.js.map