public void AppendToClass(IComponentFileCreator parentClass, AutoElementData appenderElement) { string ctorBulk = GetWaiterBulk(appenderElement.Selector); parentClass.InsertToCtor(ctorBulk); parentClass.AddUsing("OpenQA.Selenium.Support.UI"); }
private void RunCustomAttributesAppends(AutoElementData current, IComponentFileCreator parentClassCreator) { current.AutoAttributes .Where(_attributesContainer.ContainsCustomAttribute) .Select(_attributesContainer.GetElementAttribute) .ForEach(att => RunAppender(parentClassCreator, att, current)); }
public void AppendToClass(IComponentFileCreator parentClass, AutoElementData appenderElement) { ElementSelectorData[] elements = appenderElement.InnerChildrens.Select(ConversionsUtils.ConvertToElementSelectorData) .ToArray(); bool ctorContainsDriver; string type; string selector = appenderElement.Selector; if (elements.Length > 0) { var elementAddin = _addinContainer.GetAddin(elements[0].Type); type = elementAddin != null ? elementAddin.Type : elements[0].Name; selector = elements[0].FullSelector; ctorContainsDriver = _addinContainer.GetAddin(type)?.CtorContainsDriver ?? false; } else { type = "string"; ctorContainsDriver = false; } string name = SelectorUtils.TryGetClassOrPropNameFromSelector(appenderElement.Selector, out name) ? name : type + "List"; ListItemAddin addin = new ListItemAddin { Type = type, CtorContainsDriver = ctorContainsDriver }; parentClass.AddProperty(parentClass.PropertyGenerator.CreateProperty(addin, name, selector)); }
public void AddFileCreatorComponent(string key, IComponentFileCreator newComponentFileCreator, bool setAsDefault = false) { _fileCreators[key] = newComponentFileCreator; if (setAsDefault) { _defaultFileCreator = newComponentFileCreator; } }
private void RunAppender(IComponentFileCreator parentClassCreator, IComponentClassAppender appender, AutoElementData element) { if (parentClassCreator != null) { appender.AppendToClass(parentClassCreator, element); } }
private IEnumerable <ComponentGeneratorOutput> GenerateAppendersOutputs(string keyword, IEnumerable <AutoElementData> elements) { IComponentFileCreator parent = _fileCreatorContainer.GetFileCreator(keyword); IEnumerable <AutoElementData> appendersElements = elements .Where(IsAppenderElement); return(GenerateClassesForElements(appendersElements, parent)); }
public void AppendToClass(IComponentFileCreator parentClass, AutoElementData appenderElement) { ElementSelectorData element = ConversionsUtils.ConvertToElementSelectorData(appenderElement); KeyValuePair <Property, Property> propertyWithPrivateWebElement = parentClass.PropertyGenerator.CreatePropertyWithPrivateWebElement( _addinContainer.GetAddin(element.Type) ?? DefaultAddin.Create(element.Type), element.Name, element.FullSelector); string privateWebElement = propertyWithPrivateWebElement.Key.Name; parentClass.AddProperty(GetProperty(privateWebElement)); }
private ElementSelectorData TransformFileCreatorToAddinsLike(ElementSelectorData child) { if (!IsAddinElement(child)) { IComponentFileCreator fileCreator = _fileCreatorContainer.GetFileCreator(child.Type); if (fileCreator != null) { _addinContainer.AddAddin(fileCreator.MakeAddin(child.FullSelector)); child.Type = child.Name; } } return(child); }
private IEnumerable <ComponentGeneratorOutput> GenerateFileCreatorOutputs(string selector, AutoElementData[] children, string keyWord) { ElementSelectorData[] elements = children .Select(ConversionsUtils.ConvertToElementSelectorData) .Select(TransformFileCreatorToAddinsLike) .ToArray(); IComponentFileCreator parent = _fileCreatorContainer.GetFileCreator(keyWord); IEnumerable <ComponentGeneratorOutput> outputs = GenerateClassesForElements(children, parent); if (parent != null) { ComponentGeneratorOutput parentOutput = parent.GenerateComponentClass(selector, elements); outputs = outputs.Union(new[] { parentOutput }, new ComponentOutputComparer()); } return(outputs); }
private IEnumerable <ComponentGeneratorOutput> CreateCsOutput(string selector, AutoElementData current, IComponentFileCreator parentClassCreator = null) { RunCustomAttributesAppends(current, parentClassCreator); if (IsBasicElement(current)) { return(new List <ComponentGeneratorOutput>()); } string keyWord = SelectorUtils.GetKeyWordFromSelector(selector); AutoElementData[] children = current.InnerChildrens as AutoElementData[] ?? current.InnerChildrens.ToArray(); AutoElementData[] filteredChildren = children .Where(elm => !IsAppenderElement(elm)) .ToArray(); if (IsAppenderElement(current)) { return(GenerateAppenderOutputs(current, parentClassCreator, keyWord, filteredChildren)); } return(GenerateFileCreatorOutputs(selector, keyWord, children, filteredChildren)); }
private IEnumerable <ComponentGeneratorOutput> GenerateClassesForElements(IEnumerable <AutoElementData> children, IComponentFileCreator parent = null) { IEnumerable <ComponentGeneratorOutput> outputs = new List <ComponentGeneratorOutput>(); foreach (AutoElementData child in children) { outputs = outputs.Union(CreateCsOutput(child.Selector, child, parent), new ComponentOutputComparer()); } return(outputs); }
private IEnumerable <ComponentGeneratorOutput> GenerateAppenderOutputs(AutoElementData current, IComponentFileCreator parentClassCreator, string keyWord, IEnumerable <AutoElementData> filteredChildren) { RunAppender(parentClassCreator, _classAppenderContainer.GetAppender(keyWord), current); return(GenerateClassesForElements(filteredChildren)); }