"""CSVJoiner.py

A helper function for joining CSV fields.

"""


def joinCSVFields(fields):
    """Create a CSV record by joining its fields.

    Returns a CSV record (e.g. a string) from a sequence of fields.
    Fields containing commands (,) or double quotes (") are quoted,
    and double quotes are escaped ("").
    The terminating newline is *not* included.

    """
    newFields = []
    for field in fields:
        assert isinstance(field, basestring)
        if '"' in field:
            newField = '"%s"' % field.replace('"', '""')
        elif ',' in field or '\n' in field or '\r' in field:
            newField = '"%s"' % field
        else:
            newField = field
        newFields.append(newField)
    return ','.join(newFields)
