github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/ast/commentmap.go (about)

     1  // Copyright 2012 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package ast
     6  
     7  import (
     8  	"github.com/shogo82148/std/go/token"
     9  )
    10  
    11  // CommentMapはASTノードをそのノードに関連付けられたコメントグループのリストにマップします。
    12  // 関連付けについては、[NewCommentMap] の説明を参照してください。
    13  type CommentMap map[Node][]*CommentGroup
    14  
    15  // NewCommentMapは、コメントリストのコメントグループをASTのノードと関連付けて新しいコメントマップを作成します。
    16  // コメントグループgは、ノードnと関連付けられます。以下の条件を満たす場合です:
    17  //   - gは、nの終了する行と同じ行で開始します。
    18  //   - gは、nの直後の行で始まり、gと次のノードの間に少なくとも1つの空行がある場合。
    19  //   - gは、nよりも前に開始され、前のルールを介してnの前のノードに関連付けられていない場合。
    20  //
    21  // NewCommentMapは、コメントグループを「最大の」ノードに関連付けようとします。たとえば、コメントが代入文の後に続く行コメントの場合、コメントは代入文全体ではなく、代入文の最後のオペランドに関連づけられます。
    22  func NewCommentMap(fset *token.FileSet, node Node, comments []*CommentGroup) CommentMap
    23  
    24  // Updateはコメントマップ内の古いノードを新しいノードで置き換え、新しいノードを返します。
    25  // 古いノードに関連付けられていたコメントは、新しいノードに関連付けられます。
    26  func (cmap CommentMap) Update(old, new Node) Node
    27  
    28  // Filterはnodeによって指定されたASTに対応するノードが存在する場合、cmapのエントリのみで構成される新しいコメントマップを返します。
    29  func (cmap CommentMap) Filter(node Node) CommentMap
    30  
    31  // Commentsはコメントマップ内のコメントグループのリストを返します。
    32  // 結果はソースの順にソートされます。
    33  func (cmap CommentMap) Comments() []*CommentGroup
    34  
    35  func (cmap CommentMap) String() string