예제 #1
0
 // TODO: these functions are very similar to the merge ones in ConfigMerger,
 // maybe do something about this
 private void ApplyMapOverride(RequireMap originalMap, RequireMap overrideMap)
 {
     foreach (var mapEl in overrideMap.MapElements)
     {
         var existing = originalMap.MapElements.Where(r => r.For.ToLower() == mapEl.For.ToLower()).FirstOrDefault();
         if (existing != null)
         {
             var finalReplacements = existing.Replacements
                                                 .Union(mapEl.Replacements)
                                                 .GroupBy(r => r.OldKey)
                                                 .Select(r => r.FirstOrDefault())
                                                 .ToList();
             existing.Replacements = finalReplacements;
         }
         else
         {
             originalMap.MapElements.Add(mapEl);
         }
     }
 }
예제 #2
0
 private RequireMap GetMap(XElement root)
 {
     var map = new RequireMap();
     map.MapElements = new List<RequireMapElement>();
     var mapEl = root.Descendants("map").FirstOrDefault();
     if (mapEl != null)
     {
         map.MapElements = mapEl.Descendants("replace")
                                     .Select(r => new RequireMapElement
                                                 {
                                                     For = r.Attribute("for").Value,
                                                     Replacements = r.Descendants("add")
                                                                         .Select(x => new RequireReplacement
                                                                                     {
                                                                                         NewKey = x.Attribute("new").Value,
                                                                                         OldKey = x.Attribute("old").Value
                                                                                     }).ToList()
                                                 }).ToList();
     }
     return map;
 }
예제 #3
0
        private RequireMap GetMap(XElement root)
        {
            var map = new RequireMap();
            map.MapElements = new List<RequireMapElement>();
            var mapEl = root.Element("map");
            if (mapEl != null)
            {
                map.MapElements = mapEl.Descendants("replace")
                                        .Select(MapElementReader)
                                        .ToList();
            }

            return map;
        }
예제 #4
0
        private RequireMap GetMap(JObject document)
        {
            var map = new RequireMap();
            map.MapElements = new List<RequireMapElement>();
            if (document != null && document["map"] != null)
            {
                map.MapElements = document["map"].Select(
                    r =>
                        {
                            var currentMap = new RequireMapElement();
                            currentMap.Replacements = new List<RequireReplacement>();
                            var prop = (JProperty)r;
                            currentMap.For = prop.Name;
                            var mapDefinition = prop.Value;
                            if (mapDefinition != null)
                            {
                                currentMap.Replacements = mapDefinition.Select(x => new RequireReplacement()
                                                                                        {
                                                                                            OldKey = ((JProperty)x).Name,
                                                                                            NewKey = ((JProperty)x).Value.ToString()
                                                                                        }).ToList();
                            }

                            return currentMap;
                        })
                        .ToList();
            }
            
            return map;
        }