Example #1
0
        /// <summary>
        ///		Lee los juegos del archivo
        /// </summary>
        public LibraryPgnModel Read(string fileName, System.Text.Encoding encoding = null)
        {
            LibraryPgnModel library = new LibraryPgnModel();

            // Abre el archivo
            Open(fileName, encoding);
            // Recoge la lista de juegos
            using (IEnumerator <SentenceBaseModel> sentenceEnumerator = Reader.Read().GetEnumerator())
            {
                SentenceBaseModel lastSentence = null;

                // Lee los juegos
                do
                {
                    lastSentence = ReadGame(sentenceEnumerator, library);
                }while (!(lastSentence is SentenceEndModel) && !(lastSentence is SentenceErrorModel));
                // Añade el error a la librería
                if (lastSentence != null && lastSentence is SentenceErrorModel error)
                {
                    library.Errors.Add(error.Content);
                }
            }
            // Cierra el archivo
            Close();
            // Ajusta las jugadas
            foreach (GamePgnModel game in library.Games)
            {
                AdjustTurnPlay(game.Movements);
            }
            // Devuelve la librería
            return(library);
        }
Example #2
0
        /// <summary>
        ///		Convierte la librería de jugadas
        /// </summary>
        public LibraryModel Convert(LibraryPgnModel libraryPgn)
        {
            LibraryModel library = new LibraryModel();

            // Convierte los juegos
            foreach (GamePgnModel gamePgn in libraryPgn.Games)
            {
                library.Games.Add(ConvertGame(gamePgn));
            }
            // Devuelve la librería convertida
            return(library);
        }
Example #3
0
        /// <summary>
        ///		Lee los datos del juego
        /// </summary>
        private SentenceBaseModel ReadGame(IEnumerator <SentenceBaseModel> sentenceEnumerator, LibraryPgnModel library)
        {
            SentenceBaseModel lastSentence = null;

            // Lee el juego
            do
            {
                GamePgnModel game = new GamePgnModel();

                // Guarda la etiqueta leída como última sentencia de la partida anterior
                if (lastSentence != null && lastSentence is SentenceTagModel sentenceTag)
                {
                    game.Headers.Add(new HeaderPgnModel(sentenceTag.Tag, sentenceTag.Content));
                }
                // Lee las cabeceras
                lastSentence = ReadHeaders(sentenceEnumerator, game);
                // Añade los moviemientos
                if (lastSentence is SentenceTurnNumberModel)
                {
                    // Lee los movimientos
                    lastSentence = ReadMovements(sentenceEnumerator, lastSentence, game.Movements);
                    // Añade el juego
                    library.Games.Add(game);
                }
                else
                {
                    lastSentence = new SentenceErrorModel("Can't find game movements");
                }
            }while (!(lastSentence is SentenceEndModel) && !(lastSentence is SentenceErrorModel));
            // Devuelve el juego creado
            return(lastSentence);
        }