comparison test/org/tmatesoft/hg/test/LogOutputParser.java @ 152:7a908ba66ff3

Correctly parse comments with newlines inside
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Thu, 24 Feb 2011 21:36:52 +0100
parents 6b55f10ef54b
children 934037edbea0
comparison
equal deleted inserted replaced
151:305ee74c0aa6 152:7a908ba66ff3
33 private final List<Record> result = new LinkedList<Record>(); 33 private final List<Record> result = new LinkedList<Record>();
34 private Pattern pattern1; 34 private Pattern pattern1;
35 private Pattern pattern2; 35 private Pattern pattern2;
36 private Pattern pattern3; 36 private Pattern pattern3;
37 private Pattern pattern4; 37 private Pattern pattern4;
38 private Pattern pattern5;
38 39
39 public LogOutputParser(boolean outputWithDebug) { 40 public LogOutputParser(boolean outputWithDebug) {
40 if (outputWithDebug) { 41 if (outputWithDebug) {
41 pattern1 = Pattern.compile("^changeset:\\s+(\\d+):([a-f0-9]{40})\n(^tag:(.+)$)?", Pattern.MULTILINE); 42 pattern1 = Pattern.compile("^changeset:\\s+(\\d+):([a-f0-9]{40})\n(^tag:(.+)$)?", Pattern.MULTILINE);
42 pattern2 = Pattern.compile("^parent:\\s+(-?\\d+):([a-f0-9]{40})\n", Pattern.MULTILINE); 43 pattern2 = Pattern.compile("^parent:\\s+(-?\\d+):([a-f0-9]{40})\n", Pattern.MULTILINE);
43 pattern3 = Pattern.compile("^manifest:\\s+(\\d+):([a-f0-9]{40})\nuser:\\s+(\\S.+)\ndate:\\s+(\\S.+)\n", Pattern.MULTILINE); 44 pattern3 = Pattern.compile("^manifest:\\s+(\\d+):([a-f0-9]{40})\nuser:\\s+(\\S.+)\ndate:\\s+(\\S.+)\n", Pattern.MULTILINE);
44 pattern4 = Pattern.compile("^description:\n^(.+)\n\n", Pattern.MULTILINE); 45 pattern4 = Pattern.compile("^description:\\n", Pattern.MULTILINE);
46 pattern5 = Pattern.compile("\\n\\n");
45 //p = "^manifest:\\s+(\\d+):([a-f0-9]{40})\nuser:(.+)$"; 47 //p = "^manifest:\\s+(\\d+):([a-f0-9]{40})\nuser:(.+)$";
46 } else { 48 } else {
47 throw HgRepository.notImplemented(); 49 throw HgRepository.notImplemented();
48 } 50 }
49 } 51 }
77 r.user = m.group(3); 79 r.user = m.group(3);
78 r.date = m.group(4); 80 r.date = m.group(4);
79 } 81 }
80 m.usePattern(pattern4); 82 m.usePattern(pattern4);
81 if (m.find()) { 83 if (m.find()) {
82 r.description = m.group(1); 84 int commentStart = m.end();
85 m.usePattern(pattern5);
86 if (m.find()) {
87 r.description = seq.subSequence(commentStart, m.start()).toString();
88 }
83 } 89 }
84 result.add(r); 90 result.add(r);
85 m.usePattern(pattern1); 91 m.usePattern(pattern1);
86 } 92 }
87 } 93 }