use crate::error::{ErrorKind, YamlError};
use crate::io::traits::ISource;
use crate::parser::ParseResult;
use crate::parser::utils::context::ParsingContext;
pub fn ensure_indent_at_least(
source: &mut dyn ISource,
actual: usize,
expected: usize,
what: &str,
) -> ParseResult<()> {
if actual < expected {
return Err(crate::parser::utils::error_builder::indentation_error(
source,
&format!(
"{} at invalid indentation: expected >= {}, got {}",
what, expected, actual
),
));
}
Ok(())
}
pub fn ensure_indent_at_least_no_source(
actual: usize,
expected: usize,
what: &str,
) -> ParseResult<()> {
if actual < expected {
return Err(YamlError::new(
ErrorKind::ValidationError,
format!(
"{} at invalid indentation: expected >= {}, got {}",
what, expected, actual
),
));
}
Ok(())
}
#[allow(dead_code)]
pub fn ensure_valid_child_indent(
source: &mut dyn ISource,
ctx: &ParsingContext,
child_indent: usize,
what: &str,
) -> Result<(), YamlError> {
if !ctx.is_valid_child_indent(child_indent) {
return Err(crate::parser::utils::error_builder::indentation_error(
source,
&format!(
"Invalid child indentation for {}: parent {}, child {}",
what, ctx.indent_level, child_indent
),
));
}
Ok(())
}