Exemplo n.º 1
0
 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;
     }
 }
Exemplo n.º 2
0
 public ConfigFileHandler(IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs, IFileSystem fileSystem, string fileName = "ConfigFile.ocff")
 {
     FileSystem       = fileSystem;
     ComputeFuncs     = computeFuncs;
     EnumerationFuncs = enumerationFuncs;
     ConfigData       = new ConfigData();
     FileName         = fileName;
 }
Exemplo n.º 3
0
 public ConfigSection(string key, List <string> valueList, bool isStringHeader, IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs) : this(key, string.Join("\n", valueList), isStringHeader, computeFuncs, enumerationFuncs)
 {
 }
Exemplo n.º 4
0
 public ConfigFileHandler(IComputeFunc computeFuncs, IEnumerationFunc enumerationFuncs, string fileName = "ConfigFile.ocff") : this(computeFuncs, enumerationFuncs, new FileSystem(), fileName)
 {
 }
Exemplo n.º 5
0
        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));
                }
            }
        }