scanners

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 4, 2024 License: Apache-2.0 Imports: 5 Imported by: 3

README

godoc codecov Go Report Card

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.

Documentation

Overview

Package 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.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ScanFileLines

func ScanFileLines(path string, fn ScanLinesFn) (stopped bool, err error)

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

func ScanLines

func ScanLines(reader io.Reader, fn ScanLinesFn) (stopped bool)

ScanLines reads newline terminated strings of text from the given reader, calling the ScanLinesFn for each newline terminated string of text

func ScanNulls

func ScanNulls(reader io.Reader, fn ScanLinesFn) (stopped bool)

ScanNulls reads null-terminated strings of text from the given reader, calling the ScanLinesFn for each null terminated string of text

Types

type LineScanner added in v1.1.0

type LineScanner struct {
	// contains filtered or unexported fields
}

LineScanner is an io.Reader based line-reading text scanner that retains newlines and internally uses bufio.Reader.ReadRune to accumulate line text

func NewLineScanner added in v1.1.0

func NewLineScanner(reader io.Reader) *LineScanner

NewLineScanner constructs a new LineScanner instance

func NewLineScannerString added in v1.1.0

func NewLineScannerString(input string) *LineScanner

NewLineScannerString is a convenience wrapper around strings.NewReader and NewLineScanner

func (*LineScanner) Err added in v1.1.0

func (s *LineScanner) Err() (err error)

Err returns any bufio.Reader.ReadRune error encountered during the last Scan iteration

func (*LineScanner) Peek added in v1.1.0

func (s *LineScanner) Peek() (next string, ok bool)

Peek returns the content of the next line, if there is a next line, without advancing the LineScanner. Multiple calls to Peek will return the same results

func (*LineScanner) Scan added in v1.1.0

func (s *LineScanner) Scan() (ok bool)

Scan reads runes up to and including a newline. Scan returns false upon the first error returned by bufio.Reader.ReadRune or when the end of the input buffer is reached

func (*LineScanner) Text added in v1.1.0

func (s *LineScanner) Text() (text string)

Text returns the content of the last scanned line, even if Scan has reached the end of the bufio.Reader

type ScanLinesFn

type ScanLinesFn func(line string) (stop bool)

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL