/** * Butterfly * chartjs * https://www.chartjs.org/ * {% chartjs [width, abreast, chartId] %} * * * * * {% endchartjs %} */ 'use strict' const { escapeHTML } = require('hexo-util') const chartjs = (args, content) => { if (!content) return const chartRegex = /\n([\w\W\s\S]*?)/ const descRegex = /\n([\w\W\s\S]*?)/ const selfConfig = args.join(' ').trim() const [width = '', layout = false, chartId = ''] = selfConfig.split(',').map(s => s.trim()) const chartMatch = content.match(chartRegex) const descMatch = content.match(descRegex) if (!chartMatch) { hexo.log.warn('chartjs tag: chart content is required!') return } const chartConfig = chartMatch && chartMatch[1] ? chartMatch[1] : '' const descContent = descMatch && descMatch[1] ? descMatch[1] : '' const renderedDesc = descContent ? hexo.render.renderSync({ text: descContent, engine: 'markdown' }).trim() : '' const descDOM = renderedDesc ? `
${escapeHTML(chartConfig)}
${descDOM}