public static IList <string> IntegrateExistingStylesAndAlterations(string textToParse, StyleDefinition styleDef, bool doStylesFirst) { if (string.IsNullOrEmpty(textToParse)) { return(new List <string>()); } var styleParts = new List <string>(); styleParts.AddRange(textToParse.ToUpperInvariant().Split(SplittingStrings.ToArray(), StringSplitOptions.RemoveEmptyEntries)); styleParts = styleParts.Where(x => SplittingStrings.Where(y => y.Trim().ToUpperInvariant().Contains(x.Trim().ToUpperInvariant())).Count() == 0).ToList(); var partsToRemove = new List <string>(); int?idx = null; foreach (var part in styleParts) { #region search main style if (doStylesFirst) { if (MainStylesRepository.TryRetrieveValueIndex(part, ref idx)) { partsToRemove.Add(part); if (idx.HasValue) { try { styleDef.ThrowIfAddMainStyleIsForbidden(); } catch (InvalidMusicStyleParsingException) { var message = string.Format("while parsing style part '{0}' we detect too many main styles. string '{1}' will be ignored", textToParse, part); Logging.Logging.Instance.LogError(string.Format("A turnaround will happen : {0}", message), ErrorLevel.Info); continue; } styleDef.AddMainStyleIdx(idx.Value); } continue; } } #endregion #region search style alteration if (StyleAlterationsRepository.TryRetrieveValueIndex(part, ref idx)) { partsToRemove.Add(part); if (idx.HasValue) { try { styleDef.ThrowIfAddStyleAlterationIsForbidden(); } catch (InvalidMusicStyleParsingException) { var message = string.Format("while parsing style part '{0}' we detect too many style alterations. string '{1}' will be ignored", textToParse, part); Logging.Logging.Instance.LogError(string.Format("A workaround will happen : {0}", message), ErrorLevel.Info); continue; } styleDef.AddStyleAlterationIdx(idx.Value); } continue; } #endregion #region search main style if (!doStylesFirst) { if (MainStylesRepository.TryRetrieveValueIndex(part, ref idx)) { partsToRemove.Add(part); if (idx.HasValue) { try { styleDef.ThrowIfAddMainStyleIsForbidden(); } catch (InvalidMusicStyleParsingException) { var message = string.Format("while parsing style part '{0}' we detect too many main styles. string '{1}' will be ignored", textToParse, part); Logging.Logging.Instance.LogError(string.Format("A turnaround will happen : {0}", message), ErrorLevel.Info); continue; } styleDef.AddMainStyleIdx(idx.Value); } continue; } } #endregion } foreach (var part in partsToRemove) { styleParts.Remove(part); } return(styleParts); }