internal void ParsePropertiesSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } }
internal void ParsePageControlsSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.PageControl)) { ParsePageControl(chunk); } }
internal void ParseActionList(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.PageAction)) { ParsePageAction(chunk); } }
internal void ParseFieldsSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.TableField)) { ParseTableField(chunk); } }
internal void ParseReportControlsSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.FormControl)) { ParseReportControl(chunk); } }
internal void ParseSectionsSection(Lines lines, ObjectType objectType) { foreach (var chunk in lines.Chunks(Patterns.BeginClassicSection)) { ParseReportSection(chunk, objectType); } }
internal void ParseFieldGroupsSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.FieldGroup)) { ParseFieldGroup(chunk); } }
internal void ParseQueryElementsSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.QueryElement)) { ParseQueryElement(chunk); } }
internal void ParseDataItemsSection(Lines lines, ObjectType objectType) { foreach (var chunk in lines.Chunks(Patterns.BeginSection)) { ParseReportDataItem(chunk, objectType); } }
internal void ParseApplication(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.ObjectSignature)) { ParseObject(chunk); } }
internal void ParseObject(Lines lines) { var match = lines.FirstLineMustMatch(Patterns.ObjectSignature); var objectType = match.Groups [1].Value.ToEnum <ObjectType>(); var objectID = match.Groups [2].Value.ToInteger(); var objectName = match.Groups [3].Value; Listener.OnBeginObject(objectType, objectID, objectName); lines.FirstLineMustMatch(Patterns.BeginObject); while (lines.LastLineTryMatch(Patterns.BlankLine)) { ; } lines.LastLineMustMatch(Patterns.EndObject); // Because of the odd indentation of RDLData, we need to extract it // first (if present), so that the remaining lines follow the normal // section pattern. if (objectType == ObjectType.Report) { ParseRdlDataSection(lines); } lines.Unindent(2); foreach (var chunk in lines.Chunks(Patterns.SectionSignature)) { ParseSection(chunk, objectType); } Listener.OnEndObject(); }
internal void ParseKeysSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.TableKey)) { ParseTableKey(chunk); } }
internal void ParseLabelsSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.ReportLabel)) { ParseReportLabel(chunk); } }
internal void ParseFormMenuItems(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.MenuItem)) { ParseFormMenuItem(chunk); } }
internal void ParseMenuNodesSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.MenuSuiteNode)) { ParseMenuSuiteNode(chunk); } }
internal void ParseDataPortFieldsSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.DataportField)) { ParseDataPortField(chunk); } }
internal void ParseDatasetSection(Lines lines) { foreach (var chunk in lines.Chunks(Patterns.ReportElement)) { ParseReportElement(chunk); } }
internal void ParseReportLabelProperties(Lines lines) { lines.LastLineMustMatch(Patterns.EndReportLabel); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } }
internal void ParseTableFieldProperties(Lines lines) { lines.LastLineMustMatch(Patterns.EndTableField); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } }
internal void ParsePageActionProperties(Lines lines) { lines.LastLineMustMatch(Patterns.EndPageAction); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } }
internal void ParseFieldGroupProperties(Lines lines) { lines.LastLineMustMatch(Patterns.EndFieldGroup); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, false); } }
internal void FormMenuItemProperties(Lines lines) { lines.LastLineMustMatch(Patterns.EndMenuItem); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } }
internal void ParseFormControlProperties(Lines lines) { lines.LastLineMustMatch(Patterns.BlankLine); lines.LastLineMustMatch(Patterns.EndPageControl); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } }
internal void ParseXmlPortElementProperties(Lines lines) { lines.LastLineMustMatch(Patterns.BlankLine); lines.LastLineMustMatch(Patterns.EndXmlPortElement); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } }
internal void ParseRequestPageSection(Lines lines, ObjectType objectType) { Listener.OnBeginRequestPage(); foreach (var chunk in lines.Chunks(Patterns.SectionSignature)) { ParseSection(chunk, objectType, true); } Listener.OnEndRequestPage(); }
internal void ParseReportDataItem(Lines lines, ObjectType objectType) { lines.FirstLineMustMatch(Patterns.BeginClassicSection); lines.LastLineMustMatch(Patterns.EndDataItem); lines.Unindent(2); Listener.OnBeginReportDataItem(); foreach (var chunk in lines.Chunks(Patterns.SectionSignature)) { ParseSection(chunk, objectType); } Listener.OnEndReportDataItem(); }
internal void ParseMenuSuiteNode(Lines lines) { var match = lines.FirstLineMustMatch(Patterns.MenuSuiteNode); var nodeType = match.Groups[1].Value.ToMenuSuiteNodeType(); var nodeID = match.Groups[2].Value.ToGuid(); var nodeSeparator = match.Groups[3].Value; Listener.OnBeginMenuSuiteNode(nodeType, nodeID); if (nodeSeparator == ";") { lines.Unindent(60); lines.LastLineMustMatch(Patterns.EndMenuSuiteNode); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } } Listener.OnEndMenuSuiteNode(); }
internal void ParseQueryElement(Lines lines) { var match = lines.FirstLineMustMatch(Patterns.QueryElement); var elementID = match.Groups[1].Value.ToInteger(); var elementIndentation = match.Groups[2].Value.ToNullableInteger(); var elementType = match.Groups[3].Value.ToEnum <QueryElementType>(); var elementName = match.Groups[4].Value.Trim(); var propertyIndentation = (lines.First().Length - lines.First().TrimStart().Length); Listener.OnBeginQueryElement(elementID, elementIndentation, elementName, elementType); lines.Unindent(propertyIndentation); lines.LastLineMustMatch(Patterns.BlankLine); lines.LastLineMustMatch(Patterns.EndQueryElement); foreach (var chunk in lines.Chunks(Patterns.PropertySignature)) { ParseProperty(chunk, true); } Listener.OnEndQueryElement(); }