summaryrefslogtreecommitdiff
path: root/int.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-20 13:19:36 -0500
committerJeff Carr <[email protected]>2025-10-20 13:19:36 -0500
commitc80607489ccab9f72a1efe860757725896515f87 (patch)
treee04f0d38b38a19e5742098a2a2287f9271e773f9 /int.go
parentaba84efbf84d61a538e8c1e34834cd604f81372c (diff)
the point of cobol is to turn everything into a stringv0.0.28
Diffstat (limited to 'int.go')
-rw-r--r--int.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/int.go b/int.go
new file mode 100644
index 0000000..dd91a16
--- /dev/null
+++ b/int.go
@@ -0,0 +1,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
+}