21 lines
724 B
JavaScript
21 lines
724 B
JavaScript
/**
|
|
* Stringifies a comment.
|
|
*
|
|
* Empty comment lines are left empty,
|
|
* lines consisting of a single space are replaced by `#`,
|
|
* and all other lines are prefixed with a `#`.
|
|
*/
|
|
const stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');
|
|
function indentComment(comment, indent) {
|
|
if (/^\n+$/.test(comment))
|
|
return comment.substring(1);
|
|
return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;
|
|
}
|
|
const lineComment = (str, indent, comment) => str.endsWith('\n')
|
|
? indentComment(comment, indent)
|
|
: comment.includes('\n')
|
|
? '\n' + indentComment(comment, indent)
|
|
: (str.endsWith(' ') ? '' : ' ') + comment;
|
|
|
|
export { indentComment, lineComment, stringifyComment };
|