static void Main(string[] args) { var widgetNames = new HashSet <string> { "dxChart", "dxDataGrid", "dxScheduler", "dxPieChart", "dxRangeSelector", "dxSparkline", "dxPivotGrid" }; var ns = new[] { "DevExtreme.AspNet.TagHelpers" }; var tagInfoPreProcessor = new TagInfoPreProcessor(); var generator = new Generator(outputRoot: "../"); generator.DeleteGeneratedFiles(ns); foreach (var obj in GetIntellisenseObjectsFor(widgetNames)) { generator.GenerateClass(new TagInfo(obj, tagInfoPreProcessor, ns, null)); } generator.GenerateEnums(ns, "Enums", EnumRegistry.KnownEnumns); generator.GenerateTargetElementsClass( ns, "InnerScriptTagHelper", TargetElementsRegistry.InnerScriptTargets.Select(CreateInnerScriptTarget) ); generator.GenerateTargetElementsClass( ns.Concat("Data"), "LoadActionDatasourceTagHelper", TargetElementsRegistry.DatasourceTargets.Select(GetDataSourceTargetFactory("load-action")) ); generator.GenerateTargetElementsClass( ns.Concat("Data"), "ItemsDatasourceTagHelper", TargetElementsRegistry.DatasourceTargets.Select(GetDataSourceTargetFactory("items")) ); generator.GenerateTargetElementsClass( ns.Concat("Data"), "UrlDatasourceTagHelper", TargetElementsRegistry.DatasourceTargets.Select(GetDataSourceTargetFactory("url")) ); generator.GenerateClass( CreatePivotGridDatasourceTag(tagInfoPreProcessor, ns), "PivotGridDatasourceTagHelper", isPartial: true, generateKeyProps: false ); Console.WriteLine("Done"); }
static TagInfo CreatePivotGridDatasourceTag(TagInfoPreProcessor tagInfoPreProcessor, IEnumerable <string> ns) { var xDoc = XDocument.Load($"meta/IntellisenseData_{DX_VERSION}_spec.xml"); var element = new XElement(xDoc.Root.Elements("IntellisenseObjectInfo").Single(el => el.GetName() == "PivotGridDataSource")); element.SetName("datasource"); element.GetPropElement("store").Remove(); var result = new TagInfo(element, tagInfoPreProcessor, ns.Concat("Data"), parentTagName: "dx-pivot-grid"); result.Key = "dataSource"; result.BaseClassName = null; return(result); }
public TagInfo(XElement element, TagInfoPreProcessor preProcessor, IEnumerable <string> ns, string parentTagName) { _preProcessor = preProcessor; Element = element; Namespace = ns; ParentTagName = parentTagName; Key = Element.GetName(); foreach (var prop in element.Element("Properties").Elements("IntellisenseObjectPropertyInfo")) { if (prop.IsChildTagElement()) { ChildTagElements.Add(prop); } else { PropElements.Add(prop); } } preProcessor.Process(this); }