github.com/tursom/GoCollections@v0.3.10/exceptions/exec.py (about) 1 # Copyright (c) 2022 tursom. All rights reserved. 2 # Use of this source code is governed by a GPL-3 3 # license that can be found in the LICENSE file. 4 5 # this script due to build Exec.go 6 7 def arg_list(arg_size): 8 if arg_size == 0: 9 return "" 10 return "".join([f"a{a + 1} A{a + 1}, " for a in range(arg_size)])[:-2] 11 12 13 def type_list(arg_size, c): 14 if arg_size == 0: 15 return "" 16 return "".join([f"{c}{a + 1}, " for a in range(arg_size)])[:-2] 17 18 19 def arg_type(arg_size): 20 if arg_size == 0: 21 return "" 22 return type_list(arg_size, "A") 23 24 25 def ret_type(arg_size): 26 return type_list(arg_size, "T") 27 28 29 for arg_size in range(32): 30 AT = type_list(arg_size, "A") 31 al = type_list(arg_size, "a") 32 for ret_size in range(32): 33 RT = type_list(ret_size, "R") 34 rl = type_list(ret_size, "r") 35 if ret_size > 1: 36 RTC = f"({RT})" 37 else: 38 RTC = RT 39 40 if arg_size == 0: 41 if ret_size == 0: 42 print( 43 f"func Exec{arg_size}r{ret_size}[E error](f func() (E))" " {\n " 44 f" err := f()\n" 45 " if error(err) != nil {\n" 46 " panic(Package(err))\n" 47 " }\n" 48 f" return\n" 49 "}\n") 50 else: 51 print( 52 f"func Exec{arg_size}r{ret_size}[{RT} any, E error](f func() ({RT}, E)) {RTC}" " {\n " 53 f" {rl}, err := f()\n" 54 " if error(err) != nil {\n" 55 " panic(Package(err))\n" 56 " }\n" 57 f" return {rl}\n" 58 "}\n") 59 else: 60 if ret_size == 0: 61 print( 62 f"func Exec{arg_size}r{ret_size}[{AT} any, E error](f func({AT}) (E), {arg_list(arg_size)})" " {\n" 63 f" err := f({al})\n" 64 " if error(err) != nil {\n" 65 " panic(Package(err))\n" 66 " }\n" 67 f" return\n" 68 "}\n") 69 else: 70 print( 71 f"func Exec{arg_size}r{ret_size}[{AT}, {RT} any, E error](f func({AT}) ({RT}, E), {arg_list(arg_size)}) {RTC}" " {\n " 72 f" {rl}, err := f({al})\n" 73 " if error(err) != nil {\n" 74 " panic(Package(err))\n" 75 " }\n" 76 f" return {rl}\n" 77 "}\n")