예제 #1
0
def str_list_w_last(iterable, infix=None, last_infix=None,
                    oxfordian_last_infix=None, oxford_comma=True):
    """
    Concatène une liste de chaîne de caractères avec des virgules
    et un «,\u00A0et\u00A0» final («\u00A0et\u00A0» pour deux éléments).
    Pour désactiver la virgule d’Oxford, passer oxford_comma=False en argument.

    >>> l = ['Jeanne', 'Marion', 'Lola', 'Perrine']
    >>> print(str_list_w_last(l))
    Jeanne, Marion, Lola\u00A0et\u00A0Perrine
    >>> print(str_list_w_last(l[:2]))
    Jeanne\u00A0et\u00A0Marion
    """

    l = [e for e in iterable if e]

    if infix is None:
        infix = pgettext('infix d’une liste', ', ')

    if oxford_comma and len(l) > 2:
        if oxfordian_last_infix is None:
            oxfordian_last_infix = pgettext(
                'dernier infix pour plus de 2 éléments', ' et ')
        last_infix = oxfordian_last_infix
    elif last_infix is None:
        last_infix = pgettext('dernier infix pour 2 éléments', ' et ')

    return str_list(l, infix, last_infix)
예제 #2
0
 def __str__(self):
     d = {
         'lieu': smart_text(self.lieu),
         'debut': self.debut.year,
         'fin': self.fin.year
     }
     return pgettext('saison : pattern d’affichage',
                     '%(lieu)s, %(debut)d–%(fin)d') % d
예제 #3
0
def str_list(iterable, infix=None, last_infix=None):
    """
    Concatène une liste de chaîne de caractères avec des virgules.

    >>> l = ['Jeanne', 'Lola', 'Perrine', 'Marion']
    >>> print(str_list(l))
    Jeanne, Lola, Perrine, Marion
    """

    if infix is None:
        infix = pgettext('infix d’une liste', ', ')

    l = [e for e in iterable if e]

    if last_infix is None:
        return infix.join(l)

    suffix = ''
    if len(l) > 1:
        suffix = last_infix + l.pop()
    return infix.join(l) + suffix