twing
Version:
First-class Twig engine for Node.js
21 lines (20 loc) • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createNullishCoalescingNode = void 0;
const conditional_1 = require("./conditional");
const not_1 = require("./unary/not");
const and_1 = require("./binary/and");
const test_1 = require("./call/test");
const array_1 = require("./array");
const createNullishCoalescingNode = (operands, line, column) => {
const [left, right] = operands;
if (left.type === "name") {
left.attributes.isAlwaysDefined = true;
}
const testNode = (0, and_1.createAndNode)([
(0, test_1.createTestNode)(left, "defined", (0, array_1.createArrayNode)([], line, column), line, column),
(0, not_1.createNotNode)((0, test_1.createTestNode)(left, 'null', (0, array_1.createArrayNode)([], line, column), line, column), line, column)
], line, column);
return (0, conditional_1.createBaseConditionalNode)("nullish_coalescing", testNode, left, right, line, column);
};
exports.createNullishCoalescingNode = createNullishCoalescingNode;