udled 0.8.0

Tokenizer and parser
Documentation
use udled::Location;

#[test]
fn location_basic() {
    let input = "line1\nline2\nline3";
    let loc = Location::from(input, 0).unwrap();
    assert_eq!(loc.line, 0);
    assert_eq!(loc.column, 0);

    let loc = Location::from(input, 6).unwrap();
    assert_eq!(loc.line, 1);
    assert_eq!(loc.column, 0);

    let loc = Location::from(input, 12).unwrap();
    assert_eq!(loc.line, 2);
    assert_eq!(loc.column, 0);
}

#[test]
fn location_columns() {
    let input = "abc\ndef";
    let loc = Location::from(input, 5).unwrap();
    assert_eq!(loc.line, 1);
    assert_eq!(loc.column, 1);
}

#[test]
fn location_crlf() {
    let input = "a\r\nb";
    let loc = Location::from(input, 3).unwrap();
    assert_eq!(loc.line, 1);
    assert_eq!(loc.column, 0);
}

#[test]
fn location_invalid_position() {
    let input = "abc";
    assert!(Location::from(input, 10).is_none());
    assert!(Location::from(input, 2).is_some());
}