public TableDefinition(TableBlockType type, IEnumerable<ItemDefinition> rows, string headerText) { this.Type = type; this.Rows = rows.ToArray(); this.Title = headerText; }
public TableDefinition(TableBlockType type, IEnumerable <ItemDefinition> rows, string headerText) { this.Type = type; this.Rows = rows.ToArray(); this.Title = headerText; }
/// <summary> /// Convert a tablespec block into one of our internal object model representations /// </summary> /// <param name="tableSpecBlock"></param> /// <param name="lastHeaderBlock"></param> /// <param name="errors"></param> /// <returns></returns> public static TableDefinition ParseTableSpec(Block tableSpecBlock, Block lastHeaderBlock, out ValidationError[] errors) { List <ValidationError> discoveredErrors = new List <ValidationError>(); List <ItemDefinition> items = new List <ItemDefinition>(); var tableShape = tableSpecBlock.Table; TableBlockType discoveredTableType = TableBlockType.Unknown; string headerText = null; // Try matching based on header if (null != lastHeaderBlock && null != lastHeaderBlock.Content) { headerText = lastHeaderBlock.Content; discoveredTableType = CommonHeaderMatch(headerText); } // Try matching based on shape if (discoveredTableType == TableBlockType.Unknown && null != tableSpecBlock.Table) { discoveredTableType = TableShapeMatch(tableShape); } switch (discoveredTableType) { case TableBlockType.ErrorCodes: items.AddRange(ParseErrorTable(tableShape)); break; case TableBlockType.PathParameters: items.AddRange(ParseParameterTable(tableShape, ParameterLocation.Path)); break; case TableBlockType.ResourcePropertyDescriptions: case TableBlockType.RequestObjectProperties: case TableBlockType.ResponseObjectProperties: items.AddRange(ParseParameterTable(tableShape, ParameterLocation.JsonObject)); break; case TableBlockType.HttpHeaders: items.AddRange(ParseHeadersTable(tableShape)); break; case TableBlockType.QueryStringParameters: items.AddRange(ParseParameterTable(tableShape, ParameterLocation.QueryString)); break; case TableBlockType.EnumerationValues: items.AddRange(ParseEnumerationTable(tableShape)); break; case TableBlockType.AuthScopes: items.AddRange(ParseAuthScopeTable(tableShape)); break; case TableBlockType.Unknown: discoveredErrors.Add(new ValidationMessage(null, "Ignored unclassified table: headerText='{0}', tableHeaders='{1}'", headerText, tableShape.ColumnHeaders.ComponentsJoinedByString(","))); break; default: discoveredErrors.Add(new ValidationMessage(null, "Ignored table: classification='{2}', headerText='{0}', tableHeaders='{1}'", headerText, tableShape.ColumnHeaders.ComponentsJoinedByString(","), discoveredTableType)); break; } errors = discoveredErrors.ToArray(); return(new TableDefinition(discoveredTableType, items, headerText)); }