initial commits
parent
61b26d3aa7
commit
97ac579e3c
|
@ -0,0 +1,67 @@
|
|||
package eol
|
||||
|
||||
import (
|
||||
"sourcecode.social/reiver/go-opt"
|
||||
)
|
||||
|
||||
// internalCircumstance is primarily used to help to create informative error messages.
|
||||
//
|
||||
// internalCircumstance contains the end-of-line sequence and the character-number within that end-of-line sequence.
|
||||
//
|
||||
// Example end-of-line sequences are:
|
||||
//
|
||||
// • "\n"
|
||||
// • "\r"
|
||||
// • "\r\n"
|
||||
// • "\u0085"
|
||||
// • "\u2028"
|
||||
//
|
||||
// No end-of-line sequence can also be specified if it is unknown.
|
||||
// For example eol.ReadEOL() does NOT know the end-of-line sequence ahead of time.
|
||||
//
|
||||
// The character-number is 1-indexed.
|
||||
// Meaning that the 1st character is 1 (and not 0).
|
||||
//
|
||||
// Creating an internalCircumstance usually looks something like these:
|
||||
//
|
||||
// var circumstance internalCircumstance = specifyCircumstance(opt.Nothing[string](), 1)
|
||||
//
|
||||
// var circumstance internalCircumstance = specifyCircumstance(opt.Something]("\n"), 1)
|
||||
//
|
||||
// var circumstance internalCircumstance = specifyCircumstance(opt.Something]("\r"), 1)
|
||||
//
|
||||
// var circumstance internalCircumstance = specifyCircumstance(opt.Something]("\r\n"), 1)
|
||||
//
|
||||
// var circumstance internalCircumstance = specifyCircumstance(opt.Something]("\r\n"), 2)
|
||||
//
|
||||
// var circumstance internalCircumstance = specifyCircumstance(opt.Something]("\u0085"), 1)
|
||||
//
|
||||
// var circumstance internalCircumstance = specifyCircumstance(opt.Something]("\u2028"), 1)
|
||||
//
|
||||
// These would then be passed to some type of error.
|
||||
// For example:
|
||||
//
|
||||
// var err error = errNotFound(circumstance, expected, actual)
|
||||
//
|
||||
// var err error = errProblemReadingRune(circumstance, err)
|
||||
//
|
||||
// var err error = errProblemUnreadingRune(circumstance, err, r)
|
||||
type internalCircumstance struct {
|
||||
eolSequence opt.Optional[string]
|
||||
characterNumber uint64
|
||||
}
|
||||
|
||||
func specifyCircumstance(eolSequence opt.Optional[string], characterNumber uint64) internalCircumstance {
|
||||
return internalCircumstance{
|
||||
eolSequence:eolSequence,
|
||||
characterNumber:characterNumber,
|
||||
}
|
||||
}
|
||||
|
||||
func (receiver internalCircumstance) CharacterNumber() uint64 {
|
||||
return receiver.characterNumber
|
||||
}
|
||||
|
||||
func (receiver internalCircumstance) EOLSequence() opt.Optional[string] {
|
||||
return receiver.eolSequence
|
||||
}
|
Loading…
Reference in New Issue