예제 #1
0
        private static Parser <Parser <Row> > HeaderParser(ParsersBase p)
        {
            var dateParser1        = DateParser(p, false);
            var temperatureParser1 = TemperatureParser(p, true);
            var rowParser1         = p.Map2(dateParser1, () => temperatureParser1, Row.MakeRowFunc);

            var temperatureParser2 = TemperatureParser(p, false);
            var dateParser2        = DateParser(p, true);
            var rowParser2         = p.Map2(temperatureParser2, () => dateParser2, Flip(Row.MakeRowFunc));

            var columnTitlesParser = ColumnTitlesParser(p);

            return(columnTitlesParser.Map(cols =>
            {
                var colsList1 = cols.ToList();
                if (colsList1.SequenceEqual(new[] { "Date", "Temperature" }))
                {
                    return rowParser1;
                }
                if (colsList1.SequenceEqual(new[] { "Temperature", "Date" }))
                {
                    return rowParser2;
                }
                return p.Fail <Row>("");
            }));
        }