use crate::{
syntax::{
builders::{if_statement::build_if_node, literal::build_literal_node},
fields::Field,
SyntaxGraphArgs, SyntaxGraphError,
},
NodeId,
};
use alloc::borrow::ToOwned;
const CONDITION: Field<false> = Field::new("condition_id");
const BODY: Field<false> = Field::new("body_id");
pub fn reader(
args: &mut SyntaxGraphArgs<'_>,
n_id: NodeId,
) -> Result<Option<NodeId>, SyntaxGraphError> {
let Some(condition_id) = args.optional_field_alt(n_id, CONDITION) else {
return Ok(Some(build_literal_node(
args,
n_id,
"unless".to_owned(),
"unless".to_owned(),
)));
};
let false_id = args.optional_field_alt(n_id, BODY);
build_if_node(args, n_id, condition_id, None, false_id, None).map(Some)
}