@@ -21,92 +21,3 @@ object SourceInserter {
21
21
(prefixes mkString " \n " ).toArray
22
22
}
23
23
}
24
- class SourceInserter (contents : Array [Char ], start : Int = 0 , tabInc : Int = 8 ) extends Writer {
25
-
26
- private var buf = contents
27
- private var offset = start
28
- private var hilen = contents.length
29
-
30
- def length = offset + hilen
31
-
32
- private def currentColumn : Int = {
33
- var i = offset
34
- while (i > 0 && ! isLineBreakChar(buf(i - 1 ))) i -= 1
35
- var col = 0
36
- while (i < offset) {
37
- col = if (buf(i) == '\t ' ) (col + tabInc) / tabInc * tabInc else col + 1
38
- i += 1
39
- }
40
- col
41
- }
42
-
43
- private var col = currentColumn
44
-
45
- def column = synchronized { col }
46
-
47
- private def addCapacity (n : Int ) = {
48
- val newlength = length + n
49
- while (newlength > buf.length) {
50
- val buf1 = Array .ofDim[Char ](buf.length * 2 )
51
- Array .copy(buf, 0 , buf1, 0 , offset)
52
- Array .copy(buf, buf.length - hilen, buf1, buf1.length - hilen, hilen)
53
- buf = buf1
54
- }
55
- }
56
-
57
- private def insertChar (ch : Char ) = {
58
- // Console.err.print("["+ch+"]")
59
- buf(offset) = ch
60
- offset += 1
61
- ch match {
62
- case LF => col = 0
63
- case '\t ' => col = (col + tabInc) / tabInc * tabInc
64
- case _ => col += 1
65
- }
66
- }
67
-
68
- override def write (ch : Int ) = synchronized {
69
- addCapacity(1 )
70
- insertChar(ch.toChar)
71
- }
72
-
73
- override def write (chs : Array [Char ], off : Int , len : Int ) = synchronized {
74
- addCapacity(len)
75
- for (i <- off until off + len) insertChar(chs(i))
76
- }
77
-
78
- override def close () {
79
- }
80
-
81
- override def flush () {
82
- // signal buffer change
83
- }
84
-
85
- def currentContents = synchronized {
86
- if (length == buf.length) buf
87
- else {
88
- val res = Array .ofDim[Char ](length)
89
- Array .copy(buf, 0 , res, 0 , offset)
90
- Array .copy(buf, buf.length - hilen, res, offset, hilen)
91
- res
92
- }
93
- }
94
-
95
- def backspace () = synchronized {
96
- offset -= 1
97
- if (offset > 0 && buf(offset) == LF && buf(offset - 1 ) == CR ) offset -= 1
98
- }
99
-
100
- def currentChar = synchronized {
101
- buf(buf.length - hilen)
102
- }
103
-
104
- def skip (len : Int ) = synchronized {
105
- for (i <- 0 until len) {
106
- val ch = currentChar
107
- hilen -= 1
108
- insertChar(ch)
109
- }
110
- }
111
- }
112
-
0 commit comments