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); }
public static int Add(string numbersString) { DelimiterParser delimiter = DelimiterParserFactory.CreateDelimiterParser(numbersString?.Trim()); IEnumerable <int> numbersArray = new NumbersParser(numbersString?.Trim(), delimiter).GetNumbers(); return(numbersArray.Sum()); }
/// <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)); }
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); }
internal NumbersParser(string numbersString, DelimiterParser delimiterParser) { this.numbersString = numbersString; this.delimiterParser = delimiterParser; }