// 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, } }