solive-docusaurus-theme-code
Version:
A Docusaurus v2 plugin that supports solidity code live.
32 lines (26 loc) • 804 B
text/typescript
function solidityFormatter(code: string) {
const lines = code.split('\n');
let indentLevel = 0;
const formattedLines = lines.map((line) => {
const trimmedLine = line.trim();
if (trimmedLine.startsWith('}')) {
indentLevel -= 1;
}
const indentedLine = ' '.repeat(indentLevel * 4) + trimmedLine;
if (
trimmedLine.startsWith('{')
|| trimmedLine.endsWith('{')
|| trimmedLine.startsWith('contract')
|| trimmedLine.startsWith('library')
|| trimmedLine.startsWith('interface')
|| trimmedLine.startsWith('function')
|| trimmedLine.startsWith('struct')
|| trimmedLine.startsWith('event')
) {
indentLevel += 1;
}
return indentedLine;
});
return formattedLines.join('\n');
}
export default solidityFormatter;