123456789101112131415161718192021222324252627282930313233 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
- const {
- SAFE_IDENTIFIER,
- RESERVED_IDENTIFIER
- } = require("../util/propertyName");
- /**
- * @param {ArrayLike<string>} properties properties
- * @param {number} start start index
- * @returns {string} chain of property accesses
- */
- const propertyAccess = (properties, start = 0) => {
- let str = "";
- for (let i = start; i < properties.length; i++) {
- const p = properties[i];
- if (`${+p}` === p) {
- str += `[${p}]`;
- } else if (SAFE_IDENTIFIER.test(p) && !RESERVED_IDENTIFIER.has(p)) {
- str += `.${p}`;
- } else {
- str += `[${JSON.stringify(p)}]`;
- }
- }
- return str;
- };
- module.exports = propertyAccess;
|