1 21 22 package org.armedbear.j; 23 24 public final class P4ChangelistFormatter extends Formatter 25 { 26 private static final byte FORMAT_TEXT = 0; 27 private static final byte FORMAT_COMMENT = 1; 28 private static final byte FORMAT_KEY = 2; 29 private static final byte FORMAT_VALUE = 3; 30 31 public P4ChangelistFormatter(Buffer buffer) 32 { 33 this.buffer = buffer; 34 } 35 36 public LineSegmentList formatLine(Line line) 37 { 38 clearSegmentList(); 39 String text = getDetabbedText(line); 40 final String comment; 41 int hash = text.indexOf('#'); 42 if (hash >= 0) { 43 comment = text.substring(hash); 44 text = text.substring(0, hash); 45 } else 46 comment = null; 47 int colon = text.indexOf(':'); 48 if (colon >= 0) { 49 int space = text.indexOf('\t'); 50 if (space < 0) 51 space = text.indexOf(' '); 52 if (space < 0 || colon < space) { 53 addSegment(text, 0, colon+1, FORMAT_KEY); 54 addSegment(text, colon+1, FORMAT_VALUE); 55 } else 56 addSegment(text, FORMAT_TEXT); 57 } else 58 addSegment(text, FORMAT_TEXT); 59 if (comment != null) 60 addSegment(comment, FORMAT_COMMENT); 61 return segmentList; 62 } 63 64 public FormatTable getFormatTable() 65 { 66 if (formatTable == null) { 67 formatTable = new FormatTable("P4Changelist"); 68 formatTable.addEntryFromPrefs(FORMAT_TEXT, "text"); 69 formatTable.addEntryFromPrefs(FORMAT_COMMENT, "comment"); 70 formatTable.addEntryFromPrefs(FORMAT_KEY, "key", "function"); 71 formatTable.addEntryFromPrefs(FORMAT_VALUE, "value", "text"); 72 } 73 return formatTable; 74 } 75 } 76 | Popular Tags |