Fixing the change parser

pmeunier
Dec 9, 2021, 11:35 AM
HW7DZ2B42HNF35ZIJAVB4RMQS6CTKUWX5DBBBVF6P4ZQKHGUCTCQC

Dependencies

  • [2] 5NHRJ5PY Cleaner handling of binary changes in the text format
  • [3] MQ7TZOT6 Edits can delete lines too
  • [4] 5FI6SBEZ Re-implement change printing and parsing
  • [5] 7ABOS34C Debug statements and formatting

Change contents

  • replacement in libpijul/src/change/parse.rs at line 68
    [3.66660][3.66660:66706]()
    let (i, content_edges) = parse_edges(i)?;
    [3.66660]
    [3.66706]
    let (i, content_edges) = if let Ok(x) = parse_edges(i) {
    x
    } else {
    (i, Vec::new())
    };
  • replacement in libpijul/src/change/parse.rs at line 96
    [3.67368][3.67368:67414]()
    let (i, content_edges) = parse_edges(i)?;
    [3.67368]
    [3.67414]
    let (i, content_edges) = if let Ok(x) = parse_edges(i) {
    x
    } else {
    (i, Vec::new())
    };
  • replacement in libpijul/src/change/parse.rs at line 127
    [3.68289][3.68289:68356]()
    let (i, contents) = parse_contents('+', encoding.clone(), i)?;
    [3.68289]
    [3.68356]
    let (i, contents) = if let PrintablePerms::IsDir = perms {
    (i, Vec::new())
    } else {
    parse_contents('+', encoding.clone(), i)?
    };
  • replacement in libpijul/src/change/parse.rs at line 157
    [3.436][3.436:446]()
    s
    [3.436]
    [3.446]
    if s.1.is_empty() {
    parse_contents('-', encoding.clone(), i)?
    } else {
    s
    }
  • replacement in libpijul/src/change/parse.rs at line 378
    [3.74618][3.74618:74715](),[3.74715][2.337:382]()
    if backslash.is_some() && vec[vec.len() - 1] == b'\n' {
    vec.pop();
    }
    if has_encoding || !vec.is_empty() {
    [3.74618]
    [3.1000]
    let not_empty = if backslash.is_some() && vec[vec.len() - 1] == b'\n' {
    vec.pop().is_some()
    } else {
    !vec.is_empty()
    };
    if has_encoding || not_empty {