UNPKG

markdown-it-git-graph

Version:

一个markdown-it插件,用于生成git提交图

86 lines (85 loc) 2.07 kB
const defaultTheme = { colors: [ '#e6194b', '#ffe119', '#4363d8', '#3cb44b', '#f58231', '#911eb4', '#46f0f0', '#f032e6', '#bcf60c', '#fabebe', '#008080', '#e6beff', ], lineHeight: 24, lineWidth: 20, pointRadius: 5, columns: ['message', 'date', 'hash'], dateFormat: { dateStyle: 'short', timeStyle: 'short', }, }; const defaultOptions = { defaultBranchName: 'main', theme: defaultTheme, }; function getOptions(options) { if (!options) { return defaultOptions; } const theme = { ...defaultOptions.theme, ...options.theme, }; return { ...defaultOptions, ...options, theme, }; } const converters = { strings: (str) => str ? str.split(',') : undefined, number: (str) => { if (!str) { return undefined; } const num = Number.parseInt(str); return Number.isNaN(num) ? undefined : num; }, boolean: (str) => str ? str === 'true' ? true : str === 'false' ? false : undefined : undefined, }; const themeConverter = { colors: converters.strings, lineHeight: converters.number, lineWidth: converters.number, pointRadius: converters.number, columns: converters.strings, dateFormat: undefined, }; function parseTheme(text) { const strs = text.trim().split('&'); const obj = {}; strs.forEach((str) => { const [key, value] = str.split('='); if (key && value && key.trim().length > 0 && value.trim().length > 0) { obj[key.trim()] = value.trim(); } }); const theme = {}; Object.entries(themeConverter).forEach(([key, converter]) => { const str = obj[key]; if (!str || !converter) { return; } const value = converter(str); if (value === undefined) { return; } theme[key] = value; }); return theme; } export { getOptions, parseTheme, };