예제 #1
0
 public BranchingStrategy(
     ILesserBranchRegex workItemRegex,
     IBranchesColorsAndRegices colorsAndRegices,
     Func <BranchingStrategy, ILesserBranchRegex, IBranchesColorsAndRegices, IEnumerable <IBranch>, IBranchesKnowledge> knowledgeMaker)
 {
     _workItemRegex    = workItemRegex;
     _colorsAndRegices = colorsAndRegices;
     _knowledgeMaker   = knowledgeMaker;
 }
예제 #2
0
        public void PreProcessAllBranches(IEnumerable <IBranch> branches, ILesserBranchRegex lesserBranchesRegex)
        {
            _lesserBranches.Clear();

            Regex r;

            if (!TryCreateRegex(lesserBranchesRegex, out r))
            {
                return;
            }

            string[] lesserBranches = branches.Select(b => b.Label).Where(b => r.IsMatch(b)).ToArray();
            foreach (string lesserBranch in lesserBranches)
            {
                _lesserBranches.Add(lesserBranch);
            }
        }
예제 #3
0
        public BranchesKnowledge(
            ILesserBranchRegex workItemRegex
            , IWorkItemBranchSelectorFactory workItemBranchSelectorFactory
            , IBranchesColorsAndRegices colorsAndRegices
            , IEnumerable <IBranch> branches
            , ILogger <BranchesKnowledge> logger
            )
        {
            _workItemRegex        = workItemRegex;
            _colorsAndRegices     = colorsAndRegices;
            _logger               = logger;
            _lesserBranchSelector = workItemBranchSelectorFactory.MakeSelector();

            _branchesToTypes        = new Dictionary <IBranch, BranchLogicalType>();
            _branchesInLogicalOrder = new List <IBranch>();

            Initialise(branches);
        }
예제 #4
0
        private bool TryCreateRegex(ILesserBranchRegex regexObject, out Regex regex)
        {
            regex = null;

            string regexString = regexObject?.RegexString;

            if (string.IsNullOrWhiteSpace(regexString))
            {
                return(false);
            }

            try
            {
                regex = new Regex(regexString);
            }
            catch
            {
                regex = null;
                return(false);
            }

            return(true);
        }
예제 #5
0
 public IBranchingStrategy GetStrategy(ILesserBranchRegex workItemRegex = null)
 {
     return(_strategyMaker(workItemRegex));
 }