simplified Symbol based on lazy Symbol.Interpretation -- reduced odd "functorial style";
tuned implicit build/init messages;
1 /* Title: Tools/jEdit/src/isabelle_encoding.scala
4 Isabelle encoding -- based on UTF-8.
12 import org.gjt.sp.jedit.io.Encoding
13 import org.gjt.sp.jedit.buffer.JEditBuffer
15 import java.nio.charset.{Charset, CodingErrorAction}
16 import java.io.{InputStream, OutputStream, Reader, Writer, InputStreamReader, OutputStreamWriter,
17 CharArrayReader, ByteArrayOutputStream}
19 import scala.io.{Codec, Source, BufferedSource}
22 object Isabelle_Encoding
24 val NAME = "UTF-8-Isabelle"
26 def is_active(buffer: JEditBuffer): Boolean =
27 buffer.getStringProperty(JEditBuffer.ENCODING).asInstanceOf[String] == NAME
30 class Isabelle_Encoding extends Encoding
32 private val BUFSIZE = 32768
34 private def text_reader(in: InputStream, codec: Codec): Reader =
36 val source = new BufferedSource(in)(codec)
37 new CharArrayReader(Symbol.decode(source.mkString).toArray)
40 override def getTextReader(in: InputStream): Reader =
41 text_reader(in, Standard_System.codec())
43 override def getPermissiveTextReader(in: InputStream): Reader =
45 val codec = Standard_System.codec()
46 codec.onMalformedInput(CodingErrorAction.REPLACE)
47 codec.onUnmappableCharacter(CodingErrorAction.REPLACE)
48 text_reader(in, codec)
51 override def getTextWriter(out: OutputStream): Writer =
53 val buffer = new ByteArrayOutputStream(BUFSIZE) {
56 val text = Symbol.encode(toString(Standard_System.charset_name))
57 out.write(text.getBytes(Standard_System.charset))
60 override def close() { out.close() }
62 new OutputStreamWriter(buffer, Standard_System.charset.newEncoder())