__author__ = 'christinefay-varnier'
__projet__ = 'Compression_carte'
__fichier__ = 'ligne.py'
__date__ = '25/03/2015'

from zone import Zone


class Ligne:
    def __init__(self, line):
        """
        :param line:    chaine de caracteres sous la forme "nom nbrepet nom nbrepet nom nbrepet..."
        :return:        une instance de la classe Ligne
        """

        # decoupage de la ligne
        liste_line = line.split()

        # initialisation de la liste des zones de la ligne
        self.lzones_ = []

        # on parcourt la liste 2 par 2
        for i in range(0, len(liste_line), 2):
            nom = liste_line[i]
            repet = liste_line[i + 1]

            # creation de l'instance Zone
            zone = Zone(nom, int(repet))

            # ajout de la zone dans lzones
            self.lzones_.append(zone)

        # peut s'écrire aussi avec une liste en compréhension
        # self.lzones_ = [Zone(liste_line[i], int(liste_line[i+1])) for i in range(0, len(liste_line), 2)]
        
    def __repr__(self):
        
        txt = ""
        
        for z in self.lzones_:
            txt += str(z)
            
        return txt

    def decompresse(self):
        """
        :return:    decompresse la liste des zones pour recupere une liste sous la forme [nom, nom, nom...]
        """

        # initialisation de la liste decompressee
        ldecompresse = []

        # on parcourt la liste des zones
        for zone in self.lzones_:
            # on ajoute la liste decompression de zone dans la liste decompresse
            # attention, le resultat de zone.decompresse est une liste
            # si on veut recuperer une liste "aplatie", il faut utiliser extend
            ldecompresse.extend(zone.decompresse())

        return ldecompresse

if __name__ == "__main__":
    ligne = "Gondor 1 Harad 4 Armor 3 Barandur 1 Imladris 1"
    l = Ligne(ligne)
    print(l)
    print(l.decompresse())