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); }
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); }
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); }
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); }