public ConfigSection(string key, string value, bool isStringHeader, IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs) { ComputeFuncs = computeFuncs; EnumerationFuncs = enumerationFuncs; Key = key; Value = value; RawValue = value; if (isStringHeader) { ReplaceVariables = new List <ConfigReplaceSet>(); ComputeVariables = new List <ConfigComputeSet>(); EnumerationVariables = new List <ConfigEnumerationSet>(); foreach (var item in RetrieveAllVariables('@')) { ReplaceVariables.Add(new ConfigReplaceSet(item.key, item.token)); } foreach (var item in RetrieveAllVariables('$')) { ComputeVariables.Add(new ConfigComputeSet(item.key, item.token, RetrieveFunc(item.key.TrimStart('$')))); } foreach (var item in RetrieveAllVariables('&')) { EnumerationVariables.Add(new ConfigEnumerationSet(item.key, item.token, GetEnumeration(item.key.TrimStart('&')))); } ReplaceAllVariables(); IsString = isStringHeader; } else { bool.Parse(value); IsString = isStringHeader; } }
public ConfigFileHandler(IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs, IFileSystem fileSystem, string fileName = "ConfigFile.ocff") { FileSystem = fileSystem; ComputeFuncs = computeFuncs; EnumerationFuncs = enumerationFuncs; ConfigData = new ConfigData(); FileName = fileName; }
public ConfigSection(string key, List <string> valueList, bool isStringHeader, IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs) : this(key, string.Join("\n", valueList), isStringHeader, computeFuncs, enumerationFuncs) { }
public ConfigFileHandler(IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs, string fileName = "ConfigFile.ocff") : this(computeFuncs, enumerationFuncs, new FileSystem(), fileName) { }
public ConfigParsedData ComputeAndReplace(IArguments arguments, IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs) { var newConfigData = new ConfigParsedData(); var dictionary = new Dictionary <string, List <string> >(); List <(string header, string value, List <IConfigSet> variables)> list = new List <(string, string, List <IConfigSet>)>(); var allKeys = TurnListConfigSectionIntoDict(); DataStore.Where(y => y.IsString).ToList().ForEach(x => { var keyValue = allKeys[x.Key]; list.Add((x.Key, keyValue, x.ReturnAllVariables())); }); foreach (var item in list) { StringBuilder stringBuilder = new StringBuilder(item.value); List <StringBuilder> stringBuilderList = new List <StringBuilder>() { stringBuilder }; foreach (var innerItem in item.variables) { if (innerItem is ConfigComputeSet) { var innerComputeItem = innerItem as ConfigComputeSet; stringBuilderList = stringBuilderList.SelectMany(y => GetParameter(innerComputeItem.Name, arguments, dictionary).Select(x => new StringBuilder(y.ToString().Replace(innerComputeItem.Token, innerComputeItem.Compute(x))))).ToList(); } else if (innerItem is ConfigEnumerationSet) { var innerEnumerationItem = innerItem as ConfigEnumerationSet; var enumeration = GetParameter(innerEnumerationItem.Name, arguments, dictionary).SelectMany(y => innerEnumerationItem.GetEnumerable(y)); stringBuilderList = stringBuilderList.SelectMany(y => enumeration.Select(x => new StringBuilder(y.ToString().Replace(innerEnumerationItem.Token, x)))).ToList(); } else { stringBuilderList = stringBuilderList.SelectMany(y => GetParameter(innerItem.Name, arguments, dictionary).Select(x => new StringBuilder(y.ToString().Replace(innerItem.Token, x)))).ToList(); } } AddConfigSections(item, stringBuilderList); dictionary.Add(item.header, stringBuilderList.Select(x => x.ToString()).ToList()); } newConfigData.AddRange(DataStore.Where(x => !x.IsString)); return(newConfigData); void AddConfigSections((string header, string value, List <IConfigSet> variables) item, List <StringBuilder> listOfStringBuilders) { foreach (var itemForEach in listOfStringBuilders) { var stringBuilderValue = itemForEach.ToString(); newConfigData.Add(new ConfigSection(item.header, stringBuilderValue, isStringHeader: true, computeFuncs: computeFuncs, enumerationFuncs: enumerationFuncs)); } } }