public void SaveLearnedData(string configDir)
        {
            var valueStore   = new ValueStore();
            var stepDefStore = new StepDefStore(valueStore);

            foreach (var stepDefRegex in _stepDefRegexes)
            {
                var paramNames = stepDefRegex.Key.GetValidNames();
                for (int paramNumber = 0; paramNumber < paramNames.Count; paramNumber++)
                {
                    var group    = new ValueStoreGroup(paramNames[paramNumber]);
                    var tmpItems = new HashSet <ValueStoreItem>(ValueStoreItem.RuValueComparer);
                    foreach (var gherkinStep in stepDefRegex.Value)
                    {
                        var item = ValueStoreItem.FromMacros(gherkinStep.Text, paramNumber);
                        if (item == default(ValueStoreItem))
                        {
                            continue;
                        }
                        if (!tmpItems.Contains(item))
                        {
                            tmpItems.Add(item);
                        }
                    }
                    group.Items.AddRange(tmpItems.ToList());
                    valueStore.AddGroup(group);
                    stepDefStore.AddStepDef(stepDefRegex.Key);
                }
            }
            valueStore.Save(ValueStoreConfigsDir, "learned");
            stepDefStore.Save(StepDefStoreConfigsDir, "learned");
        }
Пример #2
0
 public StepDefStore(string stepDefsDir, ValueStore valueStore) : this(valueStore) {
     if (!Directory.Exists(stepDefsDir))
     {
         return;
     }
     var files = Directory.EnumerateFiles(stepDefsDir, "*.xml");
     foreach (var file in files)
     {
         var stepDefs = ParseStepDef(file);
         _stepDefs.AddRange(stepDefs);
     }
 }
 public FeatureLocalizer(string configFolder)
 {
     ConfigFolder = configFolder;
     if (!Directory.Exists(ValueStoreConfigsDir))
     {
         Directory.CreateDirectory(ValueStoreConfigsDir);
     }
     if (!Directory.Exists(StepDefStoreConfigsDir))
     {
         Directory.CreateDirectory(StepDefStoreConfigsDir);
     }
     ValueStore   = new ValueStore(ValueStoreConfigsDir);
     StepDefStore = new StepDefStore(StepDefStoreConfigsDir, ValueStore);
 }
Пример #4
0
        private static List <StepDefParameter> GetStepDefParameters(Regex regex, ValueStore valueStore)
        {
            var res   = new List <StepDefParameter>();
            var names = regex.GetValidNames();

            foreach (var name in names)
            {
                if (valueStore.StoreGroups.ContainsKey(name))
                {
                    var group = valueStore.StoreGroups[name];
                    var param = new StepDefParameter(group, 0);
                    res.Add(param);
                }
            }
            return(res);
        }
Пример #5
0
        public static StepDefParameter Load(UInt16 index, XElement node, ValueStore valueStore)
        {
            if (node == null || !node.HasAttributes)
            {
                return(null);
            }
            var vsGroupAttr = node.Attribute(ValueStoreGroupAttributename);

            if (vsGroupAttr == null || string.IsNullOrWhiteSpace(vsGroupAttr.Value))
            {
                return(null);
            }
            var vsGroupName = vsGroupAttr.Value;

            if (!valueStore.StoreGroups.ContainsKey(vsGroupName))
            {
                return(null);
            }
            var vsGroup = valueStore.StoreGroups[vsGroupName];
            var res     = new StepDefParameter(vsGroup, index);

            return(res);
        }
Пример #6
0
        public static StepDef Load(XElement node, ValueStore valueStore)
        {
            var re = node.Descendants(ReNodeName).FirstOrDefault();

            if (re == null)
            {
                return(null);
            }
            var reStr = GetRexpFromReNode(re.Value);

            if (string.IsNullOrEmpty(re.Value))
            {
                return(null);
            }
            var    sd       = new StepDef(reStr);
            UInt16 i        = 0;
            var    sdParams = node.Descendants(ParamNodeName)
                              .Select(n => StepDefParameter.Load(i++, n, valueStore))
                              .ToList();

            sd.Params.AddRange(sdParams);
            return(sd);
        }
Пример #7
0
 public StepDefStore(ValueStore valueStore)
 {
     _stepDefs   = new List <StepDef>();
     _valueStore = valueStore;
 }
Пример #8
0
 public StepDef(Regex exp, ValueStore valueStore)
 {
     Exp    = exp;
     Params = GetStepDefParameters(exp, valueStore);
 }