Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
go
Commits
b16e6ab1
Commit
b16e6ab1
authored
Nov 04, 2009
by
Robert Griesemer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gofmt-ify tabwriter
R=rsc
http://go/go-review/1017042
parent
1fede304
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
115 additions
and
110 deletions
+115
-110
src/pkg/tabwriter/tabwriter.go
src/pkg/tabwriter/tabwriter.go
+47
-42
src/pkg/tabwriter/tabwriter_test.go
src/pkg/tabwriter/tabwriter_test.go
+68
-68
No files found.
src/pkg/tabwriter/tabwriter.go
View file @
b16e6ab1
...
...
@@ -142,7 +142,7 @@ func (b *Writer) reset() {
const
(
// Ignore html tags and treat entities (starting with '&'
// and ending in ';') as single characters (width = 1).
FilterHTML
uint
=
1
<<
iota
;
FilterHTML
uint
=
1
<<
iota
;
// Force right-alignment of cell content.
// Default is left-alignment.
...
...
@@ -187,7 +187,7 @@ func (b *Writer) Init(output io.Writer, cellwidth, padding int, padchar byte, fl
b
.
output
=
output
;
b
.
cellwidth
=
cellwidth
;
b
.
padding
=
padding
;
for
i
:=
len
(
b
.
padbytes
)
-
1
;
i
>=
0
;
i
--
{
for
i
:=
len
(
b
.
padbytes
)
-
1
;
i
>=
0
;
i
--
{
b
.
padbytes
[
i
]
=
padchar
;
}
if
padchar
==
'\t'
{
...
...
@@ -238,7 +238,7 @@ func (b *Writer) writePadding(textw, cellw int) os.Error {
cellw
=
((
cellw
+
b
.
cellwidth
-
1
)
/
b
.
cellwidth
)
*
b
.
cellwidth
;
}
n
:=
cellw
-
textw
;
n
:=
cellw
-
textw
;
if
n
<
0
{
panic
(
"internal error"
);
}
...
...
@@ -254,11 +254,11 @@ func (b *Writer) writePadding(textw, cellw int) os.Error {
n
-=
len
(
b
.
padbytes
);
}
return
b
.
write0
(
b
.
padbytes
[
0
:
n
]);
return
b
.
write0
(
b
.
padbytes
[
0
:
n
]);
}
var
vbar
=
[]
byte
{
'|'
}
;
var
vbar
=
[]
byte
{
'|'
}
func
(
b
*
Writer
)
writeLines
(
pos0
int
,
line0
,
line1
int
)
(
pos
int
,
err
os
.
Error
)
{
pos
=
pos0
;
...
...
@@ -267,7 +267,7 @@ func (b *Writer) writeLines(pos0 int, line0, line1 int) (pos int, err os.Error)
for
j
:=
0
;
j
<
line
.
Len
();
j
++
{
c
:=
line
.
At
(
j
)
.
(
cell
);
if
j
>
0
&&
b
.
flags
&
Debug
!=
0
{
if
j
>
0
&&
b
.
flags
&
Debug
!=
0
{
if
err
=
b
.
write0
(
vbar
);
err
!=
nil
{
return
;
}
...
...
@@ -359,7 +359,7 @@ func (b *Writer) format(pos0 int, line0, line1 int) (pos int, err os.Error) {
discardable
=
false
;
}
}
else
{
break
break
;
}
}
// column block end
...
...
@@ -404,15 +404,18 @@ func (b *Writer) updateWidth() {
//
// The value 0xff was chosen because it cannot appear in a valid UTF-8 sequence.
//
const
Escape
=
'\xff'
const
Escape
=
'\xff'
// Start escaped mode.
func
(
b
*
Writer
)
startEscape
(
ch
byte
)
{
switch
ch
{
case
Escape
:
b
.
endChar
=
Escape
;
case
'<'
:
b
.
endChar
=
'>'
;
case
'&'
:
b
.
endChar
=
';'
;
case
Escape
:
b
.
endChar
=
Escape
;
case
'<'
:
b
.
endChar
=
'>'
;
case
'&'
:
b
.
endChar
=
';'
;
}
}
...
...
@@ -424,9 +427,11 @@ func (b *Writer) startEscape(ch byte) {
//
func
(
b
*
Writer
)
endEscape
()
{
switch
b
.
endChar
{
case
Escape
:
b
.
updateWidth
();
case
Escape
:
b
.
updateWidth
();
case
'>'
:
// tag of zero width
case
';'
:
b
.
cell
.
width
++
;
// entity, count as one rune
case
';'
:
b
.
cell
.
width
++
;
// entity, count as one rune
}
b
.
pos
=
b
.
buf
.
Len
();
b
.
endChar
=
0
;
...
...
@@ -483,7 +488,7 @@ func (b *Writer) Write(buf []byte) (n int, err os.Error) {
switch
ch
{
case
'\t'
,
'\v'
,
'\n'
,
'\f'
:
// end of cell
b
.
append
(
buf
[
n
:
i
]);
b
.
append
(
buf
[
n
:
i
]);
b
.
updateWidth
();
n
=
i
+
1
;
// ch consumed
ncells
:=
b
.
terminateCell
(
ch
==
'\t'
);
...
...
@@ -504,7 +509,7 @@ func (b *Writer) Write(buf []byte) (n int, err os.Error) {
case
Escape
:
// start of escaped sequence
b
.
append
(
buf
[
n
:
i
]);
b
.
append
(
buf
[
n
:
i
]);
b
.
updateWidth
();
n
=
i
+
1
;
// exclude Escape
b
.
startEscape
(
Escape
);
...
...
@@ -513,7 +518,7 @@ func (b *Writer) Write(buf []byte) (n int, err os.Error) {
// possibly an html tag/entity
if
b
.
flags
&
FilterHTML
!=
0
{
// begin of tag/entity
b
.
append
(
buf
[
n
:
i
]);
b
.
append
(
buf
[
n
:
i
]);
b
.
updateWidth
();
n
=
i
;
b
.
startEscape
(
ch
);
...
...
@@ -528,7 +533,7 @@ func (b *Writer) Write(buf []byte) (n int, err os.Error) {
if
ch
==
Escape
{
j
=
i
;
// exclude Escape
}
b
.
append
(
buf
[
n
:
j
]);
b
.
append
(
buf
[
n
:
j
]);
n
=
i
+
1
;
// ch consumed
b
.
endEscape
();
}
...
...
@@ -536,7 +541,7 @@ func (b *Writer) Write(buf []byte) (n int, err os.Error) {
}
// append leftover text
b
.
append
(
buf
[
n
:
len
(
buf
)]);
b
.
append
(
buf
[
n
:
len
(
buf
)]);
n
=
len
(
buf
);
return
;
}
...
...
@@ -546,5 +551,5 @@ func (b *Writer) Write(buf []byte) (n int, err os.Error) {
// The parameters are the same as for the the Init function.
//
func
NewWriter
(
output
io
.
Writer
,
cellwidth
,
padding
int
,
padchar
byte
,
flags
uint
)
*
Writer
{
return
new
(
Writer
)
.
Init
(
output
,
cellwidth
,
padding
,
padchar
,
flags
)
return
new
(
Writer
)
.
Init
(
output
,
cellwidth
,
padding
,
padchar
,
flags
)
;
}
src/pkg/tabwriter/tabwriter_test.go
View file @
b16e6ab1
...
...
@@ -17,20 +17,20 @@ type buffer struct {
func
(
b
*
buffer
)
init
(
n
int
)
{
b
.
a
=
make
([]
byte
,
n
)[
0
:
0
];
b
.
a
=
make
([]
byte
,
n
)[
0
:
0
];
}
func
(
b
*
buffer
)
clear
()
{
b
.
a
=
b
.
a
[
0
:
0
];
b
.
a
=
b
.
a
[
0
:
0
];
}
func
(
b
*
buffer
)
Write
(
buf
[]
byte
)
(
written
int
,
err
os
.
Error
)
{
n
:=
len
(
b
.
a
);
m
:=
len
(
buf
);
if
n
+
m
<=
cap
(
b
.
a
)
{
b
.
a
=
b
.
a
[
0
:
n
+
m
];
if
n
+
m
<=
cap
(
b
.
a
)
{
b
.
a
=
b
.
a
[
0
:
n
+
m
];
for
i
:=
0
;
i
<
m
;
i
++
{
b
.
a
[
n
+
i
]
=
buf
[
i
];
}
...
...
@@ -65,7 +65,7 @@ func verify(t *testing.T, testname string, w *Writer, b *buffer, src, expected s
res
:=
b
.
String
();
if
res
!=
expected
{
t
.
Errorf
(
"--- test: %s
\n
--- src:
\n
%s
\n
--- found:
\n
%s
\n
--- expected:
\n
%s
\n
"
,
testname
,
src
,
res
,
expected
)
t
.
Errorf
(
"--- test: %s
\n
--- src:
\n
%s
\n
--- found:
\n
%s
\n
--- expected:
\n
%s
\n
"
,
testname
,
src
,
res
,
expected
)
;
}
}
...
...
@@ -95,7 +95,7 @@ func check(t *testing.T, testname string, tabwidth, padding int, padchar byte, f
write
(
t
,
testname
,
&
w
,
src
[
i
:
i
+
d
]);
i
,
d
=
i
+
d
,
d
+
1
;
if
i
+
d
>
len
(
src
)
{
d
=
len
(
src
)
-
i
;
d
=
len
(
src
)
-
i
;
}
}
verify
(
t
,
testname
,
&
w
,
&
b
,
src
,
expected
);
...
...
@@ -111,33 +111,33 @@ type entry struct {
}
var
tests
=
[]
entry
{
var
tests
=
[]
entry
{
entry
{
"1a"
,
8
,
1
,
'.'
,
0
,
""
,
""
""
,
},
entry
{
"1a debug"
,
8
,
1
,
'.'
,
Debug
,
""
,
""
""
,
},
entry
{
"1b esc"
,
8
,
1
,
'.'
,
0
,
"
\xff\xff
"
,
""
""
,
},
entry
{
"1c esc"
,
8
,
1
,
'.'
,
0
,
"
\xff\t\xff
"
,
"
\t
"
"
\t
"
,
},
entry
{
...
...
@@ -158,133 +158,133 @@ var tests = []entry {
"2"
,
8
,
1
,
'.'
,
0
,
"
\n\n\n
"
,
"
\n\n\n
"
"
\n\n\n
"
,
},
entry
{
"3"
,
8
,
1
,
'.'
,
0
,
"a
\n
b
\n
c"
,
"a
\n
b
\n
c"
"a
\n
b
\n
c"
,
},
entry
{
"4a"
,
8
,
1
,
'.'
,
0
,
"
\t
"
,
// '\t' terminates an empty cell on last line - nothing to print
""
""
,
},
entry
{
"4b"
,
8
,
1
,
'.'
,
AlignRight
,
"
\t
"
,
// '\t' terminates an empty cell on last line - nothing to print
""
""
,
},
entry
{
"5"
,
8
,
1
,
'.'
,
0
,
"*
\t
*"
,
"*.......*"
"*.......*"
,
},
entry
{
"5b"
,
8
,
1
,
'.'
,
0
,
"*
\t
*
\n
"
,
"*.......*
\n
"
"*.......*
\n
"
,
},
entry
{
"5c"
,
8
,
1
,
'.'
,
0
,
"*
\t
*
\t
"
,
"*.......*"
"*.......*"
,
},
entry
{
"5c debug"
,
8
,
1
,
'.'
,
Debug
,
"*
\t
*
\t
"
,
"*.......|*"
"*.......|*"
,
},
entry
{
"5d"
,
8
,
1
,
'.'
,
AlignRight
,
"*
\t
*
\t
"
,
".......**"
".......**"
,
},
entry
{
"6"
,
8
,
1
,
'.'
,
0
,
"
\t\n
"
,
"........
\n
"
"........
\n
"
,
},
entry
{
"7a"
,
8
,
1
,
'.'
,
0
,
"a) foo"
,
"a) foo"
"a) foo"
,
},
entry
{
"7b"
,
8
,
1
,
' '
,
0
,
"b) foo
\t
bar"
,
"b) foo bar"
"b) foo bar"
,
},
entry
{
"7c"
,
8
,
1
,
'.'
,
0
,
"c) foo
\t
bar
\t
"
,
"c) foo..bar"
"c) foo..bar"
,
},
entry
{
"7d"
,
8
,
1
,
'.'
,
0
,
"d) foo
\t
bar
\n
"
,
"d) foo..bar
\n
"
"d) foo..bar
\n
"
,
},
entry
{
"7e"
,
8
,
1
,
'.'
,
0
,
"e) foo
\t
bar
\t\n
"
,
"e) foo..bar.....
\n
"
"e) foo..bar.....
\n
"
,
},
entry
{
"7f"
,
8
,
1
,
'.'
,
FilterHTML
,
"f) f<o
\t
<b>bar</b>
\t\n
"
,
"f) f<o..<b>bar</b>.....
\n
"
"f) f<o..<b>bar</b>.....
\n
"
,
},
entry
{
"7g"
,
8
,
1
,
'.'
,
FilterHTML
,
"g) f<o
\t
<b>bar</b>
\t
non-terminated entity &"
,
"g) f<o..<b>bar</b>..... non-terminated entity &"
"g) f<o..<b>bar</b>..... non-terminated entity &"
,
},
entry
{
"7g debug"
,
8
,
1
,
'.'
,
FilterHTML
|
Debug
,
"g) f<o
\t
<b>bar</b>
\t
non-terminated entity &"
,
"g) f<o..|<b>bar</b>.....| non-terminated entity &"
"g) f<o..|<b>bar</b>.....| non-terminated entity &"
,
},
entry
{
"8"
,
8
,
1
,
'*'
,
0
,
"Hello, world!
\n
"
,
"Hello, world!
\n
"
"Hello, world!
\n
"
,
},
entry
{
...
...
@@ -294,7 +294,7 @@ var tests = []entry {
"11
\t
222
\t
3333
\t
44444
\n
"
,
"1.2..3...4
\n
"
"11222333344444
\n
"
"11222333344444
\n
"
,
},
entry
{
...
...
@@ -304,7 +304,7 @@ var tests = []entry {
"11
\t
222
\t
3333
\t
44444
\n
"
,
"1.2<!---
\f
--->..3...4
\n
"
"11222333344444
\n
"
"11222333344444
\n
"
,
},
entry
{
...
...
@@ -314,7 +314,7 @@ var tests = []entry {
"11
\t
222
\t
3333
\t
44444
\n
"
,
"1234
\n
"
"11222333344444
\n
"
"11222333344444
\n
"
,
},
entry
{
...
...
@@ -324,21 +324,21 @@ var tests = []entry {
"11
\t
222
\t
3333
\t
44444
\n
"
,
"1|2|3|4
\n
"
"11|222|3333|44444
\n
"
"11|222|3333|44444
\n
"
,
},
entry
{
"10a"
,
5
,
0
,
'.'
,
0
,
"1
\t
2
\t
3
\t
4
\n
"
,
"1....2....3....4
\n
"
"1....2....3....4
\n
"
,
},
entry
{
"10b"
,
5
,
0
,
'.'
,
0
,
"1
\t
2
\t
3
\t
4
\t\n
"
,
"1....2....3....4....
\n
"
"1....2....3....4....
\n
"
,
},
entry
{
...
...
@@ -350,7 +350,7 @@ var tests = []entry {
"本.......b.......c
\n
"
"aa......本本本.....cccc....ddddd
\n
"
"aaa.....bbbb
\n
"
"aaa.....bbbb
\n
"
,
},
entry
{
...
...
@@ -362,7 +362,7 @@ var tests = []entry {
" a è c
\n
"
" aa èèè cccc ddddd
\n
"
" aaa èèèè
\n
"
" aaa èèèè
\n
"
,
},
entry
{
...
...
@@ -374,7 +374,7 @@ var tests = []entry {
"a b c
\n
"
"aa bbbcccc
\n
"
"aaabbbb
\n
"
"aaabbbb
\n
"
,
},
entry
{
...
...
@@ -386,7 +386,7 @@ var tests = []entry {
"a_______b_______c
\n
"
"aa______bbb_____cccc
\n
"
"aaa_____bbbb
\n
"
"aaa_____bbbb
\n
"
,
},
entry
{
...
...
@@ -406,7 +406,7 @@ var tests = []entry {
"------------------88888888
\n
"
"
\n
"
"666666-666666-666666----4444
\n
"
"1------1------999999999-0000000000
\n
"
"1------1------999999999-0000000000
\n
"
,
},
entry
{
...
...
@@ -426,7 +426,7 @@ var tests = []entry {
"....................88888888
\n
"
"
\n
"
"666666...666666...666666......4444
\n
"
"1........1........999999999...0000000000
\n
"
"1........1........999999999...0000000000
\n
"
,
},
entry
{
...
...
@@ -446,7 +446,7 @@ var tests = []entry {
"
\t\t\t\t
88888888
\n
"
"
\n
"
"666666
\t
666666
\t
666666
\t\t
4444
\n
"
"1
\t
1
\t
<font color=red attr=日本語>999999999</font>
\t
0000000000
\n
"
"1
\t
1
\t
<font color=red attr=日本語>999999999</font>
\t
0000000000
\n
"
,
},
entry
{
...
...
@@ -464,7 +464,7 @@ var tests = []entry {
" 5.1 12.0 2.4 -7.0
\n
"
" .0 0.0 332.0 8908.0
\n
"
" .0 -.3 456.4 22.1
\n
"
" .0 1.2 44.4 -13.3"
" .0 1.2 44.4 -13.3"
,
},
entry
{
...
...
@@ -482,35 +482,35 @@ var tests = []entry {
" 5.1| 12.0| 2.4| -7.0|
\n
"
" .0| 0.0| 332.0| 8908.0|
\n
"
" .0| -.3| 456.4| 22.1|
\n
"
" .0| 1.2| 44.4| -13.3|"
" .0| 1.2| 44.4| -13.3|"
,
},
entry
{
"15a"
,
4
,
0
,
'.'
,
0
,
"a
\t\t
b"
,
"a.......b"
"a.......b"
,
},
entry
{
"15b"
,
4
,
0
,
'.'
,
DiscardEmptyColumns
,
"a
\t\t
b"
,
// htabs - do not discard column
"a.......b"
"a.......b"
,
},
entry
{
"15c"
,
4
,
0
,
'.'
,
DiscardEmptyColumns
,
"a
\v\v
b"
,
"a...b"
"a...b"
,
},
entry
{
"15d"
,
4
,
0
,
'.'
,
AlignRight
|
DiscardEmptyColumns
,
"a
\v\v
b"
,
"...ab"
"...ab"
,
},
entry
{
...
...
@@ -526,7 +526,7 @@ var tests = []entry {
"a
\t
b
\t\t
d
\t
e
\n
"
"a
\n
"
"a
\t
b
\t
c
\t
d
\n
"
"a
\t
b
\t
c
\t
d
\t
e
\n
"
"a
\t
b
\t
c
\t
d
\t
e
\n
"
,
},
entry
{
...
...
@@ -542,7 +542,7 @@ var tests = []entry {
"a
\t
b
\t
d
\t
e
\n
"
"a
\n
"
"a
\t
b
\t
c
\t
d
\n
"
"a
\t
b
\t
c
\t
d
\t
e
\n
"
"a
\t
b
\t
c
\t
d
\t
e
\n
"
,
},
entry
{
...
...
@@ -558,7 +558,7 @@ var tests = []entry {
"a
\t
|b
\t
||d
\t
|e
\n
"
"a
\n
"
"a
\t
|b
\t
|c
\t
|d
\n
"
"a
\t
|b
\t
|c
\t
|d
\t
|e
\n
"
"a
\t
|b
\t
|c
\t
|d
\t
|e
\n
"
,
},
entry
{
...
...
@@ -574,7 +574,7 @@ var tests = []entry {
"a
\t
b
\t\t
d
\t
e
\n
"
"a
\n
"
"a
\t
b
\t
c
\t
d
\n
"
"a
\t
b
\t
c
\t
d
\t
e
\n
"
"a
\t
b
\t
c
\t
d
\t
e
\n
"
,
},
entry
{
...
...
@@ -590,7 +590,7 @@ var tests = []entry {
"a
\t
|b
\t
|
\t
|d
\t
|e
\n
"
"a
\n
"
"a
\t
|b
\t
|c
\t
|d
\n
"
"a
\t
|b
\t
|c
\t
|d
\t
|e
\n
"
"a
\t
|b
\t
|c
\t
|d
\t
|e
\n
"
,
},
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment