Ignorelint::FormatLinterRegistry
Registry that maps FileType values to their FormatLinter instances.
This is the bridge between the file-type system and the linting system.
When the Linter needs format-specific checks, it calls
FormatLinterRegistry.for(file_type) and gets back the appropriate adapter.
Many file types share the GitignoreStyleLinter because they follow
gitignore semantics (e.g. .claudeignore, .stylelintignore, .rgignore).
Only formats with unique semantics get their own linter.
The LINTERS hash is a private module constant — it is created once at
program startup and reused for every file. Each value is a struct instance
(no allocation overhead).
Class methods
Look up the format-specific linter for a given file type.
Returns NullFormatLinter.new for unrecognized types, so the caller
always gets a valid object and never needs to check for nil.