UNPKG

solive-docusaurus-theme-code

Version:

A Docusaurus v2 plugin that supports solidity code live.

35 lines (27 loc) 855 B
import singleFilename from './single-filename'; export type TMeta = { filename?: string; content: string; } function parseContent(content: string) { const regex = /(?:^|\s)\/\*\*?\s*\*[\s@]*filename\s+([\w.]+)\s*\*?\//gm; const filenames = []; let match; // eslint-disable-next-line no-cond-assign while ((match = regex.exec(content)) !== null) { filenames.push(match[1]); } const contracts = content.split(regex).filter((_, index) => index % 2 === 0).slice(1); return filenames.map((filename, index) => ({ filename, content: contracts[index].trim(), })); } const resolveMeta = (content: string): TMeta[] => { const files = parseContent(content).filter((file) => file.filename); if (files.length === 0) { return [{ filename: singleFilename(), content }]; } return files; }; export default resolveMeta;