code: def generate_type_docs(types):
      
      output = StringIO()
  
      indent = "  "  # 2
  
      # loop through the basic types and add them to the RAML formatted output
      for type_name in types:
  
          if types[type_name].get("type") != None:
  
              output.write(indent + type_name + ":\n")
  
              indent += "  "  # 4
  
              type_safe = types[type_name]["type"].replace(" ", "_")
  
              # if we are dealing with a list, set type to array and specify type of items
              if types[type_name].get("items") != None:
                  items_safe = types[type_name]["items"].replace(" ", "_")
                  # if items_safe == "base":
                  #     items_safe = "object"
                  output.write(indent + "type: " + type_safe + "\n")
                  output.write(indent + "items: " + items_safe + "\n")
  
              # otherwise, use the type per normal
              else:
                  output.write(indent + "type: " + type_safe + "\n")
  
              # add the description
              if types[type_name].get("description") != None:
                  output.write(indent + "description: " + types[type_name]["description"] + "\n")
  
              indent = indent[:-2]    # 2
  
      type_docs = output.getvalue()
      output.close()
      return type_docs
docs: Parse an object of types and generate RAML documentation for them.
      Expects each type to be either a regular type or a list/array. If a type is a list,
      it must specify what type to use for each item.