示例#1
0
        public void Test_can_parse_arbitrary_id_as_start_node(string id)
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery($"from {id}");

            CmsqlParser.FromClauseContext parseTree = cmsqlParser.fromClause();

            FromClauseVisitor   visitor   = new FromClauseVisitor();
            CmsqlQueryStartNode startNode = visitor.VisitFromClause(parseTree);

            startNode.StartNodeId.ShouldBeEquivalentTo(id);
            startNode.StartNodeType.ShouldBeEquivalentTo(CmsqlQueryStartNodeType.Id);
        }
示例#2
0
        public void Test_can_parse_root_as_start_node()
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery("from root");

            CmsqlParser.FromClauseContext parseTree = cmsqlParser.fromClause();

            FromClauseVisitor   visitor   = new FromClauseVisitor();
            CmsqlQueryStartNode startNode = visitor.VisitFromClause(parseTree);

            startNode.StartNodeId.Should().BeNullOrEmpty();
            startNode.StartNodeType.ShouldBeEquivalentTo(CmsqlQueryStartNodeType.Root);
        }
示例#3
0
        private PageReference GetStartSearchFromNode(CmsqlQueryStartNode startNode)
        {
            switch (startNode.StartNodeType)
            {
            case CmsqlQueryStartNodeType.Start:
                return(ContentReference.StartPage);

            case CmsqlQueryStartNodeType.Root:
                return(ContentReference.RootPage);

            case CmsqlQueryStartNodeType.Id:
                if (int.TryParse(startNode.StartNodeId, out int rootNodeId))
                {
                    return(new PageReference(rootNodeId));
                }
                break;
            }
            return(PageReference.EmptyReference);
        }