Skip to main content
Glama

protolint-mcp

by yoheimuta
extendedAutoDisableVisitor.go4.87 kB
package visitor import ( "github.com/yoheimuta/go-protoparser/v4/parser" "github.com/yoheimuta/protolint/linter/autodisable" "github.com/yoheimuta/protolint/linter/report" ) type extendedAutoDisableVisitor struct { inner HasExtendedVisitor automator autodisable.PlacementStrategy } func newExtendedAutoDisableVisitor( inner HasExtendedVisitor, ruleID string, protoFilename string, placementType autodisable.PlacementType, ) (*extendedAutoDisableVisitor, error) { automator, err := autodisable.NewPlacementStrategy(placementType, protoFilename, ruleID) if err != nil { return nil, err } return &extendedAutoDisableVisitor{ inner: inner, automator: automator, }, nil } func (v *extendedAutoDisableVisitor) Finally(p *parser.Proto) error { err := v.automator.Finalize() if err != nil { return err } return v.inner.Finally(p) } func (v *extendedAutoDisableVisitor) Failures() []report.Failure { return v.inner.Failures() } func (v *extendedAutoDisableVisitor) VisitDeclaration(s *parser.Declaration) (next bool) { return v.inner.VisitDeclaration(s) } func (v *extendedAutoDisableVisitor) VisitEdition(s *parser.Edition) (next bool) { return v.inner.VisitEdition(s) } func (v *extendedAutoDisableVisitor) VisitEmptyStatement(e *parser.EmptyStatement) (next bool) { return v.inner.VisitEmptyStatement(e) } func (v *extendedAutoDisableVisitor) VisitComment(c *parser.Comment) { v.inner.VisitComment(c) } func (v *extendedAutoDisableVisitor) VisitEnum(e *parser.Enum) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitEnum(e) }, func(offset int) { v.automator.Disable(offset, e.Comments, e.InlineCommentBehindLeftCurly) }) } func (v *extendedAutoDisableVisitor) VisitEnumField(e *parser.EnumField) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitEnumField(e) }, func(offset int) { v.automator.Disable(offset, e.Comments, e.InlineComment) }) } func (v *extendedAutoDisableVisitor) VisitExtend(m *parser.Extend) (next bool) { return v.inner.VisitExtend(m) } func (v *extendedAutoDisableVisitor) VisitExtensions(m *parser.Extensions) (next bool) { return v.inner.VisitExtensions(m) } func (v *extendedAutoDisableVisitor) VisitField(f *parser.Field) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitField(f) }, func(offset int) { v.automator.Disable(offset, f.Comments, f.InlineComment) }) } func (v *extendedAutoDisableVisitor) VisitGroupField(m *parser.GroupField) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitGroupField(m) }, func(offset int) { v.automator.Disable(offset, m.Comments, m.InlineComment) }) } func (v *extendedAutoDisableVisitor) VisitImport(i *parser.Import) (next bool) { return v.inner.VisitImport(i) } func (v *extendedAutoDisableVisitor) VisitMapField(m *parser.MapField) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitMapField(m) }, func(offset int) { v.automator.Disable(offset, m.Comments, m.InlineComment) }) } func (v *extendedAutoDisableVisitor) VisitMessage(m *parser.Message) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitMessage(m) }, func(offset int) { v.automator.Disable(offset, m.Comments, m.InlineCommentBehindLeftCurly) }) } func (v *extendedAutoDisableVisitor) VisitOneof(o *parser.Oneof) (next bool) { return v.inner.VisitOneof(o) } func (v *extendedAutoDisableVisitor) VisitOneofField(o *parser.OneofField) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitOneofField(o) }, func(offset int) { v.automator.Disable(offset, o.Comments, o.InlineComment) }) } func (v *extendedAutoDisableVisitor) VisitOption(o *parser.Option) (next bool) { return v.inner.VisitOption(o) } func (v *extendedAutoDisableVisitor) VisitPackage(p *parser.Package) (next bool) { return v.inner.VisitPackage(p) } func (v *extendedAutoDisableVisitor) VisitReserved(r *parser.Reserved) (next bool) { return v.inner.VisitReserved(r) } func (v *extendedAutoDisableVisitor) VisitRPC(r *parser.RPC) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitRPC(r) }, func(offset int) { v.automator.Disable(offset, r.Comments, r.InlineComment) }) } func (v *extendedAutoDisableVisitor) VisitService(s *parser.Service) (next bool) { return v.doIfFailure(func() bool { return v.inner.VisitService(s) }, func(offset int) { v.automator.Disable(offset, s.Comments, s.InlineCommentBehindLeftCurly) }) } func (v *extendedAutoDisableVisitor) VisitSyntax(s *parser.Syntax) (next bool) { return v.inner.VisitSyntax(s) } func (v *extendedAutoDisableVisitor) doIfFailure( visit func() bool, disable func(int), ) bool { prev := v.inner.Failures() next := visit() curr := v.inner.Failures() if len(prev) == len(curr) { return next } disable(curr[len(curr)-1].Pos().Offset) return next }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yoheimuta/protolint'

If you have feedback or need assistance with the MCP directory API, please join our Discord server