refactor(core): refactor cli
This commit is contained in:
parent
b312977932
commit
7b1c2bd355
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env node
|
||||
'use strict'
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
const path = require('path')
|
||||
const resolveFrom = require('resolve-from')
|
||||
|
||||
let modulePath = '../dist/cli'
|
||||
try {
|
||||
// use local cli if exists
|
||||
modulePath = path.join(path.dirname(resolveFrom(process.cwd(), '@md-report/core')), 'cli.js')
|
||||
}
|
||||
catch {}
|
||||
|
||||
require(modulePath)
|
|
@ -0,0 +1,24 @@
|
|||
import { readFileSync, writeFileSync } from 'fs'
|
||||
import { cwd } from 'process'
|
||||
import { getBuffer } from '@md-report/parser'
|
||||
import yargs from 'yargs'
|
||||
import { defaultConfig } from './config'
|
||||
|
||||
const argv = yargs(process.argv.slice(2)).options({
|
||||
md: { type: 'string' },
|
||||
theme: { type: 'string' },
|
||||
}).parseSync()
|
||||
|
||||
async function cli(props: {
|
||||
filename?: string
|
||||
theme?: string
|
||||
}): Promise<void> {
|
||||
console.log('\x1B[36m%s\x1B[0m', '[Markdown Report]: start...')
|
||||
const { filename = 'index.md' } = props
|
||||
const file = readFileSync(`${cwd()}/${filename}`)
|
||||
const buffer = await getBuffer({ markdown: file.toString(), config: defaultConfig })
|
||||
writeFileSync(`${cwd()}/My document.docx`, buffer)
|
||||
console.log('\x1B[36m%s\x1B[0m', '[Markdown Report]: finish.')
|
||||
}
|
||||
|
||||
cli({ filename: argv.md, theme: argv.theme })
|
|
@ -0,0 +1,52 @@
|
|||
import type { IMarkdownReportConfig } from '@md-report/types'
|
||||
import { StyleId, StyleName } from '@md-report/types'
|
||||
import { AlignmentType } from 'docx'
|
||||
import { ptToHalfPt } from './utils'
|
||||
|
||||
export const defaultConfig: IMarkdownReportConfig = {
|
||||
styles: {
|
||||
paragraphStyles: [
|
||||
{
|
||||
id: StyleId.normal,
|
||||
name: StyleName.normal,
|
||||
run: {
|
||||
size: ptToHalfPt(12),
|
||||
font: {
|
||||
ascii: 'Times New Roman',
|
||||
eastAsia: 'SimSun',
|
||||
},
|
||||
},
|
||||
paragraph: {
|
||||
indent: {
|
||||
firstLine: 2,
|
||||
},
|
||||
spacing: {
|
||||
before: 120,
|
||||
after: 120,
|
||||
},
|
||||
alignment: AlignmentType.JUSTIFIED,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: StyleId.h1,
|
||||
name: StyleName.h1,
|
||||
run: {
|
||||
size: ptToHalfPt(15),
|
||||
bold: true,
|
||||
font: {
|
||||
ascii: 'Times New Roman',
|
||||
eastAsia: 'SimHei',
|
||||
},
|
||||
},
|
||||
paragraph: {
|
||||
spacing: {},
|
||||
alignment: AlignmentType.CENTER,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
export function defineConfig(config: IMarkdownReportConfig): IMarkdownReportConfig {
|
||||
return { ...defaultConfig, ...config }
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
/* eslint-disable no-console */
|
||||
const src = '$111$xxx$222$yyy\n$$\n\frac{1}{2}\n\frac{2}{3}\n$$'
|
||||
|
||||
console.log(src.match(/\$\$[^]*\$\$/g).map(item => item.trim().replace(/\$*\n/, '').replace(/\n\$*$/, '').split(/\r?\n/).join('')))
|
|
@ -0,0 +1,3 @@
|
|||
export function ptToHalfPt(pt: number) {
|
||||
return pt * 2
|
||||
}
|
Loading…
Reference in New Issue