コード例 #1
0
        static void Main(string[] args)
        {
            var fileSystem                   = new FileSystem();
            var metadataService              = new MetadataService();
            var metadata                     = metadataService.Get();
            var delimiterParser              = new DelimiterParser(metadata.Delimiter);
            var fileChecksumValidator        = new FileChecksumValidator();
            var invalidDataInColumnValidator = new InvalidDataInColumnValidator();
            var requiredColumnValidator      = new RequiredColumnValidator();
            var requiredFileValidator        = new RequiredFileValidator();
            var unexpectedColumnValidator    = new UnexpectedColumnValidator();
            var unexpectedFileValidator      = new UnexpectedFileValidator();
            var request = new ProcessorRequest()
            {
                DelimiterParser     = delimiterParser,
                FileExtension       = metadata.FileExtension,
                Files               = metadata.Files,
                FileSystem          = fileSystem,
                Path                = metadata.Path,
                FileChecksum        = fileChecksumValidator,
                InvalidDataInColumn = invalidDataInColumnValidator,
                RequiredColumn      = requiredColumnValidator,
                RequiredFile        = requiredFileValidator,
                UnexpectedColumn    = unexpectedColumnValidator,
                UnexpectedFile      = unexpectedFileValidator
            };
            var processor = new Processor();
            var messages  = processor.Execute(request);

            OutputMessages(messages);
            Environment.Exit(0);
        }
コード例 #2
0
ファイル: Calculator.cs プロジェクト: wassimmansour/Sogeti
        public static int Add(string numbersString)
        {
            DelimiterParser delimiter = DelimiterParserFactory.CreateDelimiterParser(numbersString?.Trim());

            IEnumerable <int> numbersArray = new NumbersParser(numbersString?.Trim(), delimiter).GetNumbers();

            return(numbersArray.Sum());
        }
コード例 #3
0
        /// <inheritdoc/>
        public override IParseResult <IList <T1> > TryParse(string input, int position)
        {
            IList <T1> elements    = new List <T1>();
            int        newPosition = position;

            for (ulong i = 0; i < Min; i++)
            {
                IParseResult <T1> result = Parser.TryParse(input, newPosition);
                if (!result.Success)
                {
                    return(new ParseResult <IList <T1> >(newPosition, result.Position, result.Error));
                }

                newPosition = result.Position;
                elements.Add(result.Value);

                if (i < Min - 1)
                {
                    IParseResult <T2> delimiterResult = DelimiterParser.TryParse(input, newPosition);
                    if (!delimiterResult.Success)
                    {
                        return(new ParseResult <IList <T1> >(newPosition, result.Position, delimiterResult.Error));
                    }

                    newPosition = delimiterResult.Position;
                }
            }

            for (ulong i = 0; i < Max - Min; i++)
            {
                int tempPos = newPosition;
                if (i != 0 || Min > 0)
                {
                    IParseResult <T2> delimiterResult = DelimiterParser.TryParse(input, tempPos);
                    if (!delimiterResult.Success)
                    {
                        break;
                    }

                    tempPos = delimiterResult.Position;
                }

                IParseResult <T1> result = Parser.TryParse(input, tempPos);
                if (!result.Success)
                {
                    break;
                }

                newPosition = result.Position;
                elements.Add(result.Value);
            }

            return(new ParseResult <IList <T1> >(elements, position, newPosition));
        }
コード例 #4
0
        public void Setup()
        {
            _delimiterParser = new DelimiterParser();
            _dataParser      = new DataParser();
            IValidation lengthValidation = new LengthValidation();
            var         validations      = new List <IValidation>
            {
                lengthValidation
            };
            IConstraint maxNumberConstraint = new MaxNumberConstraint();
            var         constraints         = new List <IConstraint>
            {
                maxNumberConstraint
            };

            _validationService = new ValidationService(validations);
            _constraints       = new Constraints(constraints);
            _calculator        = new Calculator(_delimiterParser, _dataParser, _validationService, _constraints);
        }
コード例 #5
0
ファイル: NumbersParser.cs プロジェクト: wassimmansour/Sogeti
 internal NumbersParser(string numbersString, DelimiterParser delimiterParser)
 {
     this.numbersString   = numbersString;
     this.delimiterParser = delimiterParser;
 }