@startuml
title Parser Class Diagram
namespace parser {
class Alias << (S,Aquamarine) >> {
+ Name string
+ PackageName string
+ AliasOf string
}
class AliasSlice << (S,Aquamarine) >> {
+ Len() int
+ Less(i int, j int) bool
+ Swap(i int, j int)
}
class ClassDiagramOptions << (S,Aquamarine) >> {
+ FileSystem afero.Fs
+ Directories []string
+ IgnoredDirectories []string
+ RenderingOptions map[RenderingOption]interface{}
+ Recursive bool
}
class ClassParser << (S,Aquamarine) >> {
- renderingOptions *RenderingOptions
- structure map[string]map[string]*Struct
- currentPackageName string
- allInterfaces map[string]struct{}
- allStructs map[string]struct{}
- allImports map[string]string
- allAliases map[string]*Alias
- allRenamedStructs map[string]map[string]string
- parsePackage(node ast.Node)
- parseImports(impt *ast.ImportSpec)
- parseDirectory(directoryPath string) error
- parseFileDeclarations(node ast.Decl)
- handleFuncDecl(decl *ast.FuncDecl)
- handleGenDecl(decl *ast.GenDecl)
- processSpec(spec ast.Spec)
- renderStructures(pack string, structures map[string]*Struct, str *LineStringBuilder)
- renderAliases(str *LineStringBuilder)
- renderStructure(structure *Struct, pack string, name string, str *LineStringBuilder, composition *LineStringBuilder, extends *LineStringBuilder, aggregations *LineStringBuilder)
- renderCompositions(structure *Struct, name string, composition *LineStringBuilder)
- renderAggregations(structure *Struct, name string, aggregations *LineStringBuilder)
- updatePrivateAggregations(structure *Struct, aggregationsMap map[string]struct{})
- renderAggregationMap(aggregationMap map[string]struct{}, structure *Struct, aggregations *LineStringBuilder, name string)
- getPackageName(t string, st *Struct) string
- renderExtends(structure *Struct, name string, extends *LineStringBuilder)
- renderStructMethods(structure *Struct, privateMethods *LineStringBuilder, publicMethods *LineStringBuilder)
- renderStructFields(structure *Struct, privateFields *LineStringBuilder, publicFields *LineStringBuilder)
- getOrCreateStruct(name string) *Struct
- getStruct(structName string) *Struct
+ Render() string
+ SetRenderingOptions(ro map[RenderingOption]interface{}) error
}
class Field << (S,Aquamarine) >> {
+ Name string
+ Type string
+ FullType string
}
class Function << (S,Aquamarine) >> {
+ Name string
+ Parameters []*Field
+ ReturnValues []string
+ PackageName string
+ FullNameReturnValues []string
+ SignturesAreEqual(function *Function) bool
}
class LineStringBuilder << (S,Aquamarine) >> {
+ WriteLineWithDepth(depth int, str string)
}
class RenderingOptions << (S,Aquamarine) >> {
+ Title string
+ Notes string
+ Aggregations bool
+ Fields bool
+ Methods bool
+ Compositions bool
+ Implementations bool
+ Aliases bool
+ ConnectionLabels bool
+ AggregatePrivateMembers bool
+ PrivateMembers bool
}
class Struct << (S,Aquamarine) >> {
+ PackageName string
+ Functions []*Function
+ Fields []*Field
+ Type string
+ Composition map[string]struct{}
+ Extends map[string]struct{}
+ Aggregations map[string]struct{}
+ PrivateAggregations map[string]struct{}
- addToPrivateAggregation(fType string)
+ ImplementsInterface(inter *Struct) bool
+ AddToComposition(fType string)
+ AddToExtends(fType string)
+ AddToAggregation(fType string)
+ AddField(field *ast.Field, aliases map[string]string)
+ AddMethod(method *ast.Field, aliases map[string]string)
}
class parser.AliasSlice << (T, #FF7700) >> {
}
class parser.RenderingOption << (T, #FF7700) >> {
}
}
"strings.Builder" *-- "extends""parser.LineStringBuilder"
"parser.ClassDiagramOptions""uses" o-- "afero.Fs"
"parser.ClassDiagramOptions""uses" o-- "parser.RenderingOption"
"parser.Function""uses" o-- "parser.Field"
"parser.Struct""uses" o-- "parser.Field"
"parser.Struct""uses" o-- "parser.Function"
"__builtin__.int" #.. "alias of""parser.RenderingOption"
"parser.[]Alias" #.. "alias of""parser.AliasSlice"
@enduml