Browse Source

scanner: adjust comments to make golint happy

Signed-off-by: Alejandro Mery <amery@geeks.cl>
v0.2.x
Alejandro Mery 10 years ago
parent
commit
2797253a96
  1. 19
      scanner/scanner.go
  2. 12
      scanner/terminal.go

19
scanner/scanner.go

@ -5,14 +5,17 @@ import (
) )
const ( const (
// EOF is a dummy rune representing End-Of-File
EOF = -1 EOF = -1
) )
// A Position in the input string and in the line-based document
type Position struct { type Position struct {
Offset uint Offset uint
Line, Column uint Line, Column uint
} }
// An Scanner represent the low level layer for text parsers
type Scanner struct { type Scanner struct {
name string name string
input string input string
@ -34,24 +37,24 @@ func NewScannerFromString(name, input string) *Scanner {
} }
} }
// Current length of the upcomming Terminal // Length returns the number of bytes and runes in the Terminal that is been detected
func (l *Scanner) Length() (uint, uint) { func (l *Scanner) Length() (uint, uint) {
return l.cursor.Offset - l.base.Offset, l.runes return l.cursor.Offset - l.base.Offset, l.runes
} }
// Is the upcoming Terminal stil empty? // Empty tells if there are no runes accounted for the next Terminal yet
func (l *Scanner) Empty() bool { func (l *Scanner) Empty() bool {
return l.runes == 0 return l.runes == 0
} }
// Move cursor forward // StepForth moves the cursor forward
func (l *Scanner) StepForth(runes, bytes uint) { func (l *Scanner) StepForth(runes, bytes uint) {
l.cursor.Offset += bytes l.cursor.Offset += bytes
l.cursor.Column += runes l.cursor.Column += runes
l.runes += runes l.runes += runes
} }
// Move cursor backward // StepBack moves the cursor backward
func (l *Scanner) StepBack(runes, bytes uint) { func (l *Scanner) StepBack(runes, bytes uint) {
l.cursor.Offset -= bytes l.cursor.Offset -= bytes
// FIXME: what if column goes < 1? // FIXME: what if column goes < 1?
@ -59,13 +62,13 @@ func (l *Scanner) StepBack(runes, bytes uint) {
l.runes -= runes l.runes -= runes
} }
// Moves the cursor back to the back // Reset moves the cursor back to the base
func (l *Scanner) Reset() { func (l *Scanner) Reset() {
l.cursor = l.base l.cursor = l.base
l.runes = 0 l.runes = 0
} }
// Trashes everything up to the cursor // Skip trashes everything up to the cursor
func (l *Scanner) Skip() { func (l *Scanner) Skip() {
l.base = l.cursor l.base = l.cursor
l.runes = 0 l.runes = 0
@ -77,7 +80,7 @@ func (l *Scanner) NewLine() {
l.cursor.Column = 1 l.cursor.Column = 1
} }
// Return the next rune but not moving the cursor // Peek returns the next rune but not moving the cursor
func (l *Scanner) Peek() (rune, uint) { func (l *Scanner) Peek() (rune, uint) {
if l.cursor.Offset == uint(len(l.input)) { if l.cursor.Offset == uint(len(l.input)) {
return EOF, 0 return EOF, 0
@ -86,7 +89,7 @@ func (l *Scanner) Peek() (rune, uint) {
return r, uint(bytes) return r, uint(bytes)
} }
// Return the next rune but moving the cursor // Next returns the next rune but moving the cursor
func (l *Scanner) Next() (rune, uint) { func (l *Scanner) Next() (rune, uint) {
r, bytes := l.Peek() r, bytes := l.Peek()
if bytes > 0 { if bytes > 0 {

12
scanner/terminal.go

@ -4,14 +4,14 @@ import (
"unicode/utf8" "unicode/utf8"
) )
// A literal element within a document // A Terminal represents literal element within a document
type Terminal struct { type Terminal struct {
val string val string
bytes, runes uint bytes, runes uint
line, col uint line, col uint
} }
// Creates a new Terminal // NewTerminalFull returns a new Terminal instance
func NewTerminalFull(val string, bytes, runes, line, col uint) *Terminal { func NewTerminalFull(val string, bytes, runes, line, col uint) *Terminal {
return &Terminal{ return &Terminal{
val: val, val: val,
@ -22,7 +22,7 @@ func NewTerminalFull(val string, bytes, runes, line, col uint) *Terminal {
} }
} }
// Creates a new Terminal without knowing it's length // NewTerminal creates a Terminal instance without knowing it's length
func NewTerminal(val string, line, col uint) *Terminal { func NewTerminal(val string, line, col uint) *Terminal {
bytes := uint(len(val)) bytes := uint(len(val))
runes := uint(utf8.RuneCountInString(val)) runes := uint(utf8.RuneCountInString(val))
@ -30,12 +30,14 @@ func NewTerminal(val string, line, col uint) *Terminal {
return NewTerminalFull(val, bytes, runes, line, col) return NewTerminalFull(val, bytes, runes, line, col)
} }
// Position of the terminal in the document // Position retuns the position (line and column)
// of the Terminal in the source document
func (t *Terminal) Position() (uint, uint) { func (t *Terminal) Position() (uint, uint) {
return t.line, t.col return t.line, t.col
} }
// Value and size of the Terminal // Value returns the string corresponding to
// this Terminal and it's size in bytes and runes
func (t *Terminal) Value() (string, uint, uint) { func (t *Terminal) Value() (string, uint, uint) {
return t.val, t.bytes, t.runes return t.val, t.bytes, t.runes
} }

Loading…
Cancel
Save