@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
JavaScript
;
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