Example #1
0
        private static ILogFormat Compile(LexPreset preset)
        {
            var compiler = new LexCompiler();

            var directory = GetCacheDirectory();

            LexCompiler.LexFormatScanners result;

            var presetAssembly = GetCachedAssembly(preset, directory);

            if (directory.Exists)
            {
                if (presetAssembly.Exists)
                {
                    using (var fileStream = presetAssembly.OpenRead())
                        result = compiler.LoadCompiled(fileStream);

                    if (result.Success)
                    {
                        return new LexLogFormat {
                                   SegmentsScannerType = result.SegmentsScannerType,
                                   RecordsScannerType  = result.RecordsScannerType
                        }
                    }
                    ;
                }
            }
            else
            {
                directory.Create();
            }

            using (var fileStream = presetAssembly.Create())
                result = compiler.Compile(
                    string.Concat(preset.CommonCode, Environment.NewLine, preset.SegmentCode),
                    string.Concat(preset.CommonCode, Environment.NewLine, preset.RecordCode),
                    fileStream);

            if (result.Success)
            {
                return new LexLogFormat {
                           SegmentsScannerType = result.SegmentsScannerType,
                           RecordsScannerType  = result.RecordsScannerType
                }
            }
            ;

            return(null);
        }
        private static ILogFormat Compile(LexPreset preset)
        {
            var compiler = new LexCompiler();

            var directory = GetCacheDirectory();

            LexCompiler.LexFormatScanners result;

            var presetAssembly = GetCachedAssembly(preset, directory);

            if (directory.Exists) {
                if (presetAssembly.Exists) {
                    using (var fileStream = presetAssembly.OpenRead())
                        result = compiler.LoadCompiled(fileStream);

                    if (result.Success)
                        return new LexLogFormat {
                            SegmentsScannerType = result.SegmentsScannerType,
                            RecordsScannerType = result.RecordsScannerType
                        };
                }
            } else
                directory.Create();

            using (var fileStream = presetAssembly.Create())
                result = compiler.Compile(
                    string.Concat(preset.CommonCode, Environment.NewLine, preset.SegmentCode),
                    string.Concat(preset.CommonCode, Environment.NewLine, preset.RecordCode),
                    fileStream);

            if (result.Success)
                return new LexLogFormat {
                    SegmentsScannerType = result.SegmentsScannerType,
                    RecordsScannerType = result.RecordsScannerType
                };

            return null;
        }