summaryrefslogtreecommitdiff
path: root/int.go
blob: dd91a16d183a6eb59dbc17347ba71e3e9a5a6e44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package cobol

import (
	"strconv"
	"strings"
)

// just give back an int
func Int(maybeInt any) int {
	switch v := maybeInt.(type) {
	case int:
		return v
	case *int:
		return *v
	case string:
		s := strings.TrimSpace(v)
		if s == "" {
			return 0
		}
		i, err := strconv.Atoi(s)
		if err == nil {
			return i
		}
		parts := strings.Fields(s)
		if len(parts) == 0 {
			return 0
		}
		// check every field for an int. sure, why not
		for _, part := range parts {
			if part == "" {
				continue
			}
			i, err := strconv.Atoi(part)
			if err == nil {
				return i
			}
		}
		return i
	}
	return 0
}