Пример #1
0
        public static string GetFormatSql(IContext context, string sql)
        {
            sql = sql.Insert(sql.Length, SqlKeyWorld.WhiteSpace);
            var matches = SegmentUtil.GetMatch(sql);

            if (matches.Count == 0)
            {
                return(sql);
            }

            Func <string, string> getFormatSql = (argSql) =>
            {
                var grammar = new Grammar(matches, argSql);
                IEnumerable <Segment> segments = grammar.Parser();
                if (segments.Any())
                {
                    argSql = GetApplyGramarRuleSql(context, argSql, segments);
                }

                return(argSql);
            };

            var newSql = getFormatSql(sql);

            return(newSql);
        }
Пример #2
0
 public bool InRiver(List <DisplayNode> displayNodes, float x, float y)
 {
     for (int i = 0; i < displayNodes.Count - 1; i++)
     {
         DisplayNode point      = new DisplayNode((int)x, (int)y);
         DisplayNode riverNode1 = displayNodes[i];
         DisplayNode riverNode2 = displayNodes[i + 1];
         if (SegmentUtil.FindDistanceToSegmentRiver(point, riverNode1, riverNode2) < riverWidthConstant)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #3
0
        public static string GetApplyGramarRuleSql(IContext contex, string sql, IEnumerable <Segment> segments)
        {
            var oldSql = sql.Clone().ToString();
            var total  = segments.Count();

            for (var i = total - 1; i >= 0; i--)
            {
                var seg        = segments.ElementAt(i);
                var startIndex = seg.Start.Index;
                var endIndex   = seg.End.Index + seg.End.Length;
                sql = sql.Remove(startIndex, endIndex - startIndex);
                sql = sql.Insert(startIndex, SegmentUtil.BuildSql(contex, oldSql, seg));
            }

            return(sql);
        }
Пример #4
0
    public void FindDistanceToSegmentRiverTest()
    {
        DisplayNode dpnode  = new DisplayNode(4, 4);
        DisplayNode dpnode2 = new DisplayNode(4, 4);
        DisplayNode point   = new DisplayNode(6, 4);

        Assert.AreEqual(SegmentUtil.FindDistanceToSegmentRiver(point, dpnode, dpnode2), 2);
        dpnode  = new DisplayNode(4, 4);
        dpnode2 = new DisplayNode(6, 6);
        point   = new DisplayNode(6, 6);
        Assert.AreEqual(SegmentUtil.FindDistanceToSegmentRiver(point, dpnode, dpnode2), (double)0.0);
        dpnode  = new DisplayNode(12, 12);
        dpnode2 = new DisplayNode(18, 18);
        point   = new DisplayNode(6, 16);
        Assert.AreEqual(SegmentUtil.FindDistanceToSegmentRiver(point, dpnode, dpnode2), 7.211102550927978);
        dpnode  = new DisplayNode(24, 24);
        dpnode2 = new DisplayNode(18, 18);
        point   = new DisplayNode(6, 16);
        Assert.AreEqual(SegmentUtil.FindDistanceToSegmentRiver(point, dpnode, dpnode2), 12.165525060596439);
    }