use crate::{
syntax::{
builders::parameter::build_parameter_node, fields::Field, SyntaxGraphArgs, SyntaxGraphError,
},
utilities::text_nodes::node_to_str,
CodeGraph, NodeId,
};
const NAME: Field<false> = Field::new("name_id");
const VALUE: Field<false> = Field::new("value_id");
pub fn reader(
args: &mut SyntaxGraphArgs<'_>,
n_id: NodeId,
) -> Result<Option<NodeId>, SyntaxGraphError> {
let graph = args.ast_graph;
let variable_name = match args.optional_field_alt(n_id, NAME) {
Some(name_id) if graph.label_type(n_id) == Some("optional_parameter") => {
node_to_str(graph, name_id)
}
_ => node_to_str(graph, n_id),
};
let var_value_id = args.optional_field_alt(n_id, VALUE);
build_parameter_node(
args,
n_id,
Some(variable_name),
None,
var_value_id,
&[],
None,
None,
)
.map(Some)
}