This portal does not render PlantUML. Convert this source to an SVG or PNG using the plantuml/plantuml Docker image described in docs/outputs.md in the diagoram repository, or paste it into a PlantUML viewer of your choice.
@startuml class-diagram
package internal as internal {
package cli as internal_cli {
class "Options\n<b>Options holds the parsed command-line options.</b>" as internal_cli_Options {
+Help : bool
+Version : bool
+ClassDiagram : bool
+PackageDiagram : bool
+Format : string
+ShowExternal : bool
+HideUnexported : bool
+HideAliases : bool
+PublicAPI : bool
+ShowConstants : bool
+ShowFunctions : bool
+FunctionPatterns : []string
+MethodPatterns : []string
+ReceiverPatterns : []string
+MaxMembers : int
+DisableFields : bool
+DisableMethods : bool
+DisableImplements : bool
+ShowEdgeReasons : bool
+Summary : bool
+Report : bool
+HTMLDir : string
+RelTargets : []string
+RelTargetDepth : int
+Include : []string
+Exclude : []string
+ExcludeDirs : []string
+IncludeDirs : []string
+ExcludeGenerated : bool
+GeneratedOnly : bool
+GOOS : string
+GOARCH : string
+BuildTags : []string
+BuildContextMode : string
+Dir : string
}
}
package diagram as internal_diagram {
class "Diagram\n<b>Diagram is the fully built intermediate representation: the package</b>" as internal_diagram_Diagram {
+Root : *PackageNode
+Edges : []Edge
-edgeReasons : map[edgeKey]EdgeReasons
+ReasonsFor(Edge) : EdgeReasons
}
class "Edge\n<b>Edge is one directed relationship between two Entries, identified by</b>" as internal_diagram_Edge {
+From : string
+To : string
+Kind : EdgeKind
+ToCollection : bool
+Unexported : bool
+PointerOnly : bool
}
class "EdgeKind\n<b>EdgeKind distinguishes the relationships diagoram draws between</b>" as internal_diagram_EdgeKind <<type>> {
type : int
}
class "EdgeReasons\n<b>EdgeReasons is a bit set describing the source constructs behind an edge.</b>" as internal_diagram_EdgeReasons <<type>> {
type : uint32
}
class "Entry\n<b>Entry is one supported named Go type or a synthetic package-function group.</b>" as internal_diagram_Entry {
+ID : string
+Name : string
+TypeParams : []gocode.TypeParam
+Kind : Kind
+Doc : string
+Fields : []gocode.Field
+Methods : []gocode.Method
+NamedType : *gocode.NamedType
+Functions : []gocode.Function
}
class "Kind\n<b>Kind distinguishes the two entry shapes diagoram draws.</b>" as internal_diagram_Kind <<type>> {
type : int
}
class "PackageEdge\n<b>PackageEdge is one directed dependency between two packages, derived</b>" as internal_diagram_PackageEdge {
+From : string
+To : string
+Mutual : bool
+External : bool
}
class "PackageGraph\n<b>PackageGraph is the intermediate representation for a package</b>" as internal_diagram_PackageGraph {
+Root : *PackageNode
+Edges : []PackageEdge
+HasRootPackage : bool
}
class "PackageNode\n<b>PackageNode is one node of the package tree: a single directory</b>" as internal_diagram_PackageNode {
+Name : string
+Path : string
+PackageName : string
+Children : []*PackageNode
+Entries : []*Entry
}
class "RelTargetNotFoundError\n<b>RelTargetNotFoundError is returned by FilterByRelTarget when one or</b>" as internal_diagram_RelTargetNotFoundError {
+Missing : []string
+Candidates : []string
+Error() : string
}
class "SummaryOptions\n<b>SummaryOptions controls which counts and relationships Summary</b>" as internal_diagram_SummaryOptions {
+HideUnexported : bool
+DisableFields : bool
+DisableMethods : bool
+DisableImplements : bool
+FunctionPatterns : []string
+MethodPatterns : []string
+ReceiverPatterns : []string
+ShowEdgeReasons : bool
}
class "concreteMethodSets\n<b>effectiveStructMethodSets returns the separate method sets of s and *s.</b>" as internal_diagram_concreteMethodSets {
-value : map[string]gocode.Method
-pointer : map[string]gocode.Method
}
class "edgeKey\n<b>edgeKey identifies an (From, To, Kind) triple for deduplication.</b>" as internal_diagram_edgeKey {
+From : string
+To : string
+Kind : EdgeKind
}
class "entryKey\n<b>entryKey identifies a declared type by the directory it lives in and</b>" as internal_diagram_entryKey {
+Dir : string
+Name : string
}
class "entrySummaryMeta\n<b>entrySummaryMeta records the facts about an Entry that Summary needs</b>" as internal_diagram_entrySummaryMeta {
-name : string
-dir : string
-packageName : string
}
class "pkgPair\n<b>pkgPair identifies an unordered relationship between two package</b>" as internal_diagram_pkgPair {
+From : string
+To : string
}
}
package gocode as internal_gocode {
class "BuildContext\n<b>BuildContext selects files for a target Go build environment.</b>" as internal_gocode_BuildContext {
+GOOS : string
+GOARCH : string
+Tags : []string
}
class "Constant\n<b>Constant is a constant associated with a named scalar type.</b>" as internal_gocode_Constant {
+Name : string
+Doc : string
+Exported : bool
}
class "Field\n<b>Field is a named struct field.</b>" as internal_gocode_Field {
+Name : string
+Type : TypeRef
+Exported : bool
}
class "Function\n<b>Function is a package-level function signature.</b>" as internal_gocode_Function {
+Name : string
+Doc : string
+Params : []TypeRef
+Results : []TypeRef
+Exported : bool
}
class "GeneratedFileMode\n<b>GeneratedFileMode selects generated and handwritten Go files.</b>" as internal_gocode_GeneratedFileMode <<type>> {
type : int
}
class "Import\n<b>Import is a single import declaration.</b>" as internal_gocode_Import {
+Alias : string
+Path : string
}
class "Interface\n<b>Interface is a `type X interface{...}` declaration.</b>" as internal_gocode_Interface {
+Name : string
+TypeParams : []TypeParam
+Doc : string
+Methods : []Method
+Embeds : []TypeRef
}
class "Method\n<b>Method is a function signature: either a struct method (matched to</b>" as internal_gocode_Method {
+Name : string
+Params : []TypeRef
+Results : []TypeRef
+Exported : bool
+PointerReceiver : bool
}
class "NamedType\n<b>NamedType is a declared non-struct, non-interface type or type alias.</b>" as internal_gocode_NamedType {
+Name : string
+Doc : string
+TypeParams : []TypeParam
+Kind : NamedTypeKind
+Underlying : TypeRef
+Params : []TypeRef
+Results : []TypeRef
+Methods : []Method
+Constants : []Constant
}
class "NamedTypeKind\n<b>NamedTypeKind identifies the supported underlying shape of a named type.</b>" as internal_gocode_NamedTypeKind <<type>> {
type : int
}
class "Package\n<b>Package is one analyzed Go package: all the declarations gathered</b>" as internal_gocode_Package {
+Dir : string
+Name : string
+Imports : []Import
+Structs : []*Struct
+Interfaces : []*Interface
+NamedTypes : []*NamedType
+Functions : []Function
}
class "ParseOptions\n<b>ParseOptions controls which files Parse considers.</b>" as internal_gocode_ParseOptions {
+Includes : []string
+Excludes : []string
+ExcludeDirs : []string
+IncludeDirs : []string
+GeneratedFiles : GeneratedFileMode
+BuildContext : *BuildContext
}
class "Struct\n<b>Struct is a `type X struct{...}` declaration.</b>" as internal_gocode_Struct {
+Name : string
+TypeParams : []TypeParam
+Doc : string
+Fields : []Field
+Embeds : []TypeRef
+Methods : []Method
}
class "TypeParam\n<b>TypeParam is one declared generic type parameter.</b>" as internal_gocode_TypeParam {
+Name : string
+Constraint : TypeRef
}
class "TypeRef\n<b>TypeRef is a reference to a type, as written at the point of use. It</b>" as internal_gocode_TypeRef {
+PkgName : string
+Name : string
+IsSlice : bool
+IsMap : bool
+IsPtr : bool
+String : string
+Related : []TypeRef
+Relation : TypeRelation
}
class "TypeRelation\n<b>TypeRelation identifies why a nested type reference is related.</b>" as internal_gocode_TypeRelation <<type>> {
type : int
}
class "Warning\n<b>Warning describes a file that Parse could not analyze, so that</b>" as internal_gocode_Warning {
+File : string
+Err : error
+BuildExpression : string
+Error() : string
}
class "dirFiles\n<b>dirFiles is one directory's set of analyzable Go files, discovered</b>" as internal_gocode_dirFiles {
+Dir : string
+AbsDir : string
+Files : []string
}
class "fileDecls\n<b>fileDecls is the intermediate result of scanning a single *.go</b>" as internal_gocode_fileDecls {
+Structs : []*Struct
+Interfaces : []*Interface
+NamedTypes : []*NamedType
+Methods : map[string][]Method
+Constants : map[string][]Constant
+PendingConstants : []pendingConstant
+Functions : []Function
}
class "pendingConstant" as internal_gocode_pendingConstant {
+Constant : Constant
+RefName : string
}
}
package portal as internal_portal {
class "Artifacts\n<b>Artifacts holds every pre-rendered text artifact the portal embeds.</b>" as internal_portal_Artifacts {
+ClassMermaid : string
+PackageMermaid : string
+ClassPlantUML : string
+PackagePlantUML : string
+Summary : string
+ReportMarkdown : string
}
class "Meta\n<b>Meta holds portal-wide metadata shown in index.html's header.</b>" as internal_portal_Meta {
+Dir : string
+ModulePath : string
+Version : string
}
class "Result\n<b>Result reports where Generate wrote the portal's entry point.</b>" as internal_portal_Result {
+IndexPath : string
}
class "indexPageData\n<b>indexPageData is index.html.tmpl's template data.</b>" as internal_portal_indexPageData {
+Dir : string
+ModulePath : string
+Version : string
}
class "mermaidPageData\n<b>mermaidPageData is mermaid.html.tmpl's template data. When Skipped</b>" as internal_portal_mermaidPageData {
+Title : string
+SourceFile : string
+Source : string
+Skipped : bool
+SkipReason : string
}
class "pumlPageData\n<b>pumlPageData is puml.html.tmpl's template data.</b>" as internal_portal_pumlPageData {
+Title : string
+SourceFile : string
+Source : string
}
class "reportPageData\n<b>reportPageData is report.html.tmpl's template data.</b>" as internal_portal_reportPageData {
+Title : string
+SourceFile : string
+Markdown : string
}
class "textPageData\n<b>textPageData is text.html.tmpl's template data.</b>" as internal_portal_textPageData {
+Title : string
+SourceFile : string
+Content : string
}
}
package render as internal_render {
class "Options\n<b>Options controls renderer behavior. It is shared across output</b>" as internal_render_Options {
+HideUnexported : bool
+ShowConstants : bool
+ShowFunctions : bool
+FunctionPatterns : []string
+MethodPatterns : []string
+ReceiverPatterns : []string
+MaxMembers : int
+ShowEdgeReasons : bool
+DisableFields : bool
+DisableMethods : bool
+DisableImplements : bool
}
interface "PackageGraphRenderer\n<b>PackageGraphRenderer is implemented by every Renderer that can also</b>" as internal_render_PackageGraphRenderer {
+RenderPackageGraph(*diagram.PackageGraph, Options) : string, error
}
interface "Renderer\n<b>Renderer turns a diagram.Diagram into its textual representation in</b>" as internal_render_Renderer {
+Render(*diagram.Diagram, Options) : string, error
}
package mermaid as internal_render_mermaid {
class "Renderer\n<b>Renderer renders a diagram.Diagram as Mermaid classDiagram text. It</b>" as internal_render_mermaid_Renderer {
+Render(*diagram.Diagram, render.Options) : string, error
+RenderPackageGraph(*diagram.PackageGraph, render.Options) : string, error
}
}
package plantuml as internal_render_plantuml {
class "Renderer\n<b>Renderer renders a diagram.Diagram as PlantUML class-diagram script,</b>" as internal_render_plantuml_Renderer {
+RenderPackageGraph(*diagram.PackageGraph, render.Options) : string, error
+Render(*diagram.Diagram, render.Options) : string, error
}
}
}
package testutil as internal_testutil {
interface "TestingT\n<b>TestingT is the subset of *testing.T (or *testing.B) that Golden</b>" as internal_testutil_TestingT {
+Helper()
+Fatalf(string, ...any)
}
}
}
internal_diagram_Diagram "1" ..> "*" internal_diagram_Edge
internal_diagram_Diagram "1" ..> "*" internal_diagram_EdgeReasons
internal_diagram_Diagram ..> internal_diagram_PackageNode
internal_diagram_Diagram ..> internal_diagram_edgeKey
internal_diagram_Edge ..> internal_diagram_EdgeKind
internal_diagram_Entry ..> internal_diagram_Kind
internal_diagram_Entry "1" ..> "*" internal_gocode_Field
internal_diagram_Entry "1" ..> "*" internal_gocode_Function
internal_diagram_Entry "1" ..> "*" internal_gocode_Method
internal_diagram_Entry ..> internal_gocode_NamedType
internal_diagram_Entry "1" ..> "*" internal_gocode_TypeParam
internal_diagram_PackageGraph "1" ..> "*" internal_diagram_PackageEdge
internal_diagram_PackageGraph ..> internal_diagram_PackageNode
internal_diagram_PackageNode "1" ..> "*" internal_diagram_Entry
internal_diagram_concreteMethodSets "1" ..> "*" internal_gocode_Method
internal_diagram_edgeKey ..> internal_diagram_EdgeKind
internal_gocode_Field ..> internal_gocode_TypeRef
internal_gocode_Function "1" ..> "*" internal_gocode_TypeRef
internal_gocode_Interface "1" ..> "*" internal_gocode_Method
internal_gocode_Interface "1" ..> "*" internal_gocode_TypeParam
internal_gocode_Interface "1" ..> "*" internal_gocode_TypeRef
internal_gocode_Method "1" ..> "*" internal_gocode_TypeRef
internal_gocode_NamedType "1" ..> "*" internal_gocode_Constant
internal_gocode_NamedType "1" ..> "*" internal_gocode_Method
internal_gocode_NamedType ..> internal_gocode_NamedTypeKind
internal_gocode_NamedType "1" ..> "*" internal_gocode_TypeParam
internal_gocode_NamedType "1" ..> "*" internal_gocode_TypeRef
internal_gocode_Package "1" ..> "*" internal_gocode_Function
internal_gocode_Package "1" ..> "*" internal_gocode_Import
internal_gocode_Package "1" ..> "*" internal_gocode_Interface
internal_gocode_Package "1" ..> "*" internal_gocode_NamedType
internal_gocode_Package "1" ..> "*" internal_gocode_Struct
internal_gocode_ParseOptions ..> internal_gocode_BuildContext
internal_gocode_ParseOptions ..> internal_gocode_GeneratedFileMode
internal_gocode_Struct "1" ..> "*" internal_gocode_Field
internal_gocode_Struct "1" ..> "*" internal_gocode_Method
internal_gocode_Struct "1" ..> "*" internal_gocode_TypeParam
internal_gocode_Struct "1" ..> "*" internal_gocode_TypeRef
internal_gocode_TypeParam ..> internal_gocode_TypeRef
internal_gocode_TypeRef ..> internal_gocode_TypeRelation
internal_gocode_fileDecls "1" ..> "*" internal_gocode_Constant
internal_gocode_fileDecls "1" ..> "*" internal_gocode_Function
internal_gocode_fileDecls "1" ..> "*" internal_gocode_Interface
internal_gocode_fileDecls "1" ..> "*" internal_gocode_Method
internal_gocode_fileDecls "1" ..> "*" internal_gocode_NamedType
internal_gocode_fileDecls "1" ..> "*" internal_gocode_Struct
internal_gocode_fileDecls "1" ..> "*" internal_gocode_pendingConstant
internal_gocode_pendingConstant ..> internal_gocode_Constant
internal_render_PackageGraphRenderer ..> internal_diagram_PackageGraph
internal_render_PackageGraphRenderer ..> internal_render_Options
internal_render_Renderer <|-- internal_render_PackageGraphRenderer
internal_render_Renderer ..> internal_diagram_Diagram
internal_render_Renderer ..> internal_render_Options
internal_render_mermaid_Renderer ..> internal_diagram_Diagram
internal_render_mermaid_Renderer ..> internal_diagram_PackageGraph
internal_render_mermaid_Renderer ..> internal_render_Options
internal_render_mermaid_Renderer ..|> internal_render_PackageGraphRenderer : pointer receiver
internal_render_mermaid_Renderer ..|> internal_render_Renderer : pointer receiver
internal_render_plantuml_Renderer ..> internal_diagram_Diagram
internal_render_plantuml_Renderer ..> internal_diagram_PackageGraph
internal_render_plantuml_Renderer ..> internal_render_Options
internal_render_plantuml_Renderer ..|> internal_render_PackageGraphRenderer : pointer receiver
internal_render_plantuml_Renderer ..|> internal_render_Renderer : pointer receiver
@enduml