///|
/// Show structured parser failures suitable for editors and import tools.
fn main {
let invalid_source =
#|S.x
#|..G
match @pixelkit.parse_ascii_map_detailed(invalid_source) {
Ok(_) => println("map parsed")
Err(@pixelkit.UnknownAsciiTile(row, column, tile)) =>
println("Unknown tile '\{tile}' at row \{row}, column \{column}")
Err(error) => println(error.message())
}
let map = @pixelkit.parse_ascii_map(
(
#|S#G
#|...
),
).unwrap()
match
map.validate_path_detailed([@pixelkit.point(0, 0), @pixelkit.point(2, 0)]) {
Err(@pixelkit.IllegalPathStep(index, from, to)) =>
println(
"Step \{index} is illegal: (\{from.x()}, \{from.y()}) -> (\{to.x()}, \{to.y()})",
)
Err(error) => println(error.message())
Ok(_) => println("path is valid")
}
}