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")