Esempio n. 1
0
 public AttributeScanner(
     IScannerConfig config,
     IScanPreprocessor preprocessor,
     IHashProvider <string> hashProvider)
     : base(config, preprocessor, hashProvider)
 {
 }
        private IScanner CreateScanner(IConfigItem config)
        {
            IScanPreprocessor      preprocessor = CreateScanPreprocessor();
            IHashProvider <string> hashProvider = CreateHashProvider();

            string scannerNamespace = typeof(IScanner).Namespace;

            Type[] scannerTypes = config.Scanners
                                  .Select(scannerName => $"{scannerNamespace}.{scannerName}Scanner")
                                  .Select(scannerType => Type.GetType(scannerType))
                                  .ToArray();

            IScanner[] scanners = scannerTypes
                                  .Select(scannerType => (IScanner)Activator.CreateInstance(scannerType, config, preprocessor, hashProvider))
                                  .ToArray();

            if (scanners.Length > 1)
            {
                CompositeScanner compositeScanner = new CompositeScanner();

                foreach (IScanner scanner in scanners)
                {
                    compositeScanner.AddScanner(scanner);
                }

                return(compositeScanner);
            }

            if (scanners.Length == 1)
            {
                return(scanners.First());
            }

            throw new ArgumentOutOfRangeException(nameof(config.Scanners));
        }
Esempio n. 3
0
 public StringFormatScanner(
     IScannerConfig config,
     IScanPreprocessor preprocessor,
     IHashProvider <string> hashProvider)
     : base(config, preprocessor, hashProvider)
 {
 }
Esempio n. 4
0
 public SingleLineScanner(
     IScannerConfig config,
     IScanPreprocessor preprocessor,
     IHashProvider <string> hashProvider)
 {
     _config       = config;
     _preprocessor = preprocessor;
     _hashProvider = hashProvider;
     _results      = new HashSet <ScanResult>();
 }
Esempio n. 5
0
        public MultiLineScanner(
            IScannerConfig config,
            IScanPreprocessor preprocessor,
            IHashProvider <string> hashProvider)
        {
            _config            = config;
            _preprocessor      = preprocessor;
            _hashProvider      = hashProvider;
            _singleLineScanner = new SingleLineScanner(config, preprocessor, hashProvider);

            _lines   = new LimitedStack <Line>(BufferSize);
            _results = new HashSet <ScanResult>();
        }