github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/fn_parse_int.go (about) 1 // Unless explicitly stated otherwise all files in this repository are licensed 2 // under the MIT License. 3 // This product includes software developed at Guance Cloud (https://www.guance.com/). 4 // Copyright 2021-present Guance, Inc. 5 6 package funcs 7 8 import ( 9 "strconv" 10 11 "github.com/GuanceCloud/platypus/pkg/ast" 12 "github.com/GuanceCloud/platypus/pkg/engine/runtime" 13 "github.com/GuanceCloud/platypus/pkg/errchain" 14 ) 15 16 func ParseIntChecking(ctx *runtime.Task, funcExpr *ast.CallExpr) *errchain.PlError { 17 if err := normalizeFuncArgsDeprecated(funcExpr, []string{ 18 "val", "base", 19 }, 2); err != nil { 20 return runtime.NewRunError(ctx, err.Error(), funcExpr.NamePos) 21 } 22 23 return nil 24 } 25 26 func ParseInt(ctx *runtime.Task, funcExpr *ast.CallExpr) *errchain.PlError { 27 val, _, err := runtime.RunStmt(ctx, funcExpr.Param[0]) 28 if err != nil { 29 return err 30 } 31 32 if val == nil { 33 ctx.Regs.ReturnAppend(int64(0), ast.Int) 34 return nil 35 } 36 37 valStr, ok := val.(string) 38 if !ok { 39 ctx.Regs.ReturnAppend(int64(0), ast.Int) 40 return nil 41 } 42 43 base, _, err := runtime.RunStmt(ctx, funcExpr.Param[1]) 44 if err != nil { 45 return err 46 } 47 48 if base == nil { 49 ctx.Regs.ReturnAppend(int64(0), ast.Int) 50 return nil 51 } 52 53 baseInt, ok := base.(int64) 54 if !ok { 55 ctx.Regs.ReturnAppend(int64(0), ast.Int) 56 return nil 57 } 58 59 v, _ := strconv.ParseInt(valStr, int(baseInt), 64) 60 ctx.Regs.ReturnAppend(v, ast.Int) 61 return nil 62 } 63 64 func FormatIntChecking(ctx *runtime.Task, funcExpr *ast.CallExpr) *errchain.PlError { 65 if err := normalizeFuncArgsDeprecated(funcExpr, []string{ 66 "val", "base", 67 }, 2); err != nil { 68 return runtime.NewRunError(ctx, err.Error(), funcExpr.NamePos) 69 } 70 71 return nil 72 } 73 74 func FormatInt(ctx *runtime.Task, funcExpr *ast.CallExpr) *errchain.PlError { 75 val, _, err := runtime.RunStmt(ctx, funcExpr.Param[0]) 76 if err != nil { 77 return err 78 } 79 80 if val == nil { 81 ctx.Regs.ReturnAppend("", ast.Int) 82 return nil 83 } 84 85 valStr, ok := val.(int64) 86 if !ok { 87 ctx.Regs.ReturnAppend("", ast.Int) 88 return nil 89 } 90 91 base, _, err := runtime.RunStmt(ctx, funcExpr.Param[1]) 92 if err != nil { 93 return err 94 } 95 96 if base == nil { 97 ctx.Regs.ReturnAppend("", ast.Int) 98 return nil 99 } 100 101 baseInt, ok := base.(int64) 102 if !ok { 103 ctx.Regs.ReturnAppend("", ast.Int) 104 return nil 105 } 106 107 v := strconv.FormatInt(valStr, int(baseInt)) 108 ctx.Regs.ReturnAppend(v, ast.String) 109 return nil 110 }