public static FieldParser BuildParserWithSingleDelimiterAndQualifier(string delimiter, string qualifier)
        {
            ArgumentVerifier.CheckStringArgument(delimiter, "delimiter");
            ArgumentVerifier.CheckStringArgument(qualifier, "qualifier");

            FieldParser parser = new FieldParser();

            parser.initialParsingState = new ParsingState();
            ParsingState fieldState          = new ParsingState();
            ParsingState qualifiedFieldState = new ParsingState();

            MatchTokenParsingState        firstQualifierState  = new MatchTokenParsingState(qualifier);
            MatchTokenParsingState        delimiterState       = new MatchTokenParsingState(delimiter);
            MatchEscapedTokenParsingState secondQualifierState = new MatchEscapedTokenParsingState(qualifier);

            parser.initialParsingState.AddNextState(firstQualifierState);
            parser.initialParsingState.AddNextState(fieldState);

            fieldState.AddNextState(delimiterState);

            qualifiedFieldState.AddNextState(secondQualifierState);

            firstQualifierState.AddNextState(qualifiedFieldState);
            firstQualifierState.SetErrorState(fieldState);

            delimiterState.SetErrorState(fieldState);

            secondQualifierState.AddNextState(fieldState);
            secondQualifierState.SetErrorState(qualifiedFieldState);

            return(parser);
        }
        public RowParser(string columnDelimiter, string rowDelimiter, string qualifier)
        {
            ArgumentVerifier.CheckStringArgument(rowDelimiter, "rowDelimiter");

            if (string.IsNullOrEmpty(columnDelimiter))
            {
                this.singleColumn = true;
                if (string.IsNullOrEmpty(qualifier))
                {
                    this.fieldParser = FieldParser.BuildParserWithSingleDelimiter(rowDelimiter);
                }
                else
                {
                    this.fieldParser = FieldParser.BuildParserWithSingleDelimiterAndQualifier(rowDelimiter, qualifier);
                }
            }
            else
            {
                if (string.IsNullOrEmpty(qualifier))
                {
                    this.fieldParser = FieldParser.BuildParserWithTwoDelimiters(columnDelimiter, rowDelimiter);
                }
                else
                {
                    this.fieldParser = FieldParser.BuildParserWithTwoDelimitersAndQualifier(columnDelimiter, rowDelimiter, qualifier);
                }
            }
        }
Пример #3
0
        public DelimitedFileParser(string columnDelimiter, string rowDelimiter)
        {
            ArgumentVerifier.CheckStringArgument(rowDelimiter, "rowDelimiter");

            this.columnDelimiter = columnDelimiter;
            this.rowDelimiter    = rowDelimiter;
        }
        public static FieldParser BuildParserWithSingleDelimiter(string delimiter)
        {
            ArgumentVerifier.CheckStringArgument(delimiter, "delimiter");

            FieldParser parser = new FieldParser();

            parser.initialParsingState = new ParsingState();

            MatchTokenParsingState delimiterState = new MatchTokenParsingState(delimiter);

            parser.initialParsingState.AddNextState(delimiterState);

            delimiterState.SetErrorState(parser.initialParsingState);

            return(parser);
        }
        public MatchTokenParsingState(string token)
        {
            ArgumentVerifier.CheckStringArgument(token, "token");

            this.tokenToMatch = token;
        }