initial commits

master
Charles Iliya Krempeaux 2023-11-28 08:04:21 -08:00
parent 1e16f35451
commit 9d5e4af6b2
3 changed files with 55 additions and 17 deletions

View File

@ -2,6 +2,8 @@ package eol
import (
"fmt"
"sourcecode.social/reiver/go-opt"
)
var _ error = internalNotFoundError{}
@ -9,7 +11,15 @@ var _ error = internalNotFoundError{}
type internalNotFoundError struct{
expected rune
actual rune
characterNumber uint64
circumstance internalCircumstance
}
func errNotFound(circumstance internalCircumstance, expected rune, actual rune) error {
return internalNotFoundError {
expected:expected,
actual:actual,
circumstance:circumstance,
}
}
func (receiver internalNotFoundError) Error() string {
@ -21,23 +31,39 @@ func (receiver internalNotFoundError) Error() string {
var expected rune = receiver.expected
var actual rune = receiver.actual
var characterNumber uint64 = receiver.characterNumber
var characterNumber uint64 = receiver.circumstance.CharacterNumber()
var eolSequence opt.Optional[string] = receiver.circumstance.EOLSequence()
switch expected {
case lf:
var s string = fmt.Sprintf(`eol: line-feed (LF) character ('\n') (U+000A) not found for end-of-line character №%d — instead found %q (%U)`, characterNumber, actual, actual)
var s string = fmt.Sprintf(`eol: line-feed (LF) character ('\n') (U+000A) not found for end-of-line sequence character №%d — instead found %q (%U)`, characterNumber, actual, actual)
eolSequence.WhenSomething(func(sequence string){
s = fmt.Sprintf(`eol: line-feed (LF) character ('\n') (U+000A) not found for end-of-line sequence %q character №%d — instead found %q (%U)`, sequence, characterNumber, actual, actual)
})
p = append(p, s...)
case cr:
var s string = fmt.Sprintf(`eol: carriage-return (CR) character ('\r') (U+000D) not found for end-of-line character №%d — instead found %q (%U)`, characterNumber, actual, actual)
var s string = fmt.Sprintf(`eol: carriage-return (CR) character ('\r') (U+000D) not found for end-of-line sequence character №%d — instead found %q (%U)`, characterNumber, actual, actual)
eolSequence.WhenSomething(func(sequence string){
s = fmt.Sprintf(`eol: carriage-return (CR) character ('\r') (U+000D) not found for end-of-line sequence %q character №%d — instead found %q (%U)`, sequence, characterNumber, actual, actual)
})
p = append(p, s...)
case nel:
var s string = fmt.Sprintf(`eol: next-line (NEL) character (U+0085) not found for end-of-line character №%d — instead found %q (%U)`, characterNumber, actual, actual)
var s string = fmt.Sprintf(`eol: next-line (NEL) character (U+0085) not found for end-of-line sequence character №%d — instead found %q (%U)`, characterNumber, actual, actual)
eolSequence.WhenSomething(func(sequence string){
s = fmt.Sprintf(`eol: next-line (NEL) character (U+0085) not found for end-of-line sequence %q character №%d — instead found %q (%U)`, sequence, characterNumber, actual, actual)
})
p = append(p, s...)
case ls:
var s string = fmt.Sprintf(`eol: line-separator (LS) character (U+2028) not found for end-of-line character №%d — instead found %q (%U)`, characterNumber, actual, actual)
var s string = fmt.Sprintf(`eol: line-separator (LS) character (U+2028) not found for end-of-line sequence character №%d — instead found %q (%U)`, characterNumber, actual, actual)
eolSequence.WhenSomething(func(sequence string){
s = fmt.Sprintf(`eol: line-separator (LS) character (U+2028) not found for end-of-line sequence %q character №%d — instead found %q (%U)`, sequence, characterNumber, actual, actual)
})
p = append(p, s...)
default:
var s string = fmt.Sprintf(`eol: %q character (%U) not found for character №%d — instead found %q (%U)`, expected, expected, characterNumber, actual, actual)
var s string = fmt.Sprintf(`eol: %q character (%U) not found for sequence character №%d — instead found %q (%U)`, expected, expected, characterNumber, actual, actual)
eolSequence.WhenSomething(func(sequence string){
s = fmt.Sprintf(`eol: %q character (%U) not found for sequence %q character №%d — instead found %q (%U)`, expected, expected, sequence, characterNumber, actual, actual)
})
p = append(p, s...)
}

View File

@ -6,23 +6,29 @@ import (
var _ error = internalProblemReadingRuneError{}
func errProblemReadingRune(err error, runeNumber uint64) error {
func errProblemReadingRune(circumstance internalCircumstance, err error) error {
return internalProblemReadingRuneError{
err:err,
runeNumber:runeNumber,
circumstance:circumstance,
}
}
type internalProblemReadingRuneError struct {
err error
runeNumber uint64
circumstance internalCircumstance
}
func (receiver internalProblemReadingRuneError) Error() string {
err := receiver.err
runeNumber := receiver.runeNumber
characterNumber := receiver.circumstance.CharacterNumber()
eolSequence := receiver.circumstance.EOLSequence()
return fmt.Sprintf("eol: problem reading character №%d of end-of-line sequence: %s", runeNumber, err)
var s string = fmt.Sprintf("eol: problem reading character №%d of end-of-line sequence: %s", characterNumber, err)
eolSequence.WhenSomething(func(sequence string){
s = fmt.Sprintf("eol: problem reading character №%d of end-of-line sequence %q: %s", characterNumber, sequence, err)
})
return s
}
func (receiver internalProblemReadingRuneError) Unwrap() error {

View File

@ -6,26 +6,32 @@ import (
var _ error = internalProblemUnreadingRuneError{}
func errProblemUnreadingRune(err error, runeNumber uint64, r rune) error {
func errProblemUnreadingRune(circumstance internalCircumstance, err error, r rune) error {
return internalProblemUnreadingRuneError{
err:err,
runeNumber:runeNumber,
r:r,
circumstance:circumstance,
}
}
type internalProblemUnreadingRuneError struct {
err error
runeNumber uint64
r rune
circumstance internalCircumstance
}
func (receiver internalProblemUnreadingRuneError) Error() string {
err := receiver.err
runeNumber := receiver.runeNumber
r := receiver.r
characterNumber := receiver.circumstance.CharacterNumber()
eolSequence := receiver.circumstance.EOLSequence()
return fmt.Sprintf("eol: problem unreading character №%d (%q (%U)) of end-of-line sequence: %s", runeNumber, r, r, err)
var s string = fmt.Sprintf("eol: problem unreading character №%d (%q (%U)) of end-of-line sequence: %s", characterNumber, r, r, err)
eolSequence.WhenSomething(func(sequence string){
s = fmt.Sprintf("eol: problem unreading character №%d (%q (%U)) of end-of-line sequence %q: %s", characterNumber, r, r, sequence, err)
})
return s
}
func (receiver internalProblemUnreadingRuneError) Unwrap() error {