| // Copyright 2020 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package fetch | |
| import ( | |
| "net/http" | |
| "strings" | |
| "golang.org/x/pkgsite/internal" | |
| "golang.org/x/pkgsite/internal/derrors" | |
| "golang.org/x/pkgsite/internal/godoc" | |
| "golang.org/x/pkgsite/internal/proxy/proxytest" | |
| "golang.org/x/pkgsite/internal/source" | |
| "golang.org/x/pkgsite/internal/stdlib" | |
| "golang.org/x/pkgsite/internal/testing/testhelper" | |
| ) | |
| type testModule struct { | |
| mod *proxytest.Module | |
| modfunc func() *proxytest.Module // call to get module if mod field is nil | |
| fr *FetchResult | |
| docStrings map[string][]string | |
| } | |
| var singleUnits = []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "example.com/single", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "README.md", | |
| Contents: "This is the README for a test module.", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "pkg", | |
| Path: "example.com/single/pkg", | |
| Synopsis: "Package pkg is a sample package.", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package pkg is a sample package.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Version", | |
| Synopsis: "const Version", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "V", | |
| Synopsis: "var V = Version", | |
| Section: "Variables", | |
| Kind: "Variable", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "G", | |
| Synopsis: "func G() int", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "T", | |
| Synopsis: "type T int", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "F", | |
| Synopsis: "func F(t time.Time, s string) (T, u)", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "T", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| Imports: []string{"time"}, | |
| }, | |
| } | |
| var moduleOnePackage = &testModule{ | |
| modfunc: func() *proxytest.Module { | |
| return proxytest.FindModule(testModules, "example.com/single", "v1.0.0") | |
| }, | |
| fr: &FetchResult{ | |
| HasGoMod: true, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "example.com/single", | |
| HasGoMod: true, | |
| SourceInfo: source.NewGitHubInfo("https://example.com/single", "", "v1.0.0"), | |
| IsRedistributable: true, | |
| }, | |
| Units: singleUnits, | |
| }, | |
| }, | |
| } | |
| var moduleNoGoMod = &testModule{ | |
| modfunc: func() *proxytest.Module { | |
| return proxytest.FindModule(testModules, "example.com/basic", "v1.0.0"). | |
| ChangePath("example.com/nogo"). | |
| DeleteFile("go.mod") | |
| }, | |
| fr: &FetchResult{ | |
| HasGoMod: false, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "example.com/nogo", | |
| HasGoMod: false, | |
| SourceInfo: source.NewGitHubInfo("https://example.com/nogo", "", "v1.0.0"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "basic", | |
| Path: "example.com/nogo", | |
| Synopsis: "Package basic is a sample package.", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "README.md", | |
| Contents: "This is the README for a test module.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package basic is a sample package.", | |
| API: singleUnits[1].Documentation[0].API, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| Imports: []string{"time"}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| "no.mod/module/p": {"const Year = 2009"}, | |
| }, | |
| } | |
| var moduleMultiPackage = &testModule{ | |
| modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/multi", "v1.0.0") }, | |
| fr: &FetchResult{ | |
| HasGoMod: true, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "example.com/multi", | |
| HasGoMod: true, | |
| SourceInfo: source.NewGitHubInfo("https://example.com/multi", "", "v1.0.0"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "example.com/multi", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "README.md", | |
| Contents: "README file for testing.", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "bar", | |
| Path: "example.com/multi/bar", | |
| Synopsis: "package bar", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "bar/README", | |
| Contents: "Another README file for testing.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "package bar", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Bar", | |
| Synopsis: "func Bar() string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "foo", | |
| Path: "example.com/multi/foo", | |
| Synopsis: "package foo", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "package foo", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "FooBar", | |
| Synopsis: "func FooBar() string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| }, | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| Imports: []string{"example.com/multi/bar", "fmt"}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| "github.com/my/module/bar": {"Bar returns the string "bar"."}, | |
| "github.com/my/module/foo": {"FooBar returns the string "foo bar"."}, | |
| }, | |
| } | |
| var moduleEmpty = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "emp.ty/module", | |
| }, | |
| fr: &FetchResult{Module: &internal.Module{}}, | |
| } | |
| var moduleNoGo = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "no.go/files", | |
| Files: map[string]string{"go.mod": "module no.go/files"}, | |
| }, | |
| fr: &FetchResult{Module: &internal.Module{}}, | |
| } | |
| var moduleBadPackages = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "bad.mod/module", | |
| Files: map[string]string{ | |
| "LICENSE": testhelper.BSD0License, | |
| "good/good.go": ` | |
| // Package good is inside a module that has bad packages. | |
| package good | |
| // Good is whether this package is good. | |
| const Good = true`, | |
| "illegalchar/p.go": ` | |
| package p | |
| func init() { | |
| var c00 uint8 = '\0'; // ERROR "oct|char" | |
| var c01 uint8 = '\07'; // ERROR "oct|char" | |
| var cx0 uint8 = '\x0'; // ERROR "hex|char" | |
| var cx1 uint8 = '\x'; // ERROR "hex|char" | |
| _, _, _, _ = c00, c01, cx0, cx1 | |
| } | |
| `, | |
| "multiplepkgs/a.go": "package a", | |
| "multiplepkgs/b.go": "package b", | |
| // For the package at the root, all files are excluded by build constraints. | |
| "root.go": ` | |
| //go:build tools | |
| package main | |
| `, | |
| }, | |
| }, | |
| fr: &FetchResult{ | |
| Status: derrors.ToStatus(derrors.HasIncompletePackages), | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "bad.mod/module", | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| // The module itself. | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "bad.mod/module", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "good", | |
| Path: "bad.mod/module/good", | |
| Synopsis: "Package good is inside a module that has bad packages.", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package good is inside a module that has bad packages.", | |
| API: []*internal.Symbol{{ | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Good", | |
| Synopsis: "const Good", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }}, | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| PackageVersionStates: []*internal.PackageVersionState{ | |
| { | |
| PackagePath: "bad.mod/module", | |
| ModulePath: "bad.mod/module", | |
| Version: "v1.0.0", | |
| Status: 600, | |
| }, | |
| { | |
| PackagePath: "bad.mod/module/good", | |
| ModulePath: "bad.mod/module", | |
| Version: "v1.0.0", | |
| Status: 200, | |
| }, | |
| { | |
| PackagePath: "bad.mod/module/illegalchar", | |
| ModulePath: "bad.mod/module", | |
| Version: "v1.0.0", | |
| Status: 600, //TODO(jba): this should be InvalidContents (604), not a build context error | |
| }, | |
| { | |
| PackagePath: "bad.mod/module/multiplepkgs", | |
| ModulePath: "bad.mod/module", | |
| Version: "v1.0.0", | |
| Status: 600, | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| "bad.mod/module/good": {`const Good = <a href="/builtin#true">true</a>`}, | |
| }, | |
| } | |
| var moduleBuildConstraints = &testModule{ | |
| modfunc: func() *proxytest.Module { | |
| return proxytest.FindModule(testModules, "example.com/build-constraints", "") | |
| }, | |
| fr: &FetchResult{ | |
| Status: derrors.ToStatus(derrors.HasIncompletePackages), | |
| HasGoMod: true, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "example.com/build-constraints", | |
| HasGoMod: true, | |
| SourceInfo: source.NewGitHubInfo("https://example.com/build-constraints", "", "v1.0.0"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "example.com/build-constraints", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "cpu", | |
| Path: "example.com/build-constraints/cpu", | |
| Synopsis: "Package cpu implements processor feature detection used by the Go standard library.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: "linux", | |
| GOARCH: "amd64", | |
| Synopsis: "Package cpu implements processor feature detection used by the Go standard library.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "CacheLinePadSize", | |
| Synopsis: "const CacheLinePadSize", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| }, | |
| }, | |
| { | |
| GOOS: "windows", | |
| GOARCH: "amd64", | |
| Synopsis: "Package cpu implements processor feature detection used by the Go standard library.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "CacheLinePadSize", | |
| Synopsis: "const CacheLinePadSize", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| }, | |
| }, | |
| { | |
| GOOS: "darwin", | |
| GOARCH: "amd64", | |
| Synopsis: "Package cpu implements processor feature detection used by the Go standard library.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "CacheLinePadSize", | |
| Synopsis: "const CacheLinePadSize", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| }, | |
| }, | |
| { | |
| GOOS: "js", | |
| GOARCH: "wasm", | |
| Synopsis: "Package cpu implements processor feature detection used by the Go standard library.", | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{ | |
| internal.BuildContextLinux, internal.BuildContextWindows, | |
| internal.BuildContextDarwin, internal.BuildContextJS, | |
| }, | |
| }, | |
| }, | |
| }, | |
| PackageVersionStates: []*internal.PackageVersionState{ | |
| { | |
| ModulePath: "example.com/build-constraints", | |
| Version: "v1.0.0", | |
| PackagePath: "example.com/build-constraints/cpu", | |
| Status: http.StatusOK, | |
| }, | |
| { | |
| ModulePath: "example.com/build-constraints", | |
| Version: "v1.0.0", | |
| PackagePath: "example.com/build-constraints/ignore", | |
| Status: derrors.ToStatus(derrors.PackageBuildContextNotSupported), | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| "build.constraints/module/cpu": {"const CacheLinePadSize = 3"}, | |
| }, | |
| } | |
| // The package in this module is broken for one build context, but not all. | |
| var moduleBadBuildContext = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "github.com/bad-context", | |
| Files: map[string]string{ | |
| "pkg/linux.go": ` | |
| // +build linux js | |
| package pkg`, | |
| "pkg/js.go": ` | |
| // +build js | |
| package js`, | |
| }, | |
| }, | |
| fr: &FetchResult{ | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "github.com/bad-context", | |
| HasGoMod: false, | |
| IsRedistributable: false, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "github.com/bad-context", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "pkg", | |
| Path: "github.com/bad-context/pkg", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: "linux", | |
| GOARCH: "amd64", | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextLinux}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| var moduleNonRedist = &testModule{ | |
| modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/nonredist", "") }, | |
| fr: &FetchResult{ | |
| HasGoMod: true, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "example.com/nonredist", | |
| HasGoMod: true, | |
| SourceInfo: source.NewGitHubInfo("https://example.com/nonredist", "", "v1.0.0"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "example.com/nonredist", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "README.md", | |
| Contents: "README file for testing.", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "bar", | |
| Path: "example.com/nonredist/bar", | |
| Synopsis: "package bar", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "package bar", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Bar", | |
| Synopsis: "func Bar() string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "baz", | |
| Path: "example.com/nonredist/bar/baz", | |
| Synopsis: "package baz", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "package baz", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Baz", | |
| Synopsis: "func Baz() string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "unk", | |
| Path: "example.com/nonredist/unk", | |
| Synopsis: "package unk", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "unk/README.md", | |
| Contents: "README file will be removed before DB insert.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "package unk", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "FooBar", | |
| Synopsis: "func FooBar() string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| Imports: []string{"example.com/nonredist/bar", "fmt"}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| "example.com/nonredist/bar": {"Bar returns the string"}, | |
| "example.com/nonredist/bar/baz": {"Baz returns the string"}, | |
| "example.com/nonredist/foo": {"FooBar returns the string"}, | |
| }, | |
| } | |
| var moduleBadImportPath = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "bad.import.path.com", | |
| Files: map[string]string{ | |
| "good/import/path/foo.go": "package foo", | |
| "bad/import path/foo.go": "package foo", | |
| }, | |
| }, | |
| fr: &FetchResult{ | |
| Status: derrors.ToStatus(derrors.HasIncompletePackages), | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "bad.import.path.com", | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "bad.import.path.com", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "bad.import.path.com/good", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "bad.import.path.com/good/import", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "foo", | |
| Path: "bad.import.path.com/good/import/path", | |
| }, | |
| Documentation: []*internal.Documentation{{GOOS: internal.All, GOARCH: internal.All}}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| PackageVersionStates: []*internal.PackageVersionState{ | |
| { | |
| ModulePath: "bad.import.path.com", | |
| PackagePath: "bad.import.path.com/bad/import path", | |
| Version: "v1.0.0", | |
| Status: derrors.ToStatus(derrors.PackageBadImportPath), | |
| }, | |
| { | |
| ModulePath: "bad.import.path.com", | |
| PackagePath: "bad.import.path.com/good/import/path", | |
| Version: "v1.0.0", | |
| Status: http.StatusOK, | |
| }, | |
| }, | |
| }, | |
| } | |
| var moduleDocTest = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "doc.test", | |
| Files: map[string]string{ | |
| "LICENSE": testhelper.BSD0License, | |
| "permalink/doc.go": ` | |
| // Package permalink is for testing the heading | |
| // permalink documentation rendering feature. | |
| // | |
| // This is a heading | |
| // | |
| // This is a paragraph. | |
| // | |
| // This is yet another | |
| // paragraph. | |
| // | |
| package permalink`, | |
| }, | |
| }, | |
| fr: &FetchResult{ | |
| HasGoMod: false, | |
| GoModPath: "doc.test", | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "doc.test", | |
| HasGoMod: false, | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "doc.test", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "permalink", | |
| Path: "doc.test/permalink", | |
| Synopsis: "Package permalink is for testing the heading permalink documentation rendering feature.", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package permalink is for testing the heading permalink documentation rendering feature.", | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| "doc.test/permalink": { | |
| "<h4 id=\"hdr-This_is_a_heading\">This is a heading <a", | |
| "href=\"#hdr-This_is_a_heading\" title=\"Go to This is a heading\" aria-label=\"Go to This is a heading\">¶</a></h4>", | |
| }, | |
| }, | |
| } | |
| var moduleDocTooLarge = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "bigdoc.test", | |
| Files: map[string]string{ | |
| "LICENSE": testhelper.BSD0License, | |
| "doc.go": "// This documentation is big.\n" + | |
| strings.Repeat("// Too big.\n", 100_000) + | |
| "package bigdoc", | |
| }, | |
| }, | |
| fr: &FetchResult{ | |
| HasGoMod: false, | |
| GoModPath: "bigdoc.test", | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "bigdoc.test", | |
| HasGoMod: false, | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "bigdoc", | |
| Path: "bigdoc.test", | |
| Synopsis: "This documentation is big.", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "This documentation is big.", | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| PackageVersionStates: []*internal.PackageVersionState{ | |
| { | |
| PackagePath: "bigdoc.test", | |
| ModulePath: "bigdoc.test", | |
| Version: "v1.0.0", | |
| Status: 200, | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| "bigdoc.test": {godoc.DocTooLargeReplacement}, | |
| }, | |
| } | |
| var moduleWasm = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "github.com/my/module/js", | |
| Files: map[string]string{ | |
| "README.md": "THIS IS A README", | |
| "LICENSE": testhelper.BSD0License, | |
| "js/js.go": ` | |
| // +build js,wasm | |
| // Package js only works with wasm. | |
| package js | |
| type Value int`, | |
| }, | |
| }, | |
| fr: &FetchResult{ | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "github.com/my/module/js", | |
| SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "js", "js/v1.0.0"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "github.com/my/module/js", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "README.md", | |
| Contents: "THIS IS A README", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "js", | |
| Path: "github.com/my/module/js/js", | |
| Synopsis: "Package js only works with wasm.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| Synopsis: "Package js only works with wasm.", | |
| GOOS: "js", | |
| GOARCH: "wasm", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{Name: "Value", | |
| Synopsis: "type Value int", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextJS}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| var moduleAlternative = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "github.com/my/module", | |
| Files: map[string]string{"go.mod": "module canonical"}, | |
| }, | |
| fr: &FetchResult{ | |
| GoModPath: "canonical", | |
| }, | |
| } | |
| // See known_alternatives.go | |
| var moduleKnownAlternative = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "github.com/msopentech/azure-sdk-for-go", | |
| }, | |
| fr: &FetchResult{ | |
| Status: derrors.ToStatus(derrors.AlternativeModule), | |
| }, | |
| } | |
| var moduleStdMaster = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: stdlib.ModulePath, | |
| Version: "master", | |
| // No files necessary because the internal/stdlib package will read from | |
| // internal/stdlib/testdata. | |
| }, | |
| fr: &FetchResult{ | |
| RequestedVersion: "master", | |
| ResolvedVersion: stdlib.TestMasterVersion, | |
| HasGoMod: true, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: stdlib.ModulePath, | |
| Version: stdlib.TestMasterVersion, | |
| CommitTime: stdlib.TestCommitTime, | |
| HasGoMod: true, | |
| SourceInfo: source.NewStdlibInfoForTest("master"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "errors", | |
| Name: "errors", | |
| Synopsis: "Package errors implements functions to manipulate errors.", | |
| ModuleInfo: internal.ModuleInfo{ | |
| Version: stdlib.TestMasterVersion, | |
| ModulePath: stdlib.ModulePath, | |
| IsRedistributable: true, | |
| }, | |
| }, | |
| IsRedistributable: true, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package errors implements functions to manipulate errors.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "New", | |
| Synopsis: "func New(text string) error", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "std", | |
| ModuleInfo: internal.ModuleInfo{ | |
| Version: stdlib.TestMasterVersion, | |
| ModulePath: "std", | |
| IsRedistributable: true, | |
| }, | |
| }, | |
| IsRedistributable: true, | |
| }, | |
| }, | |
| }, | |
| PackageVersionStates: []*internal.PackageVersionState{ | |
| { | |
| PackagePath: "errors", | |
| ModulePath: "std", | |
| Version: stdlib.TestMasterVersion, | |
| Status: 200, | |
| }, | |
| }, | |
| }, | |
| } | |
| var moduleStd = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: stdlib.ModulePath, | |
| Version: "v1.12.5", | |
| // No files necessary because the internal/stdlib package will read from | |
| // internal/stdlib/testdata. | |
| }, | |
| fr: &FetchResult{ | |
| HasGoMod: true, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "std", | |
| Version: "v1.12.5", | |
| CommitTime: stdlib.TestCommitTime, | |
| HasGoMod: true, | |
| SourceInfo: source.NewStdlibInfoForTest("v1.12.5"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "std", | |
| }, | |
| IsRedistributable: true, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "builtin", | |
| Path: "builtin", | |
| Synopsis: "Package builtin provides documentation for Go's predeclared identifiers.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package builtin provides documentation for Go's predeclared identifiers.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "true", | |
| Synopsis: "const true", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "false", | |
| Synopsis: "const false", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "iota", | |
| Synopsis: "const iota", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "nil", | |
| Synopsis: "var nil Type", | |
| Section: "Variables", | |
| Kind: "Variable", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "append", | |
| Synopsis: "func append(slice []Type, elems ...Type) []Type", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "cap", | |
| Synopsis: "func cap(v Type) int", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "close", | |
| Synopsis: "func close(c chan<- Type)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "complex", | |
| Synopsis: "func complex(r, i FloatType) ComplexType", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "copy", | |
| Synopsis: "func copy(dst, src []Type) int", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "delete", | |
| Synopsis: "func delete(m map[Type]Type1, key Type)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "imag", | |
| Synopsis: "func imag(c ComplexType) FloatType", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "len", | |
| Synopsis: "func len(v Type) int", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "make", | |
| Synopsis: "func make(t Type, size ...IntegerType) Type", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "new", | |
| Synopsis: "func new(Type) *Type", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "panic", | |
| Synopsis: "func panic(v interface{})", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "print", | |
| Synopsis: "func print(args ...Type)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "println", | |
| Synopsis: "func println(args ...Type)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "real", | |
| Synopsis: "func real(c ComplexType) FloatType", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "recover", | |
| Synopsis: "func recover() interface{}", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "ComplexType", | |
| Synopsis: "type ComplexType complex64", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "FloatType", | |
| Synopsis: "type FloatType float32", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "IntegerType", | |
| Synopsis: "type IntegerType int", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Type", | |
| Synopsis: "type Type int", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Type1", | |
| Synopsis: "type Type1 int", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "bool", | |
| Synopsis: "type bool bool", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "byte", | |
| Synopsis: "type byte = uint8", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "complex128", | |
| Synopsis: "type complex128 complex128", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "complex64", | |
| Synopsis: "type complex64 complex64", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "error", | |
| Synopsis: "type error interface{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "error.Error", | |
| Synopsis: "Error func() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "error", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "float32", | |
| Synopsis: "type float32 float32", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "float64", | |
| Synopsis: "type float64 float64", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "int", | |
| Synopsis: "type int int", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "int16", | |
| Synopsis: "type int16 int16", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "int32", | |
| Synopsis: "type int32 int32", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "int64", | |
| Synopsis: "type int64 int64", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "int8", | |
| Synopsis: "type int8 int8", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "rune", | |
| Synopsis: "type rune = int32", | |
| Section: "Types", | |
| Kind: "Type"}, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "string", | |
| Synopsis: "type string string", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "uint", | |
| Synopsis: "type uint uint", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "uint16", | |
| Synopsis: "type uint16 uint16", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "uint32", | |
| Synopsis: "type uint32 uint32", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "uint64", | |
| Synopsis: "type uint64 uint64", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "uint8", | |
| Synopsis: "type uint8 uint8", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "uintptr", | |
| Synopsis: "type uintptr uintptr", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "cmd", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "main", | |
| Path: "cmd/pprof", | |
| Synopsis: "Pprof interprets and displays profiles of Go programs.", | |
| }, | |
| Readme: &internal.Readme{ | |
| Filepath: "cmd/pprof/README", | |
| Contents: "This directory is the copy of Google's pprof shipped as part of the Go distribution.\n", | |
| }, | |
| // cmd/pprof has a file with a build constraint that does not include js/wasm. | |
| // Since the set files isn't the same across all build contexts, we represent | |
| // every build context. | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: "linux", | |
| GOARCH: "amd64", | |
| Synopsis: "Pprof interprets and displays profiles of Go programs.", | |
| }, | |
| { | |
| GOOS: "windows", | |
| GOARCH: "amd64", | |
| Synopsis: "Pprof interprets and displays profiles of Go programs.", | |
| }, | |
| { | |
| GOOS: "darwin", | |
| GOARCH: "amd64", | |
| Synopsis: "Pprof interprets and displays profiles of Go programs.", | |
| }, | |
| { | |
| GOOS: "js", | |
| GOARCH: "wasm", | |
| Synopsis: "Pprof interprets and displays profiles of Go programs.", | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{ | |
| internal.BuildContextLinux, internal.BuildContextWindows, | |
| internal.BuildContextDarwin, internal.BuildContextJS, | |
| }, | |
| Imports: []string{ | |
| "cmd/internal/objfile", | |
| "crypto/tls", | |
| "debug/dwarf", | |
| "fmt", | |
| "github.com/google/pprof/driver", | |
| "github.com/google/pprof/profile", | |
| "golang.org/x/crypto/ssh/terminal", | |
| "io", | |
| "net/http", | |
| "net/url", | |
| "os", | |
| "regexp", | |
| "strconv", | |
| "strings", | |
| "sync", | |
| "time", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "context", | |
| Path: "context", | |
| Synopsis: "Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Canceled", | |
| Synopsis: `var Canceled = errors.New("context canceled")`, | |
| Section: "Variables", | |
| Kind: "Variable", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "DeadlineExceeded", | |
| Synopsis: "var DeadlineExceeded error = deadlineExceededError{}", | |
| Section: "Variables", | |
| Kind: "Variable", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "WithCancel", | |
| Synopsis: "func WithCancel(parent Context) (ctx Context, cancel CancelFunc)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "WithDeadline", | |
| Synopsis: "func WithDeadline(parent Context, d time.Time) (Context, CancelFunc)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "WithTimeout", | |
| Synopsis: "func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "CancelFunc", | |
| Synopsis: "type CancelFunc func()", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Context", | |
| Synopsis: "type Context interface{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Background", | |
| Synopsis: "func Background() Context", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "Context", | |
| }, | |
| { | |
| Name: "TODO", | |
| Synopsis: "func TODO() Context", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "Context", | |
| }, | |
| { | |
| Name: "WithValue", | |
| Synopsis: "func WithValue(parent Context, key, val interface{}) Context", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "Context", | |
| }, | |
| { | |
| Name: "Context.Deadline", | |
| Synopsis: "Deadline func() (deadline time.Time, ok bool)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Context", | |
| }, | |
| { | |
| Name: "Context.Done", | |
| Synopsis: "Done func() <-chan struct{}", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Context", | |
| }, | |
| { | |
| Name: "Context.Err", | |
| Synopsis: "Err func() error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Context", | |
| }, | |
| { | |
| Name: "Context.Value", | |
| Synopsis: "Value func(key interface{}) interface{}", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Context", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| Imports: []string{"errors", "fmt", "reflect", "sync", "time"}, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "encoding", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "json", | |
| Path: "encoding/json", | |
| Synopsis: "Package json implements encoding and decoding of JSON as defined in RFC 7159.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package json implements encoding and decoding of JSON as defined in RFC 7159.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Compact", | |
| Synopsis: "func Compact(dst *bytes.Buffer, src []byte) error", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "HTMLEscape", | |
| Synopsis: "func HTMLEscape(dst *bytes.Buffer, src []byte)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Indent", | |
| Synopsis: "func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Marshal", | |
| Synopsis: "func Marshal(v interface{}) ([]byte, error)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "MarshalIndent", | |
| Synopsis: "func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Unmarshal", | |
| Synopsis: "func Unmarshal(data []byte, v interface{}) error", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Valid", | |
| Synopsis: "func Valid(data []byte) bool", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Decoder", | |
| Synopsis: "type Decoder struct{}", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "NewDecoder", | |
| Synopsis: "func NewDecoder(r io.Reader) *Decoder", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "Decoder", | |
| }, | |
| { | |
| Name: "Decoder.Buffered", | |
| Synopsis: "func (dec *Decoder) Buffered() io.Reader", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Decoder", | |
| }, | |
| { | |
| Name: "Decoder.Decode", | |
| Synopsis: "func (dec *Decoder) Decode(v interface{}) error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Decoder", | |
| }, | |
| { | |
| Name: "Decoder.DisallowUnknownFields", | |
| Synopsis: "func (dec *Decoder) DisallowUnknownFields()", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Decoder", | |
| }, | |
| { | |
| Name: "Decoder.More", | |
| Synopsis: "func (dec *Decoder) More() bool", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Decoder", | |
| }, | |
| { | |
| Name: "Decoder.Token", | |
| Synopsis: "func (dec *Decoder) Token() (Token, error)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Decoder", | |
| }, | |
| { | |
| Name: "Decoder.UseNumber", | |
| Synopsis: "func (dec *Decoder) UseNumber()", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Decoder", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Delim", | |
| Synopsis: "type Delim rune", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Delim.String", | |
| Synopsis: "func (d Delim) String() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Delim", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Encoder", | |
| Synopsis: "type Encoder struct{}", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "NewEncoder", | |
| Synopsis: "func NewEncoder(w io.Writer) *Encoder", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "Encoder", | |
| }, | |
| { | |
| Name: "Encoder.Encode", | |
| Synopsis: "func (enc *Encoder) Encode(v interface{}) error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Encoder", | |
| }, | |
| { | |
| Name: "Encoder.SetEscapeHTML", | |
| Synopsis: "func (enc *Encoder) SetEscapeHTML(on bool)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Encoder", | |
| }, | |
| { | |
| Name: "Encoder.SetIndent", | |
| Synopsis: "func (enc *Encoder) SetIndent(prefix, indent string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Encoder", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "InvalidUTF8Error", | |
| Synopsis: "type InvalidUTF8Error struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "InvalidUTF8Error.S", | |
| Synopsis: "S string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "InvalidUTF8Error", | |
| }, | |
| { | |
| Name: "InvalidUTF8Error.Error", | |
| Synopsis: "func (e *InvalidUTF8Error) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "InvalidUTF8Error", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "InvalidUnmarshalError", | |
| Synopsis: "type InvalidUnmarshalError struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "InvalidUnmarshalError.Type", | |
| Synopsis: "Type reflect.Type", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "InvalidUnmarshalError", | |
| }, | |
| { | |
| Name: "InvalidUnmarshalError.Error", | |
| Synopsis: "func (e *InvalidUnmarshalError) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "InvalidUnmarshalError", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Marshaler", | |
| Synopsis: "type Marshaler interface{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Marshaler.MarshalJSON", | |
| Synopsis: "MarshalJSON func() ([]byte, error)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Marshaler", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "MarshalerError", | |
| Synopsis: "type MarshalerError struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "MarshalerError.Type", | |
| Synopsis: "Type reflect.Type", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "MarshalerError", | |
| }, | |
| { | |
| Name: "MarshalerError.Err", | |
| Synopsis: "Err error", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "MarshalerError", | |
| }, | |
| { | |
| Name: "MarshalerError.Error", | |
| Synopsis: "func (e *MarshalerError) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "MarshalerError", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Number", | |
| Synopsis: "type Number string", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Number.Float64", | |
| Synopsis: "func (n Number) Float64() (float64, error)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Number", | |
| }, | |
| { | |
| Name: "Number.Int64", | |
| Synopsis: "func (n Number) Int64() (int64, error)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Number", | |
| }, | |
| { | |
| Name: "Number.String", | |
| Synopsis: "func (n Number) String() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Number", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "RawMessage", | |
| Synopsis: "type RawMessage []byte", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "RawMessage.MarshalJSON", | |
| Synopsis: "func (m RawMessage) MarshalJSON() ([]byte, error)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "RawMessage", | |
| }, | |
| { | |
| Name: "RawMessage.UnmarshalJSON", | |
| Synopsis: "func (m *RawMessage) UnmarshalJSON(data []byte) error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "RawMessage", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "SyntaxError", | |
| Synopsis: "type SyntaxError struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "SyntaxError.Offset", | |
| Synopsis: "Offset int64", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "SyntaxError", | |
| }, | |
| { | |
| Name: "SyntaxError.Error", | |
| Synopsis: "func (e *SyntaxError) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "SyntaxError", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Token", | |
| Synopsis: "type Token interface{}", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "UnmarshalFieldError", | |
| Synopsis: "type UnmarshalFieldError struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "UnmarshalFieldError.Key", | |
| Synopsis: "Key string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalFieldError", | |
| }, | |
| { | |
| Name: "UnmarshalFieldError.Type", | |
| Synopsis: "Type reflect.Type", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalFieldError", | |
| }, | |
| { | |
| Name: "UnmarshalFieldError.Field", | |
| Synopsis: "Field reflect.StructField", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalFieldError", | |
| }, | |
| { | |
| Name: "UnmarshalFieldError.Error", | |
| Synopsis: "func (e *UnmarshalFieldError) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "UnmarshalFieldError", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "UnmarshalTypeError", | |
| Synopsis: "type UnmarshalTypeError struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "UnmarshalTypeError.Value", | |
| Synopsis: "Value string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalTypeError", | |
| }, | |
| { | |
| Name: "UnmarshalTypeError.Type", | |
| Synopsis: "Type reflect.Type", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalTypeError", | |
| }, | |
| { | |
| Name: "UnmarshalTypeError.Offset", | |
| Synopsis: "Offset int64", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalTypeError", | |
| }, | |
| { | |
| Name: "UnmarshalTypeError.Struct", | |
| Synopsis: "Struct string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalTypeError", | |
| }, | |
| { | |
| Name: "UnmarshalTypeError.Field", | |
| Synopsis: "Field string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnmarshalTypeError", | |
| }, | |
| { | |
| Name: "UnmarshalTypeError.Error", | |
| Synopsis: "func (e *UnmarshalTypeError) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "UnmarshalTypeError", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Unmarshaler", | |
| Synopsis: "type Unmarshaler interface{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Unmarshaler.UnmarshalJSON", | |
| Synopsis: "UnmarshalJSON func([]byte) error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Unmarshaler", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "UnsupportedTypeError", | |
| Synopsis: "type UnsupportedTypeError struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "UnsupportedTypeError.Type", | |
| Synopsis: "Type reflect.Type", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnsupportedTypeError", | |
| }, | |
| { | |
| Name: "UnsupportedTypeError.Error", | |
| Synopsis: "func (e *UnsupportedTypeError) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "UnsupportedTypeError", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "UnsupportedValueError", | |
| Synopsis: "type UnsupportedValueError struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "UnsupportedValueError.Value", | |
| Synopsis: "Value reflect.Value", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnsupportedValueError", | |
| }, | |
| { | |
| Name: "UnsupportedValueError.Str", | |
| Synopsis: "Str string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "UnsupportedValueError", | |
| }, | |
| { | |
| Name: "UnsupportedValueError.Error", | |
| Synopsis: "func (e *UnsupportedValueError) Error() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "UnsupportedValueError", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| Imports: []string{ | |
| "bytes", | |
| "encoding", | |
| "encoding/base64", | |
| "errors", | |
| "fmt", | |
| "io", | |
| "math", | |
| "reflect", | |
| "sort", | |
| "strconv", | |
| "strings", | |
| "sync", | |
| "unicode", | |
| "unicode/utf16", | |
| "unicode/utf8", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "errors", | |
| Path: "errors", | |
| Synopsis: "Package errors implements functions to manipulate errors.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package errors implements functions to manipulate errors.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "New", | |
| Synopsis: "func New(text string) error", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "flag", | |
| Path: "flag", | |
| Synopsis: "Package flag implements command-line flag parsing.", | |
| }, | |
| Imports: []string{"errors", "fmt", "io", "os", "reflect", "sort", "strconv", "strings", "time"}, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package flag implements command-line flag parsing.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "CommandLine", | |
| Synopsis: "var CommandLine = NewFlagSet(os.Args[0], ExitOnError)", | |
| Section: "Variables", | |
| Kind: "Variable", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "ErrHelp", | |
| Synopsis: `var ErrHelp = errors.New("flag: help requested")`, | |
| Section: "Variables", | |
| Kind: "Variable", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Usage", | |
| Synopsis: "var Usage = func() { ... }", | |
| Section: "Variables", | |
| Kind: "Variable", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Arg", | |
| Synopsis: "func Arg(i int) string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Args", | |
| Synopsis: "func Args() []string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Bool", | |
| Synopsis: "func Bool(name string, value bool, usage string) *bool", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "BoolVar", | |
| Synopsis: "func BoolVar(p *bool, name string, value bool, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Duration", | |
| Synopsis: "func Duration(name string, value time.Duration, usage string) *time.Duration", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "DurationVar", | |
| Synopsis: "func DurationVar(p *time.Duration, name string, value time.Duration, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Float64", | |
| Synopsis: "func Float64(name string, value float64, usage string) *float64", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Float64Var", | |
| Synopsis: "func Float64Var(p *float64, name string, value float64, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Int", | |
| Synopsis: "func Int(name string, value int, usage string) *int", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Int64", | |
| Synopsis: "func Int64(name string, value int64, usage string) *int64", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Int64Var", | |
| Synopsis: "func Int64Var(p *int64, name string, value int64, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "IntVar", | |
| Synopsis: "func IntVar(p *int, name string, value int, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "NArg", | |
| Synopsis: "func NArg() int", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "NFlag", | |
| Synopsis: "func NFlag() int", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Parse", | |
| Synopsis: "func Parse()", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Parsed", | |
| Synopsis: "func Parsed() bool", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "PrintDefaults", | |
| Synopsis: "func PrintDefaults()", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Set", | |
| Synopsis: "func Set(name, value string) error", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "String", | |
| Synopsis: "func String(name string, value string, usage string) *string", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "StringVar", | |
| Synopsis: "func StringVar(p *string, name string, value string, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Uint", | |
| Synopsis: "func Uint(name string, value uint, usage string) *uint", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Uint64", | |
| Synopsis: "func Uint64(name string, value uint64, usage string) *uint64", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Uint64Var", | |
| Synopsis: "func Uint64Var(p *uint64, name string, value uint64, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "UintVar", | |
| Synopsis: "func UintVar(p *uint, name string, value uint, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "UnquoteUsage", | |
| Synopsis: "func UnquoteUsage(flag *Flag) (name string, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Var", | |
| Synopsis: "func Var(value Value, name string, usage string)", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Visit", | |
| Synopsis: "func Visit(fn func(*Flag))", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "VisitAll", | |
| Synopsis: "func VisitAll(fn func(*Flag))", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "ErrorHandling", | |
| Synopsis: "type ErrorHandling int", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "ContinueOnError", | |
| Synopsis: "const ContinueOnError", | |
| Section: "Types", | |
| Kind: "Constant", | |
| ParentName: "ErrorHandling", | |
| }, | |
| { | |
| Name: "ExitOnError", | |
| Synopsis: "const ExitOnError", | |
| Section: "Types", | |
| Kind: "Constant", | |
| ParentName: "ErrorHandling", | |
| }, | |
| { | |
| Name: "PanicOnError", | |
| Synopsis: "const PanicOnError", | |
| Section: "Types", | |
| Kind: "Constant", | |
| ParentName: "ErrorHandling", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Flag", | |
| Synopsis: "type Flag struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Lookup", | |
| Synopsis: "func Lookup(name string) *Flag", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "Flag", | |
| }, | |
| { | |
| Name: "Flag.Name", | |
| Synopsis: "Name string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "Flag", | |
| }, | |
| { | |
| Name: "Flag.Usage", | |
| Synopsis: "Usage string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "Flag", | |
| }, | |
| { | |
| Name: "Flag.Value", | |
| Synopsis: "Value Value", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "Flag", | |
| }, | |
| { | |
| Name: "Flag.DefValue", | |
| Synopsis: "DefValue string", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "Flag", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "FlagSet", | |
| Synopsis: "type FlagSet struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "NewFlagSet", | |
| Synopsis: "func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet", | |
| Section: "Types", | |
| Kind: "Function", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Usage", | |
| Synopsis: "Usage func()", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Arg", | |
| Synopsis: "func (f *FlagSet) Arg(i int) string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Args", | |
| Synopsis: "func (f *FlagSet) Args() []string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Bool", | |
| Synopsis: "func (f *FlagSet) Bool(name string, value bool, usage string) *bool", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.BoolVar", | |
| Synopsis: "func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Duration", | |
| Synopsis: "func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.DurationVar", | |
| Synopsis: "func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.ErrorHandling", | |
| Synopsis: "func (f *FlagSet) ErrorHandling() ErrorHandling", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Float64", | |
| Synopsis: "func (f *FlagSet) Float64(name string, value float64, usage string) *float64", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Float64Var", | |
| Synopsis: "func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Init", | |
| Synopsis: "func (f *FlagSet) Init(name string, errorHandling ErrorHandling)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Int", | |
| Synopsis: "func (f *FlagSet) Int(name string, value int, usage string) *int", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Int64", | |
| Synopsis: "func (f *FlagSet) Int64(name string, value int64, usage string) *int64", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Int64Var", | |
| Synopsis: "func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.IntVar", | |
| Synopsis: "func (f *FlagSet) IntVar(p *int, name string, value int, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Lookup", | |
| Synopsis: "func (f *FlagSet) Lookup(name string) *Flag", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.NArg", | |
| Synopsis: "func (f *FlagSet) NArg() int", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.NFlag", | |
| Synopsis: "func (f *FlagSet) NFlag() int", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Name", | |
| Synopsis: "func (f *FlagSet) Name() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Output", | |
| Synopsis: "func (f *FlagSet) Output() io.Writer", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Parse", | |
| Synopsis: "func (f *FlagSet) Parse(arguments []string) error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Parsed", | |
| Synopsis: "func (f *FlagSet) Parsed() bool", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.PrintDefaults", | |
| Synopsis: "func (f *FlagSet) PrintDefaults()", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Set", | |
| Synopsis: "func (f *FlagSet) Set(name, value string) error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.SetOutput", | |
| Synopsis: "func (f *FlagSet) SetOutput(output io.Writer)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.String", | |
| Synopsis: "func (f *FlagSet) String(name string, value string, usage string) *string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.StringVar", | |
| Synopsis: "func (f *FlagSet) StringVar(p *string, name string, value string, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Uint", | |
| Synopsis: "func (f *FlagSet) Uint(name string, value uint, usage string) *uint", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Uint64", | |
| Synopsis: "func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Uint64Var", | |
| Synopsis: "func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.UintVar", | |
| Synopsis: "func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Var", | |
| Synopsis: "func (f *FlagSet) Var(value Value, name string, usage string)", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.Visit", | |
| Synopsis: "func (f *FlagSet) Visit(fn func(*Flag))", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| { | |
| Name: "FlagSet.VisitAll", | |
| Synopsis: "func (f *FlagSet) VisitAll(fn func(*Flag))", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "FlagSet", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Getter", | |
| Synopsis: "type Getter interface{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Getter.Get", | |
| Synopsis: "Get func() interface{}", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Getter", | |
| }, | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Value", | |
| Synopsis: "type Value interface{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "Value.String", | |
| Synopsis: "String func() string", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Value", | |
| }, | |
| { | |
| Name: "Value.Set", | |
| Synopsis: "Set func(string) error", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "Value", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| var moduleMaster = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "github.com/my/module", | |
| Files: map[string]string{ | |
| "foo/foo.go": "// package foo exports a helpful constant.\npackage foo\nconst Bar = 1", | |
| }, | |
| Version: "v0.0.0-20200706064627-355bc3f705ed", | |
| }, | |
| fr: &FetchResult{ | |
| RequestedVersion: "master", | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "github.com/my/module", | |
| Version: "v0.0.0-20200706064627-355bc3f705ed", | |
| SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "", "355bc3f705ed"), | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "github.com/my/module", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "foo", | |
| Path: "github.com/my/module/foo", | |
| Synopsis: "package foo exports a helpful constant.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "package foo exports a helpful constant.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Bar", | |
| Synopsis: "const Bar", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| var moduleLatest = &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: "github.com/my/module", | |
| Files: map[string]string{ | |
| "foo/foo.go": "// package foo exports a helpful constant.\npackage foo\nconst Bar = 1", | |
| }, | |
| Version: "v1.2.4", | |
| }, | |
| fr: &FetchResult{ | |
| RequestedVersion: "latest", | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "github.com/my/module", | |
| Version: "v1.2.4", | |
| SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "", "v1.2.4"), | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: "github.com/my/module", | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "foo", | |
| Path: "github.com/my/module/foo", | |
| Synopsis: "package foo exports a helpful constant.", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "package foo exports a helpful constant.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Bar", | |
| Synopsis: "const Bar", | |
| Section: "Constants", | |
| Kind: "Constant", | |
| }, | |
| }, | |
| }, | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| var moduleGenerics = &testModule{ | |
| modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/generics", "") }, | |
| fr: &FetchResult{ | |
| HasGoMod: true, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: "example.com/generics", | |
| HasGoMod: true, | |
| SourceInfo: source.NewGitHubInfo("https://example.com/generics", "", "v1.0.0"), | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "generics", | |
| Path: "example.com/generics", | |
| Synopsis: "Package generics uses generics.", | |
| }, | |
| Documentation: []*internal.Documentation{ | |
| { | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package generics uses generics.", | |
| API: []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "Min", | |
| Synopsis: "func Min[T constraints.Ordered](a, b T) T", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "List", | |
| Synopsis: "type List struct{ ... }", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "List.Val", | |
| Synopsis: "Val T", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "List", | |
| }, | |
| { | |
| Name: "List.Next", | |
| Synopsis: "Next *List[T]", | |
| Section: "Types", | |
| Kind: "Field", | |
| ParentName: "List", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| Imports: []string{"constraints"}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| // moduleWithExamples returns a testModule that contains an example. | |
| // It provides the common bits for the tests for package, function, | |
| // type, and method examples below. | |
| // | |
| // The fetch result's documentation HTML is treated as a set | |
| // of substrings that should appear in the generated documentation. | |
| // The substrings are separated by a '~' character. | |
| func moduleWithExamples(path string, api []*internal.Symbol, source, test string, docSubstrings ...string) *testModule { | |
| return &testModule{ | |
| mod: &proxytest.Module{ | |
| ModulePath: path, | |
| Files: map[string]string{ | |
| "LICENSE": testhelper.BSD0License, | |
| "example/example.go": ` | |
| // Package example contains examples. | |
| package example | |
| ` + source, | |
| "example/example_test.go": ` | |
| package example_test | |
| ` + test, | |
| }, | |
| }, | |
| fr: &FetchResult{ | |
| GoModPath: path, | |
| HasGoMod: false, | |
| Module: &internal.Module{ | |
| ModuleInfo: internal.ModuleInfo{ | |
| ModulePath: path, | |
| HasGoMod: false, | |
| IsRedistributable: true, | |
| }, | |
| Units: []*internal.Unit{ | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Path: path, | |
| }, | |
| }, | |
| { | |
| UnitMeta: internal.UnitMeta{ | |
| Name: "example", | |
| Path: path + "/example", | |
| Synopsis: "Package example contains examples.", | |
| }, | |
| Documentation: []*internal.Documentation{{ | |
| GOOS: internal.All, | |
| GOARCH: internal.All, | |
| Synopsis: "Package example contains examples.", | |
| API: api, | |
| }}, | |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, | |
| }, | |
| }, | |
| }, | |
| }, | |
| docStrings: map[string][]string{ | |
| path + "/example": docSubstrings, | |
| }, | |
| } | |
| } | |
| var modulePackageExample = moduleWithExamples("package.example", | |
| nil, | |
| ``, | |
| `import "fmt" | |
| // Example for the package. | |
| func Example() { | |
| fmt.Println("hello") | |
| // Output: hello | |
| } | |
| `, "Documentation-exampleButtonsContainer") | |
| var moduleFuncExample = moduleWithExamples("func.example", | |
| []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "F", | |
| Synopsis: "func F()", | |
| Section: "Functions", | |
| Kind: "Function", | |
| }, | |
| }, | |
| }, | |
| `func F() {} | |
| `, `import "func.example/example" | |
| // Example for the function. | |
| func ExampleF() { | |
| example.F() | |
| } | |
| `, "Documentation-exampleButtonsContainer") | |
| var moduleTypeExample = moduleWithExamples("type.example", | |
| []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "T", | |
| Synopsis: "type T struct{}", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| }, | |
| }, | |
| `type T struct{} | |
| `, `import "type.example/example" | |
| // Example for the type. | |
| func ExampleT() { | |
| example.T{} | |
| } | |
| `, "Documentation-exampleButtonsContainer") | |
| var moduleMethodExample = moduleWithExamples("method.example", | |
| []*internal.Symbol{ | |
| { | |
| SymbolMeta: internal.SymbolMeta{ | |
| Name: "T", | |
| Synopsis: "type T struct{}", | |
| Section: "Types", | |
| Kind: "Type", | |
| }, | |
| Children: []*internal.SymbolMeta{ | |
| { | |
| Name: "T.M", | |
| Synopsis: "func (*T) M()", | |
| Section: "Types", | |
| Kind: "Method", | |
| ParentName: "T", | |
| }, | |
| }, | |
| }, | |
| }, | |
| `type T struct {} | |
| func (*T) M() {} | |
| `, `import "method.example/example" | |
| // Example for the method. | |
| func ExampleT_M() { | |
| new(example.T).M() | |
| } | |
| `, "Documentation-exampleButtonsContainer") |