예제 #1
0
 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);
     }
 }
예제 #4
0
 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);
     }
 }
예제 #8
0
 internal void ParseQueryElementsSection(Lines lines)
 {
     foreach (var chunk in lines.Chunks(Patterns.QueryElement))
     {
         ParseQueryElement(chunk);
     }
 }
예제 #9
0
 internal void ParseDataItemsSection(Lines lines, ObjectType objectType)
 {
     foreach (var chunk in lines.Chunks(Patterns.BeginSection))
     {
         ParseReportDataItem(chunk, objectType);
     }
 }
예제 #10
0
 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();
        }
예제 #12
0
 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);
     }
 }
예제 #15
0
 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);
     }
 }
예제 #17
0
 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);
            }
        }
예제 #20
0
        internal void ParsePageActionProperties(Lines lines)
        {
            lines.LastLineMustMatch(Patterns.EndPageAction);

            foreach (var chunk in lines.Chunks(Patterns.PropertySignature))
            {
                ParseProperty(chunk, true);
            }
        }
예제 #21
0
        internal void ParseFieldGroupProperties(Lines lines)
        {
            lines.LastLineMustMatch(Patterns.EndFieldGroup);

            foreach (var chunk in lines.Chunks(Patterns.PropertySignature))
            {
                ParseProperty(chunk, false);
            }
        }
예제 #22
0
        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);
            }
        }
예제 #24
0
        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();
        }
예제 #28
0
        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();
        }