Files
PgTidy/pkg/config/config.go
T
2026-06-23 16:59:50 +02:00

56 lines
1.6 KiB
Go

// Package config defines PgTidy's formatter (and, later, linter) configuration.
//
// Defaults encode the project house style reverse-engineered from the corpus.
// A future change will load/merge these from a discovered .pgtidy.yaml file.
package config
// Case controls keyword/identifier casing.
type Case string
const (
CaseUpper Case = "upper"
CaseLower Case = "lower"
// CasePreserve leaves the token text unchanged.
CasePreserve Case = "preserve"
)
// CommaStyle controls where separators sit in multi-line lists.
type CommaStyle string
const (
// CommaLeading puts the comma at the start of the continuation line
// (",col"), the house style.
CommaLeading CommaStyle = "leading"
// CommaTrailing puts the comma at the end of the preceding line ("col,").
CommaTrailing CommaStyle = "trailing"
)
// Style is the formatter configuration.
type Style struct {
// Indent is one indentation level (default two spaces).
Indent string
// Newline is the line terminator emitted by the formatter.
Newline string
// KeywordCase controls SQL keyword casing (types excluded — see TypeCase).
KeywordCase Case
// IdentCase controls unquoted identifier casing (quoted identifiers are
// never touched).
IdentCase Case
// TypeCase controls built-in type-name casing.
TypeCase Case
// Commas controls list separator placement.
Commas CommaStyle
}
// Default returns the house-style configuration.
func Default() Style {
return Style{
Indent: " ",
Newline: "\n",
KeywordCase: CaseUpper,
IdentCase: CaseLower,
TypeCase: CaseLower,
Commas: CommaLeading,
}
}