# README
scanners - useful string scanner utilities
scanners provides useful text scanners that alleviate the need for reading entire file contents into memory when processing one string at a time would suffice.
Installation
> go get github.com/go-corelibs/scanners@latest
Examples
ScanLines
func main() {
// read one line at a time from os.Stdin and write to os.Stdout
stopped := ScanLines(os.Stding, func(line string) (stop bool) {
fmt.Fprintf(os.Stdout, line + "\n")
return
})
// stopped == false because the ScanLinesFn given never returns true
}
ScanNulls
func main() {
// read one null-terminated string at a time from os.Stdin and write to
// os.Stdout
stopped := ScanNulls(os.Stding, func(line string) (stop bool) {
fmt.Fprintf(os.Stdout, line + "\n")
return
})
// stopped == false because the ScanLinesFn given never returns true
}
Go-CoreLibs
Go-CoreLibs is a repository of shared code between the Go-Curses and Go-Enjin projects.
License
Copyright 2024 The Go-CoreLibs Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use file except in compliance with the License.
You may obtain a copy of the license at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
# Functions
NewLineScanner constructs a new LineScanner instance.
NewLineScannerString is a convenience wrapper around strings.NewReader and NewLineScanner.
ScanFileLines opens the given file for reading, passing the open *os.File and the given ScanLinesFn to the ScanLines function for reading lines one at a time.
ScanLines reads newline terminated strings of text from the given reader, calling the ScanLinesFn for each newline terminated string of text.
ScanNulls reads null-terminated strings of text from the given reader, calling the ScanLinesFn for each null terminated string of text.
# Structs
LineScanner is an io.Reader based line-reading text scanner that retains newlines and internally uses [bufio.Reader.ReadRune] to accumulate line text.
# Type aliases
ScanLinesFn is the callback func for receiving lines of text as they are read and if the func returns true, the scanning process will immediately stop any further scanning.