|
@@ -44,7 +44,31 @@ func (sf *MTxt) TrimSuffix[T def_spec_fn.TxtConstraint](suffix T) def_spec_base.
|
|
|
|
|
|
|
|
// Atoi -- устанавливает и возвращает возможное число.
|
|
// Atoi -- устанавливает и возвращает возможное число.
|
|
|
func (sf MTxt) Atoi() *result.Result[def_spec_base.Num] {
|
|
func (sf MTxt) Atoi() *result.Result[def_spec_base.Num] {
|
|
|
- iRes, err := strconv.Atoi(sf.String())
|
|
|
|
|
|
|
+ sf.CheckOwner()
|
|
|
|
|
+ fnCut := func(val string) string {
|
|
|
|
|
+ for len(val) > 0 {
|
|
|
|
|
+ isCut := false
|
|
|
|
|
+ litBeg := string([]rune(val)[0])
|
|
|
|
|
+ if litBeg == " " || litBeg == "\t" || litBeg == "\n" {
|
|
|
|
|
+ val = val[1:]
|
|
|
|
|
+ isCut = true
|
|
|
|
|
+ }
|
|
|
|
|
+ runes := []rune(val)
|
|
|
|
|
+ litEnd := string(runes[len(runes)-1])
|
|
|
|
|
+ if litEnd == " " || litEnd == "\t" || litEnd == "\n" {
|
|
|
|
|
+ val = string(runes[:len(runes)-1])
|
|
|
|
|
+ isCut = true
|
|
|
|
|
+ }
|
|
|
|
|
+ if !isCut {
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return val
|
|
|
|
|
+ }
|
|
|
|
|
+ val := sf.Str()
|
|
|
|
|
+ val = fnCut(val)
|
|
|
|
|
+ sf.Set(val)
|
|
|
|
|
+ iRes, err := strconv.Atoi(sf.Str())
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
err := fmt.Errorf("LetTxt.Atoi(): val(%q) not Int, err=\n\t%w",
|
|
err := fmt.Errorf("LetTxt.Atoi(): val(%q) not Int, err=\n\t%w",
|
|
|
sf.String(), err)
|
|
sf.String(), err)
|