code: def construct_format(f, type_map=CONSTRUCT_CODE):
    
    formatted = ""
    if type_map.get(f.type_id, None):
      return "'{identifier}' / {type_id}".format(type_id=type_map.get(f.type_id),
                                               identifier=f.identifier)
    elif f.type_id == 'string' and f.options.get('size', None):
      return "'{id}'/ construct.Bytes({size})".format(id=f.identifier,
                                                     size=f.options['size'].value)
    elif f.type_id == 'string':
      return "'{id}' / construct.GreedyBytes".format(id=f.identifier)
    elif f.type_id == 'array' and f.options.get('size', None):
      fill = f.options['fill'].value
      f_ = copy.copy(f)
      f_.type_id = fill
      s = f.options.get('size', None).value
      return "'{id}' / construct.Array({size}, {type})".format(id=f.identifier, size=s, type=type_map.get(f_.type_id, 'construct.Byte'))
    elif f.type_id == 'array':
      fill = f.options['fill'].value
      f_ = copy.copy(f)
      f_.type_id = fill
      return "construct.GreedyRange(%s)" % construct_format(f_)
    else:
      return "'%s' / construct.Struct(%s._parser)" % (f.identifier, f.type_id)
    return formatted
docs: Formats for Construct.