private string HandleFileLine(string line, CCOLCodeGeneratorPlugin plugin) { string writeline = line; CCOLGeneratorVisualSettingsModel settings = null; switch (plugin.Controller.Data.CCOLVersie) { case Models.Enumerations.CCOLVersieEnum.CCOL8: settings = CCOLGeneratorSettingsProvider.Default.Settings.VisualSettings; break; case Models.Enumerations.CCOLVersieEnum.CCOL9: settings = CCOLGeneratorSettingsProvider.Default.Settings.VisualSettingsCCOL9; break; case Models.Enumerations.CCOLVersieEnum.CCOL95: settings = CCOLGeneratorSettingsProvider.Default.Settings.VisualSettingsCCOL95; break; } var _ccolinclpaths = settings.CCOLIncludesPaden; var _ccollibs = settings.CCOLLibs; var _ccollibsnotig = settings.CCOLLibsPathNoTig; var _ccollibspath = settings.CCOLLibsPath; var _ccolppdefs = settings.CCOLPreprocessorDefinitions; var _ccolrespath = settings.CCOLResPath; // Replace all if (writeline.Contains("__")) { string prepro = _ccolppdefs; if (string.IsNullOrEmpty(prepro)) { prepro = ""; } writeline = writeline.Replace("__CONTROLLERNAME__", plugin.Controller.Data.Naam); writeline = writeline.Replace("__GUID__", Guid.NewGuid().ToString()); string ccollibspath = _ccollibspath == null ? "" : _ccollibspath.Remove(_ccollibspath == null ? 0 : _ccollibspath.Length - 1); if (!ccollibspath.EndsWith("\\")) { ccollibspath = ccollibspath + "\\"; } writeline = writeline.Replace("__CCOLLIBSDIR__", ccollibspath == null ? "" : ccollibspath); writeline = writeline.Replace("__CCOLLIBSDIRNOTIG__", _ccollibsnotig == null ? "" : _ccollibsnotig); writeline = writeline.Replace("__CCOLLLIBS__", _ccollibs == null ? "" : _ccollibs); string ccolrespath = _ccolrespath == null ? "" : _ccolrespath.Remove(_ccolrespath == null ? 0 : _ccolrespath.Length - 1); if (!ccolrespath.EndsWith("\\")) { ccolrespath = ccolrespath + "\\"; } writeline = writeline.Replace("__CCOLLRESDIR__", ccolrespath == null ? "" : ccolrespath); writeline = writeline.Replace("__ADDITIONALINCLUDEDIRS__", _ccolinclpaths == null ? "" : _ccolinclpaths); writeline = writeline.Replace("__PREPROCESSORDEFS__", prepro == null ? "" : prepro); } // If conditions if (!string.IsNullOrWhiteSpace(line)) { var lineif = Regex.IsMatch(line, @"^\s*__IF;.*"); var lineelif = Regex.IsMatch(line, @"^\s*__ELIF;.*"); var lineelse = Regex.IsMatch(line, @"^\s*__ELSE__*"); bool result = false; if (lineif || lineelif && !_prevCondition) { #region Conditions var conditionsString = Regex.Replace(line, @"^\s*__(IF|ELIF);([A-Z0-9;!]+)__.*", "$2"); var conditions = conditionsString.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var condition in conditions) { var invert = condition.StartsWith("!"); var actualCondition = condition.Replace("!", ""); switch (actualCondition) { case "IGT": result = plugin.Controller.Data.CCOLVersie >= Models.Enumerations.CCOLVersieEnum.CCOL95 && plugin.Controller.Data.Intergroen; break; case "CCOL9ORHIGHER": result = plugin.Controller.Data.CCOLVersie >= Models.Enumerations.CCOLVersieEnum.CCOL9; break; case "CCOL95ORHIGHER": result = plugin.Controller.Data.CCOLVersie >= Models.Enumerations.CCOLVersieEnum.CCOL95; break; case "OV": result = plugin.Controller.OVData.OVIngrepen != null && plugin.Controller.OVData.OVIngrepen.Any() || plugin.Controller.OVData.HDIngrepen != null && plugin.Controller.OVData.HDIngrepen.Any(); break; case "MV": result = plugin.Controller.Data.KWCType != Models.Enumerations.KWCTypeEnum.Geen; break; case "MVVIALIS": result = plugin.Controller.Data.KWCType == Models.Enumerations.KWCTypeEnum.Vialis; break; case "MVOVERIG": result = plugin.Controller.Data.KWCType != Models.Enumerations.KWCTypeEnum.Vialis && plugin.Controller.Data.KWCType != Models.Enumerations.KWCTypeEnum.Geen; break; case "PTP": case "KS": result = plugin.Controller.PTPData.PTPKoppelingen != null && plugin.Controller.PTPData.PTPKoppelingen.Any(); break; case "MS": result = plugin.Controller.Data.CCOLMulti; break; case "SYNC": result = plugin.Controller.InterSignaalGroep.Gelijkstarten.Any() || plugin.Controller.InterSignaalGroep.Voorstarten.Any(); break; case "HS": result = plugin.Controller.HalfstarData.IsHalfstar; break; default: result = false; break; } if (invert) { result = !result; } if (!result) { break; } #endregion // Conditions } } else if (lineelse && !_prevCondition) { result = true; } if ((lineif || lineelif || lineelse) && !result) { writeline = null; if (lineif) { _prevCondition = false; } } else if (lineif || lineelif || lineelse) { writeline = Regex.Replace(writeline, @"^(\s*)__(IF|ELIF|ELSE)[A-Z0-9;!]*__", "$1"); _prevCondition = true; } } return(writeline); }