github.com/aws-cloudformation/cloudformation-cli-go-plugin@v1.2.0/python/rpdk/go/resolver.py (about)

     1  from rpdk.core.jsonutils.resolver import UNDEFINED, ContainerType
     2  
     3  PRIMITIVE_TYPES = {
     4      "string": "string",
     5      "integer": "int",
     6      "boolean": "bool",
     7      "number": "float64",
     8      UNDEFINED: "interface{}",
     9  }
    10  
    11  
    12  def translate_item_type(resolved_type):
    13      """
    14      translate_item_type converts JSON schema item types into Go types
    15      """
    16  
    17      # Another model
    18      if resolved_type.container == ContainerType.MODEL:
    19          return resolved_type.type
    20  
    21      # Primitive type
    22      if resolved_type.container == ContainerType.PRIMITIVE:
    23          return PRIMITIVE_TYPES[resolved_type.type]
    24  
    25      # Something more complex
    26      return translate_type(resolved_type)
    27  
    28  
    29  def translate_type(resolved_type):
    30      """
    31      translate_type converts JSON schema types into Go types
    32      """
    33  
    34      # Another model
    35      if resolved_type.container == ContainerType.MODEL:
    36          return "*" + resolved_type.type
    37  
    38      # Primitive type
    39      if resolved_type.container == ContainerType.PRIMITIVE:
    40          return "*" + PRIMITIVE_TYPES[resolved_type.type]
    41  
    42      # Composite type
    43      item_type = translate_item_type(resolved_type.type)
    44  
    45      # A dict
    46      if resolved_type.container == ContainerType.DICT:
    47          return f"map[string]{item_type}"
    48  
    49      # A list
    50      if resolved_type.container in (ContainerType.LIST, ContainerType.SET):
    51          return f"[]{item_type}"
    52  
    53      raise ValueError(f"Unknown container type {resolved_type.container}")