1 21 22 package org.armedbear.j; 23 24 public final class CheckPathFormatter 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_HEADER_NAME = 2; 29 private static final byte FORMAT_HEADER_VALUE = 4; 30 private static final byte FORMAT_NOT_FOUND = 5; 31 private static final byte FORMAT_STATUS = 6; 32 33 public CheckPathFormatter(Buffer buffer) 34 { 35 this.buffer = buffer; 36 } 37 38 public LineSegmentList formatLine(Line line) 39 { 40 clearSegmentList(); 41 if (line == null) { 42 addSegment("", FORMAT_TEXT); 43 return segmentList; 44 } 45 parseLine(line); 46 return segmentList; 47 48 } 49 50 private void parseLine(Line line) 51 { 52 final String text = getDetabbedText(line); 53 if (text.endsWith(" -->")) { 54 addSegment(text, FORMAT_COMMENT); 55 return; 56 } 57 String trim = text.trim(); 58 char c; 59 if (trim.length() > 0 && ((c = trim.charAt(0)) == '"' || c == '<')) { 60 if (text.endsWith(" NOT FOUND")) { 61 int index = text.length() - 11; 62 addSegment(text, 0, index, FORMAT_TEXT); 63 addSegment(text, index, FORMAT_NOT_FOUND); 64 } else if (text.endsWith(" (Already listed)")) { 65 int index = text.length() - 16; 66 addSegment(text, 0, index, FORMAT_TEXT); 67 addSegment(text, index, FORMAT_STATUS); 68 } else 69 addSegment(text, FORMAT_TEXT); 70 return; 71 } 72 int index = text.indexOf(':'); 73 if (index > 0) { 74 addSegment(text, 0, index+1, FORMAT_HEADER_NAME); 75 addSegment(text, index+1, FORMAT_HEADER_VALUE); 76 return; 77 } 78 addSegment(text, FORMAT_TEXT); 80 } 81 82 public FormatTable getFormatTable() 83 { 84 if (formatTable == null) { 85 formatTable = new FormatTable("ListOccurrencesMode"); 87 formatTable.addEntryFromPrefs(FORMAT_TEXT, "text"); 88 formatTable.addEntryFromPrefs(FORMAT_COMMENT, "comment"); 89 formatTable.addEntryFromPrefs(FORMAT_HEADER_NAME, "headerName", "keyword"); 90 formatTable.addEntryFromPrefs(FORMAT_HEADER_VALUE, "headerValue", "operator"); 91 formatTable.addEntryFromPrefs(FORMAT_NOT_FOUND, "matchingText", "function"); 92 formatTable.addEntryFromPrefs(FORMAT_STATUS, "status", "comment"); 93 } 94 return formatTable; 95 } 96 } 97 | Popular Tags |