2025-10-27 23:24:02 +08:00
|
|
|
function isIdentifier(node, name) {
|
|
|
|
|
return node.type === "Identifier" && node.name === name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function createIdentifier(name) {
|
|
|
|
|
return { type: "Identifier", name };
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-28 02:51:50 +08:00
|
|
|
function createStringLiteral(value) {
|
|
|
|
|
return { type: "StringLiteral", value };
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-27 23:24:02 +08:00
|
|
|
function createMemberExpression(path) {
|
|
|
|
|
let node;
|
|
|
|
|
|
|
|
|
|
for (const name of path.split(".")) {
|
|
|
|
|
node = node
|
|
|
|
|
? {
|
|
|
|
|
type: "MemberExpression",
|
|
|
|
|
object: node,
|
|
|
|
|
property: createIdentifier(name),
|
|
|
|
|
}
|
|
|
|
|
: createIdentifier(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return node;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-28 02:51:50 +08:00
|
|
|
export {
|
|
|
|
|
createIdentifier,
|
|
|
|
|
createMemberExpression,
|
|
|
|
|
createStringLiteral,
|
|
|
|
|
isIdentifier,
|
|
|
|
|
};
|