Ejemplo n.º 1
0
        public override int Transform([NotNull] GlobalContext globalContext, Ignore Ignore,
                                      [NotNull] TransformOptions transformOptions, [NotNull][ItemNotNull] IEnumerable <Dependency> dependencies,
                                      [NotNull] List <Dependency> transformedDependencies)
        {
            var leftMatches  = new HashSet <Item>();
            var rightMatches = new HashSet <Item>();

            int  n          = 0;
            bool ignoreCase = globalContext.IgnoreCase;

            foreach (var d in dependencies.Where(d => d.IsMarkerMatch(transformOptions.Matches, transformOptions.Excludes)))
            {
                leftMatches.Add(d.UsingItem);
                rightMatches.Add(d.UsedItem);
                if (transformOptions.ClearDependency)
                {
                    d.ClearMarkers();
                }
                else
                {
                    d.UnionWithMarkers(transformOptions.MarkersToAddOnDep);
                    d.RemoveMarkers(transformOptions.MarkersToRemoveOnDep, ignoreCase);
                }
                if (transformOptions.ResetBad)
                {
                    d.ResetBad();
                }
                if (transformOptions.ResetQuestionable)
                {
                    d.ResetQuestionable();
                }
                n++;
            }

            Log.WriteInfo($"Marked {n} dependencies");

            ReadOnlyMarkerSet markersToAddOnLeftMarkerSet  = new ReadOnlyMarkerSet(ignoreCase, transformOptions.MarkersToAddOnLeft);
            ReadOnlyMarkerSet markersToAddOnRightMarkerSet = new ReadOnlyMarkerSet(ignoreCase, transformOptions.MarkersToAddOnRight);

            // Items are modified afterwards - match loop above uses unchanged values
            foreach (var left in leftMatches)
            {
                MarkItem(transformOptions.ClearLeft, left, markersToAddOnLeftMarkerSet, transformOptions.MarkerPatternsToRemoveOnLeft, ignoreCase);
            }
            foreach (var right in rightMatches)
            {
                MarkItem(transformOptions.ClearRight, right, markersToAddOnRightMarkerSet, transformOptions.MarkerPatternsToRemoveOnRight, ignoreCase);
            }

            transformedDependencies.AddRange(dependencies);
            return(Program.OK_RESULT);
        }
Ejemplo n.º 2
0
 protected ReadOnlyItem([NotNull] ItemType type, string[] values) : base(type, values)
 {
     _markerSet = new ReadOnlyMarkerSet(type.IgnoreCase, markers: Enumerable.Empty <string>());
 }