1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
11 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
12 | };
|
13 | Object.defineProperty(exports, "__esModule", { value: true });
|
14 | exports.MarkdownRenderer = void 0;
|
15 | const open_1 = __importDefault(require("open"));
|
16 | const path_1 = require("path");
|
17 | const os_1 = require("os");
|
18 | const fs_extra_1 = require("fs-extra");
|
19 | const Styles_1 = require("./Styles");
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | class MarkdownRenderer {
|
25 | constructor(mdFileAbsPath, packageName) {
|
26 | this.mdFileAbsPath = mdFileAbsPath;
|
27 | this.packageName = packageName;
|
28 | }
|
29 | |
30 |
|
31 |
|
32 | generateHtml(contents) {
|
33 | return `<html>
|
34 | <head>
|
35 | <style type="text/css">${Styles_1.css}</style>
|
36 | </head>
|
37 | <body>
|
38 | <article class="markdown-body">
|
39 | <h1> Setup instructions for
|
40 | <a href="https://npmjs.org/package/${this.packageName}" target="_blank">${this.packageName}</a>
|
41 | </h1>
|
42 | ${contents}
|
43 | </article>
|
44 | </body>
|
45 | </html>`;
|
46 | }
|
47 | |
48 |
|
49 |
|
50 |
|
51 | async openContentsInBrowser(html) {
|
52 | const filePath = (0, path_1.join)((0, os_1.tmpdir)(), `adonis-${new Date().getTime()}.html`);
|
53 | await (0, fs_extra_1.outputFile)(filePath, html);
|
54 | await (0, open_1.default)(filePath, { wait: false });
|
55 | }
|
56 | |
57 |
|
58 |
|
59 | async renderInBrowser() {
|
60 | const { marked, Renderer } = await import('marked');
|
61 | const renderer = new Renderer();
|
62 | try {
|
63 | const contents = await (0, fs_extra_1.readFile)(this.mdFileAbsPath, 'utf-8');
|
64 | const html = this.generateHtml(marked.setOptions({ renderer })(contents.trim()));
|
65 | await this.openContentsInBrowser(html);
|
66 | }
|
67 | catch (error) { }
|
68 | }
|
69 | |
70 |
|
71 |
|
72 | async renderInTerminal() {
|
73 | const { marked } = await import('marked');
|
74 | const { default: TerminalRenderer } = await import('marked-terminal');
|
75 | const renderer = new TerminalRenderer();
|
76 | try {
|
77 | const contents = await (0, fs_extra_1.readFile)(this.mdFileAbsPath, 'utf-8');
|
78 | console.log(marked.setOptions({ renderer })(contents.trim()).trim());
|
79 | }
|
80 | catch (error) { }
|
81 | }
|
82 | }
|
83 | exports.MarkdownRenderer = MarkdownRenderer;
|