50 lines
1.0 KiB
Java
50 lines
1.0 KiB
Java
|
package com.bytezone.diskbrowser.applefile;
|
||
|
|
||
|
public class PascalText extends AbstractFile
|
||
|
{
|
||
|
public PascalText (String name, byte[] buffer)
|
||
|
{
|
||
|
super (name, buffer);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getText ()
|
||
|
{
|
||
|
StringBuilder text = new StringBuilder (getHeader ());
|
||
|
|
||
|
int ptr = 0x400;
|
||
|
while (ptr < buffer.length)
|
||
|
{
|
||
|
if (buffer[ptr] == 0x00)
|
||
|
{
|
||
|
++ptr;
|
||
|
continue;
|
||
|
}
|
||
|
if (buffer[ptr] == 0x10)
|
||
|
{
|
||
|
int tab = buffer[ptr + 1] - 0x20;
|
||
|
while (tab-- > 0)
|
||
|
text.append (" ");
|
||
|
ptr += 2;
|
||
|
}
|
||
|
String line = getLine (ptr);
|
||
|
text.append (line + "\n");
|
||
|
ptr += line.length () + 1;
|
||
|
}
|
||
|
|
||
|
return text.toString ();
|
||
|
}
|
||
|
|
||
|
private String getHeader ()
|
||
|
{
|
||
|
return "Name : " + name + "\n\n";
|
||
|
}
|
||
|
|
||
|
private String getLine (int ptr)
|
||
|
{
|
||
|
StringBuilder line = new StringBuilder ();
|
||
|
while (buffer[ptr] != 0x0D)
|
||
|
line.append ((char) buffer[ptr++]);
|
||
|
return line.toString ();
|
||
|
}
|
||
|
}
|