Browse Source

scanner.Terminal: A literal (utf8) string within a document

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

1
scanner/scanner.go

@ -0,0 +1 @@
package scanner

41
scanner/terminal.go

@ -0,0 +1,41 @@
package scanner
import (
"unicode/utf8"
)
// A literal element within a document
type Terminal struct {
val string
bytes, runes uint
line, col uint
}
// Creates a new Terminal
func NewTerminalFull(val string, bytes, runes, line, col uint) *Terminal {
return &Terminal{
val: val,
bytes: bytes,
runes: runes,
line: line,
col: col,
}
}
// Creates a new Terminal without knowing it's length
func NewTerminal(val string, line, col uint) *Terminal {
bytes := uint(len(val))
runes := uint(utf8.RuneCountInString(val))
return NewTerminalFull(val, bytes, runes, line, col)
}
// Position of the terminal in the document
func (t *Terminal) Position() (uint, uint) {
return t.line, t.col
}
// Value and size of the Terminal
func (t *Terminal) Value() (string, uint, uint) {
return t.val, t.bytes, t.runes
}
Loading…
Cancel
Save