1 21 22 package org.armedbear.j.jdb; 23 24 import org.armedbear.j.Buffer; 25 import org.armedbear.j.Editor; 26 import org.armedbear.j.FormatTable; 27 import org.armedbear.j.Formatter; 28 import org.armedbear.j.Line; 29 import org.armedbear.j.LineSegmentList; 30 import org.armedbear.j.Utilities; 31 32 public final class JdbFormatter extends Formatter 33 { 34 private static final String prompt = Jdb.getPrompt(); 35 private static final int promptLength = prompt.length(); 36 37 public static final byte JDB_FORMAT_TEXT = 0; 39 public static final byte JDB_FORMAT_PROMPT = 1; 40 public static final byte JDB_FORMAT_INPUT = 2; 41 public static final byte JDB_FORMAT_OUTPUT = 3; 42 public static final byte JDB_FORMAT_LOG = 4; 43 44 public JdbFormatter(Buffer buffer) 45 { 46 this.buffer = buffer; 47 } 48 49 public LineSegmentList formatLine(Line line) 50 { 51 clearSegmentList(); 52 if (line == null) { 53 addSegment("", JDB_FORMAT_TEXT); 54 return segmentList; 55 } 56 int flags = line.flags(); 57 String text = getDetabbedText(line); 58 if (flags == JDB_FORMAT_OUTPUT) { 59 addSegment(text, JDB_FORMAT_OUTPUT); 60 } else if (text.startsWith(prompt)) { 61 addSegment(text, 0, promptLength, JDB_FORMAT_PROMPT); 62 if (text.length() > promptLength) 63 addSegment(text, promptLength, JDB_FORMAT_INPUT); 64 } else 65 addSegment(text, JDB_FORMAT_LOG); 66 return segmentList; 67 } 68 69 public FormatTable getFormatTable() 70 { 71 if (formatTable == null) { 72 formatTable = new FormatTable("JdbMode"); 73 formatTable.addEntryFromPrefs(JDB_FORMAT_TEXT, "text"); 74 formatTable.addEntryFromPrefs(JDB_FORMAT_PROMPT, "prompt"); 75 formatTable.addEntryFromPrefs(JDB_FORMAT_INPUT, "input"); 76 formatTable.addEntryFromPrefs(JDB_FORMAT_OUTPUT, "output", "text"); 77 formatTable.addEntryFromPrefs(JDB_FORMAT_LOG, "log", "comment"); 78 } 79 return formatTable; 80 } 81 } 82 | Popular Tags |