cream-and-sugar
Version:
A deliciously functional syntax for JavaScript with native support for JSX
23 lines (19 loc) • 583 B
JavaScript
import { compile, nodes } from '../utils';
function getLastChar(str) {
const trimmed = str.trim();
return trimmed[trimmed.length - 1];
}
function semiShouldFollowLastChar(str) {
const char = getLastChar(str);
return char !== ';';
}
/*
* Newlines output newlines.
*/
compile(nodes.NewLineNode, function () {
const insertConditions = this.shared.insertSemis
&& semiShouldFollowLastChar(this.shared.output)
&& /[^\n\;]/.test(this.shared.output);
const output = insertConditions ? ';\n' : '\n';
return output;
});