diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 52 | 
1 files changed, 52 insertions, 0 deletions
| @@ -147,4 +147,56 @@ mod tests {  "#,          );      } + +    #[test] +    fn unified_diff() { +        use unidiff::PatchSet; + +        let diff = r#"--- a/command/pr.go ++++ b/command/pr.go +@@ -1,9 +1,11 @@ + package command +  + import ( ++	"bufio" // used to input comment + 	"errors" + 	"fmt" + 	"io" ++	"os" // used to input comment +"#; + +        let mut patch = PatchSet::new(); +        patch.parse(diff).unwrap(); + +        println!("{:?}", patch); +        println!("{}", patch); + +        let lines = patch.files_mut()[0].hunks_mut()[0].lines_mut(); + +        // for line in &lines { +        //     if line.is_removed() { +        //     } else if line.is_added() { +        //         line.line_type = unidiff::LINE_TYPE_CONTEXT.to_owned(); +        //     } +        // } + +        lines +            .iter_mut() +            .filter(|l| !l.is_removed()) +            // .map(|l| { +            .for_each(|l| { +                if l.is_added() { +                    l.line_type = unidiff::LINE_TYPE_CONTEXT.to_owned(); +                } +            }); + +        lines[lines.len() - 2].line_type = unidiff::LINE_TYPE_REMOVED.to_owned(); + +        patch.files_mut()[0].hunks_mut()[0].append(unidiff::Line::new( +            r#"	"os""#, +            unidiff::LINE_TYPE_ADDED, +        )); + +        println!("{}", patch); +    }  } | 
