comment

package
v1.23.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2024 License: MIT Imports: 0 Imported by: 0

Documentation

Overview

commentパッケージは、Goのドキュメントコメント(ドキュメンテーションコメント)を解析および再フォーマットするためのものです。 パッケージ、const、func、type、またはvarのトップレベルの宣言の直前にあるコメントを指します。

Goのドキュメントコメントの構文は、リンク、見出し、段落、リスト(ネストなし)、および整形済みのテキストブロックをサポートする、 Markdownの簡略化されたサブセットです。構文の詳細は、https://go.dev/doc/commentで文書化されています。

(コメントマーカーを削除した後の)ドキュメントコメントに関連付けられたテキストを解析するには、[Parser]を使用します:

var p comment.Parser
doc := p.Parse(text)

結果は、[*Doc]です。 ドキュメントコメント、HTML、Markdown、またはプレーンテキストとして再フォーマットするには、[Printer]を使用します:

var pr comment.Printer
os.Stdout.Write(pr.Text(doc))

[Parser]と[Printer]の型は、その操作をカスタマイズするために変更できる構造体です。 詳細については、それらの型のドキュメントを参照してください。

再フォーマットに追加の制御が必要な使用例では、解析された構文自体を検査することで独自のロジックを実装できます。 概要および追加の型へのリンクについては、DocBlock、[Text]のドキュメントを参照してください。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultLookupPackage

func DefaultLookupPackage(name string) (importPath string, ok bool)

DefaultLookupPackageは、[Parser.LookupPackage] がnilの場合に使用されるデフォルトのパッケージルックアップ関数です。 これは、単一要素のインポートパスを持つ標準ライブラリのパッケージ名を認識します。 それ以外の場合は、名前を付けることができません。

ただし、現在のパッケージで使用されているインポートに基づいたより洗練されたルックアップを提供するgo/docパッケージがあることに注意してください。

Types

type Block

type Block interface {
	// contains filtered or unexported methods
}

ブロックは、ドキュメントコメント内のブロックレベルのコンテンツであり、*Code*Heading*List、または[*Paragraph]のいずれかです。

type Code

type Code struct {

	// Textは事前に書式設定されたテキストで、改行文字で終わります。
	// 複数行になることがあり、それぞれの行は改行文字で終わります。
	// 空でなく、空白行で始まることも終わることもありません。
	Text string
}

Code は、整形済みのコードブロックです。

type Doc

type Doc struct {
	// Contentはコメント内のコンテンツブロックのシーケンスです。
	Content []Block

	// Linksはコメント内のリンクの定義です。
	Links []*LinkDef
}

Docは解析されたGoドキュメントコメントです。

type DocLink struct {
	Text []Text

	// ImportPath、Recv、Nameは、Goのパッケージまたはシンボルを識別します。
	// 非空のフィールドの組み合わせは以下の通りです:
	//  - ImportPath:別のパッケージへのリンク
	//  - ImportPath、Name:別のパッケージ内のconst、func、type、varへのリンク
	//  - ImportPath、Recv、Name:別のパッケージ内のメソッドへのリンク
	//  - Name:このパッケージ内のconst、func、type、varへのリンク
	//  - Recv、Name:このパッケージ内のメソッドへのリンク
	ImportPath string
	Recv       string
	Name       string
}

DocLinkはGoのパッケージまたはシンボルのドキュメントへのリンクです。

func (*DocLink) DefaultURL

func (l *DocLink) DefaultURL(baseURL string) string

DefaultURLは、baseURLをプレフィックスとして他のパッケージへのリンクのためにlのドキュメンテーションURLを構築して返します。

DefaultURLが返す可能性のある形式は以下の通りです:

  • baseURL/ImportPath、他のパッケージへのリンク
  • baseURL/ImportPath#Name、他のパッケージのconst、func、type、またはvarへのリンク
  • baseURL/ImportPath#Recv.Name、他のパッケージのメソッドへのリンク
  • #Name、このパッケージのconst、func、type、またはvarへのリンク
  • #Recv.Name、このパッケージのメソッドへのリンク

baseURLが末尾にスラッシュで終わる場合、アンカー形式のImportPathと#の間にスラッシュが挿入されます。 例えば、以下はいくつかのbaseURL値とそれらが生成するURLの例です:

"/pkg/" → "/pkg/math/#Sqrt" "/pkg" → "/pkg/math#Sqrt" "/" → "/math/#Sqrt" "" → "/math#Sqrt"

type Heading

type Heading struct {
	Text []Text
}

ヘッディングはドキュメントコメントの見出しです。

func (*Heading) DefaultID

func (h *Heading) DefaultID() string

DefaultIDは見出しhのデフォルトのアンカーIDを返します。

デフォルトのアンカーIDは、全てのアルファベットや数字以外のASCIIのランを アンダースコアに変換し、その前に「hdr-」の接頭辞を付けることで構築されます。 例えば、見出しのテキストが「Go Doc Comments」の場合、デフォルトのIDは「hdr-Go_Doc_Comments」となります。

type Italic

type Italic string

イタリック体は、斜体のテキストとしてレンダリングされる文字列です。

type Link struct {
	Auto bool
	Text []Text
	URL  string
}

Linkは特定のURLへのリンクです。

type LinkDef

type LinkDef struct {
	Text string
	URL  string
	Used bool
}

LinkDefは単一のリンク定義です。

type List

type List struct {
	// Itemsはアイテムのリストです。
	Items []*ListItem

	// ForceBlankBeforeは、コメントの再フォーマット時に、
	// 通常の条件を無視してリストの前に空行が必要であることを示します。
	// BlankBeforeメソッドを参照してください。
	//
	// コメントパーサーは、リストの前に空行がある場合に
	// ForceBlankBeforeを設定し、空行が出力時に保持されるようにします。
	ForceBlankBefore bool

	// ForceBlankBetweenは、コメントを再フォーマットする際、リストの項目は必ず空白行で区切られる必要があることを示しています。通常の条件を上書きします。BlankBetweenメソッドを参照してください。
	//
	// コメントパーサーは、リスト内の任意の二つの項目の間に空白行がある場合、それをプリントする際に空白行が保持されることを確認するために、ForceBlankBetweenを設定します。
	ForceBlankBetween bool
}

リストは番号付きまたは箇条書きリストです。 リストは常に空でないことが保証されます:len(Items) > 0。 番号付きのリストでは、Items[i].Numberは空ではない文字列です。 箇条書きリストでは、Items[i].Numberは空の文字列です。

func (*List) BlankBefore

func (l *List) BlankBefore() bool

BlankBeforeはコメントのリフォーマットにおいて、リストの前に空行を含めるべきかを報告します。 デフォルトのルールは[BlankBetween]と同じです: もしリストの項目の内容に空行が含まれている場合 (つまり、少なくとも1つの項目に複数の段落がある場合) リスト自体は前に空行を置く必要があります。 先行する空行を強制するためには、List.ForceBlankBeforeを設定することができます。

func (*List) BlankBetween

func (l *List) BlankBetween() bool

BlankBetweenはコメントのリフォーマット時に、 リストの項目間に空行を追加する必要があるかどうかを報告します。 デフォルトのルールは、リストの項目の内容に空行が含まれている場合 (つまり、少なくとも1つの項目が複数の段落を持っている場合)、 リストの項目自体も空行で分ける必要があるということです。 空行の区切りは、List.ForceBlankBetweenを設定することで強制することができます。

type ListItem

type ListItem struct {

	// Numberは、番号付きリストの10進数の文字列または箇条書きリストの空の文字列です。
	Number string

	// Contentはリストの内容です。
	// 現在、パーサーとプリンターの制限により、Contentの各要素は*Paragraphである必要があります。
	Content []Block
}

ListItemは、番号付きまたは点付きリスト内の単一の項目です。

type Paragraph

type Paragraph struct {
	Text []Text
}

パラグラフはテキストの段落です。

type Parser

type Parser struct {

	// WordsはGo言語の識別子に対応する単語のマップであり、斜体にする必要があり、
	// かつ可能であればリンクも作成します。
	// もしWords[w]が空の文字列であれば、単語wは斜体にのみなります。
	// そうでなければ、Words[w]をリンクターゲットとしてリンクが作成されます。
	// Wordsは[go/doc.ToHTML]のwordsパラメータに対応します。
	Words map[string]string

	// LookupPackageはパッケージ名をインポートパスに変換する。
	//
	// LookupPackage(name)がok == trueを返す場合、[name]
	//(または[name.Sym]または[name.Sym.Method])
	//はimportPathのパッケージドキュメントへのリンクと見なされる。
	// 空文字列とtrueを返すことも有効であり、その場合はnameが現在のパッケージを参照していると見なされる。
	//
	// LookupPackage(name)がok == falseを返す場合、
	//[name](または[name.Sym]または[name.Sym.Method])
	//はドキュメントへのリンクと見なされないが、
	// nameが標準ライブラリ内のパッケージの完全な(ただし要素が1つだけの)インポートパスである場合、
	//[math]や[io.Reader]のように
	//例外として扱われる。 LookupPackageはそれらの名前に対しても呼び出されるため、
	//同じパッケージ名の他のパッケージのインポートを参照することができる。
	//
	// LookupPackageをnilに設定するのは、常に""とfalseを返す関数に設定するのと同じです。
	LookupPackage func(name string) (importPath string, ok bool)

	// LookupSymは、現在のパッケージにシンボル名またはメソッド名が存在するかどうかを報告します。
	//
	// LookupSym("", "Name")がtrueを返す場合、[Name]はconst、func、type、またはvarのドキュメントリンクと見なされます。
	//
	// 同様に、LookupSym("Recv", "Name")がtrueを返す場合、[Recv.Name]はtype RecvのメソッドNameのドキュメントリンクと見なされます。
	//
	// LookupSymをnilに設定することは、常にfalseを返す関数に設定することと同じです。
	LookupSym func(recv, name string) (ok bool)
}

Parserはドキュメントコメントのパーサーです。 構造体のフィールドは、Parser.Parse を呼び出す前に埋めることで、 パースプロセスの詳細をカスタマイズすることができます。

func (*Parser) Parse

func (p *Parser) Parse(text string) *Doc

Parse parses the doc comment text and returns the *Doc form. Comment markers (/* // and */) in the text must have already been removed.

type Plain

type Plain string

Plainはプレーンテキストとしてレンダリングされる文字列です(イタリック化されません)。

type Printer

type Printer struct {

	// HeadingLevelはHTMLとMarkdownの見出しに使用されるネストレベルです。
	// HeadingLevelがゼロであれば、デフォルトでレベル3に設定され、<h3>と###が使用されます。
	HeadingLevel int

	// HeadingIDは、HTMLとMarkdownを生成する際に使用する見出しhの見出しID(アンカータグ)を計算する関数です。HeadingIDが空の文字列を返す場合、見出しIDは省略されます。HeadingIDがnilの場合、h.DefaultIDが使用されます。
	HeadingID func(h *Heading) string

	// DocLinkURLは、与えられたDocLinkのURLを計算する関数です。
	// DocLinkURLがnilの場合、link.DefaultURL(p.DocLinkBaseURL)が使用されます。
	DocLinkURL func(link *DocLink) string

	// DocLinkBaseURLは、DocLinkURLがnilの場合に使用され、DocLinkのURLを構築するために[DocLink.DefaultURL]に渡されます。
	// 詳細については、そのメソッドのドキュメントを参照してください。
	DocLinkBaseURL string

	// TextPrefixは、Textメソッドを使用してテキスト出力を生成する際に、
	// 各行の先頭に表示するプレフィックスです。
	TextPrefix string

	// TextCodePrefixは、テキスト出力を生成する際に各事前に書式設定された(コードブロック)行の先頭に印刷する接頭辞です。
	// (TextPrefixに追加ではなく)。
	// TextCodePrefixが空の文字列の場合、TextPrefix +"\t"がデフォルト値となります。
	TextCodePrefix string

	// TextWidthは生成するテキスト行の最大幅であり、Unicodeのコードポイントで測定されます。
	// TextPrefixと改行文字を除いたものです。
	// TextWidthがゼロの場合、TextPrefixのコードポイント数を除いた80から始まります。
	// TextWidthが負の場合、制限はありません。
	TextWidth int
}

Printerはドキュメントコメントのプリンターです。 構造体のフィールドは、印刷の詳細をカスタマイズするために、 印刷メソッドのいずれかを呼び出す前に埋めることができます。

func (*Printer) Comment

func (p *Printer) Comment(d *Doc) []byte

Commentは、コメントマーカーなしでの Doc の標準的なGoのフォーマットを返します。

func (*Printer) HTML

func (p *Printer) HTML(d *Doc) []byte

HTMLは Doc のHTML形式を返します。 HTML出力をカスタマイズする方法については、[Printer]のドキュメントを参照してください。

func (*Printer) Markdown

func (p *Printer) Markdown(d *Doc) []byte

MarkdownはDocのMarkdown形式のフォーマットを返します。 Markdown出力をカスタマイズする方法については[Printer]のドキュメントを参照してください。

func (*Printer) Text

func (p *Printer) Text(d *Doc) []byte

Text returns a textual formatting of the Doc. See the Printer documentation for ways to customize the text output.

type Text

type Text interface {
	// contains filtered or unexported methods
}

テキストはドキュメントコメント内のテキストレベルの内容であり、 [プレーン]、[イタリック]、[*リンク]、または[*ドキュリンク]のいずれかです。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL