public override bool Visit(Bracket node)
        {
            // SQLをもたないかっこはそのまま
            if (!node.HasQuery)
            {
                AddResultSql(node.OriginalValue);
                return base.Visit(node);
            }

            if (node.Value[0] == '(')
            {
                //TODO 外だしする
                Regex regex = new Regex("(?<target>\\t*,?)\\t");
                Match match = regex.Match(_currentLine);
                if (match.Success)
                {
                    // カンマのあとのタブを消す
                    _currentLine = match.Groups["target"].Value;
                }
                AddResultSql(node.Value);
                // +3はPadが切り捨て処理なので切り上げになる
                _Indents.Push(_tabTool.Pad(string.Empty,_currentLine.Length+3));
                AddNewLineResultSql();
            }
            else
            {
                _Indents.Pop();
                _LeftIndentSize.Pop();
                AddNewLineResultSql();
                AddResultSql(node.Value);
            }
            return base.Visit(node);
        }
Exemple #2
0
 private void SetParentOpenBracket(IAstNode node)
 {
     // Statementなど接続ノードはValueが空なのでBracket判定が必要
     if (node.GetType() == typeof(Bracket) &&
         node.Value[0] == '(')
     {
         Bracket openNode = (Bracket)node;
         // 自分に対応するOpenかっこをみつけたら終了
         HasQuery   = openNode.HasQuery;
         ParentNode = openNode.ParentNode;
         Level      = openNode.ParentNode.Level;
         ParentNode.SetParentInChildNode(this);
     }
     else if (node.ParentNode != null)
     {
         // みつかるまで、親を探す
         SetParentOpenBracket(node.ParentNode);
     }
     // なにもみつからなければ、親はからになる
 }
 public virtual bool Visit(Bracket node)
 {
     return true;
 }
 public virtual bool Transform(Bracket node)
 {
     return true;
 }