use crate::{
query::{label_text, match_ast_d},
syntax::{
builders::parameter::build_parameter_node,
fields::{php::simple_parameter, Field},
SyntaxGraphArgs, SyntaxGraphError,
},
utilities::text_nodes::node_to_str,
NodeId,
};
use alloc::borrow::ToOwned;
const NAME: Field<false> = Field::new("name_id");
pub fn reader(
args: &mut SyntaxGraphArgs<'_>,
n_id: NodeId,
) -> Result<Option<NodeId>, SyntaxGraphError> {
let graph = args.ast_graph;
let var_name = args
.optional_field_alt(n_id, NAME)
.and_then(|name_field_id| match_ast_d(graph, name_field_id, "name", None))
.map(|name_n_id| label_text(graph, name_n_id).unwrap_or("").to_owned());
let var_type = args
.optional_field_alt(n_id, simple_parameter::TYPE)
.map(|type_n_id| node_to_str(graph, type_n_id));
build_parameter_node(args, n_id, var_name, var_type, None, &[], None, None).map(Some)
}