protected override async ValueTask <IEnumerable <CardFromFile> > Execute(FileParserContext context,
                                                                                 Func <FileParserContext, ValueTask <IEnumerable <CardFromFile> > > next)
        {
            var fileExtension = Path.GetExtension(context.Name);

            if (string.IsNullOrEmpty(fileExtension) ||
                !fileExtension.Equals(".dec", StringComparison.InvariantCultureIgnoreCase))
            {
                return(await next(context));
            }

            var fileContent = Encoding.ASCII.GetString(context.Content);
            var deck        = new List <Item>();
            var matches     = Regex.Matches(fileContent, _parsingPattern, RegexOptions.Multiline);

            foreach (Match match in matches)
            {
                deck.Add(new Item {
                    id = int.Parse(match.Groups[1].Value),
                    r  = int.Parse(match.Groups[2].Value)
                });
            }

            context.Cards = await GetCardFromFilesFromItemsCollection(deck);

            return(context.Cards);
        }
Ejemplo n.º 2
0
        protected override async ValueTask <IEnumerable <CardFromFile> > Execute(FileParserContext context,
                                                                                 Func <FileParserContext, ValueTask <IEnumerable <CardFromFile> > > next)
        {
            //TODO: Known defect: Can't catch showcase cards.
            var fileExtension = Path.GetExtension(context.Name);

            if (string.IsNullOrEmpty(fileExtension) ||
                !fileExtension.Equals(".coll2", StringComparison.InvariantCultureIgnoreCase))
            {
                return(await next(context));
            }

            var fileContent = Encoding.ASCII.GetString(context.Content);

            var collection = CollectionV2.FromYaml(Regex.Replace(fileContent, _simplificationPattern, _replacement)).items;

            context.Cards = await GetCardFromFilesFromItemsCollection(collection);

            return(context.Cards);
        }