Co-authored-by: Nilton Constantino <nilton.constantino@visma.com> Reviewed-on: #5
27 lines
920 B
Rust
27 lines
920 B
Rust
use oxc_ast::ast::*;
|
|
use anyhow::{Result, anyhow};
|
|
|
|
pub fn get_callee_name(expr: &Expression) -> Result<String> {
|
|
get_member_expr_name(expr)
|
|
}
|
|
|
|
pub fn get_member_expr_name(expr: &Expression) -> Result<String> {
|
|
match expr {
|
|
Expression::Identifier(ident) => {
|
|
let name = ident.name.to_string();
|
|
// Remove prefix 'P' if it's followed by an uppercase letter (e.g., PGfx -> Gfx)
|
|
if name.len() > 1 && name.starts_with('P') && name.chars().nth(1).unwrap().is_uppercase() {
|
|
Ok(name[1..].to_string())
|
|
} else {
|
|
Ok(name)
|
|
}
|
|
}
|
|
Expression::StaticMemberExpression(member) => {
|
|
let obj = get_member_expr_name(&member.object)?;
|
|
let prop = member.property.name.to_string();
|
|
Ok(format!("{}.{}", obj, prop))
|
|
}
|
|
_ => Err(anyhow!("Unsupported expression")),
|
|
}
|
|
}
|