# .editorconfig
# ETLPlus
#
# Copyright © 2026 Dagitali LLC. All rights reserved.
#
# EditorConfig configuration for shared editor and IDE formatting defaults.
#
# EditorConfig is a widely supported standard for defining and maintaining
# consistent coding styles between different editors and IDEs. This file
# defines the baseline formatting rules for this repository, with language-
# specific overrides for various file types. By adhering to these rules,
# contributors can reduce formatting inconsistencies and improve code quality.
#
# Responsibilities
# - Define baseline whitespace, newline, charset, and indentation behavior
#   across editors and IDEs.
# - Keep language-specific indentation rules close to the file patterns they
#   affect.
# - Reduce formatting churn between contributors and automated formatters.
#
# Maintainer Notes
# - Keep `root = true` so parent-directory EditorConfig files do not affect
#   this repository.
# - Keep Makefile indentation tab-based; GNU Make recipe lines require tabs.
# - Keep Python indentation aligned with the formatter and lint configuration.
#
# References
# - EditorConfig file format reference: https://editorconfig.org/#file-format-details
# - Standard EditorConfig examples: https://github.com/jokeyrhyme/standard-editorconfig

# Top-most EditorConfig file
root = true

# Defaults
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

# Bazel
# https://bazel.build/
# https://github.com/bazelbuild/buildtools/blob/master/BUILD.bazel
[*.{bazel,bzl}]
indent_size = 4
indent_style = space

# CSS
# https://google.github.io/styleguide/htmlcssguide.xml#General_Formatting_Rules
# http://cssguidelin.es/#syntax-and-formatting
[*.css]
indent_size = 2
indent_style = space
trim_trailing_whitespace = true

# GNU Make
# https://www.gnu.org/software/make/manual/html_node/Recipe-Syntax.html
[Makefile,*.mk]
indent_style = tab

# Go
# https://golang.org/cmd/gofmt/
[{go.mod,*.go}]
indent_style = tab

# GraphQL
# https://graphql.org/learn/
# https://prettier.io
[*.graphql]
indent_size = 2
indent_style = space

# HTML
# https://google.github.io/styleguide/htmlcssguide.xml#General_Formatting_Rules
[*.{htm,html}]
indent_size = 2
indent_style = space
trim_trailing_whitespace = true

# Java
# https://google.github.io/styleguide/javaguide.html#s4.2-block-indentation
[*.java]
indent_size = 2
indent_style = space

# JavaScript, JSON, JSX, JavaScript Modules, TypeScript
# https://github.com/feross/standard
# https://prettier.io
[*.{cjs,js,json,jsx,mjs,ts,tsx}]
indent_size = 2
indent_style = space

# Kotlin
# https://android.github.io/kotlin-guides/style.html#indentation
[*.{kt,kts}]
indent_size = 4
indent_style = space

# LESS
# https://github.com/less/less-docs#less-standards
[*.less]
indent_size = 2
indent_style = space

# Lua
# http://lua-users.org/wiki/LuaStyleGuide
[*.{lua,luacheckrc}]
indent_size = 2
indent_style = space

# PHP
# http://www.php-fig.org/psr/psr-2/
[*.php]
indent_size = 4
indent_style = space

# Python
# https://www.python.org/dev/peps/pep-0008/#code-lay-out
[*.py]
indent_size = 4
indent_style = space

# Ruby
# http://www.caliban.org/ruby/rubyguide.shtml#indentation
[*.rb]
indent_size = 2
indent_style = space

# Rust
# https://github.com/rust-lang/rust/blob/master/src/doc/style/style/whitespace.md
[*.rs]
indent_size = 4
indent_style = space
insert_final_newline = false
trim_trailing_whitespace = true

# SASS
# https://sass-guidelin.es/#syntax--formatting
[*.{sass,scss}]
indent_size = 2
indent_style = space

# Shell
# https://google.github.io/styleguide/shell.xml#Indentation
[*.{bash,sh,zsh}]
indent_size = 2
indent_style = space

# Svelte
# https://github.com/sveltejs/svelte/blob/master/.editorconfig
[*.svelte]
indent_size = 2
indent_style = tab

# TOML
# https://github.com/toml-lang/toml/tree/master/examples
[*.toml]
indent_size = 2
indent_style = space

# Vue.js
# https://eslint.vuejs.org/rules/html-indent.html
# https://eslint.vuejs.org/rules/script-indent.html
[*.vue]
indent_size = 2
indent_style = space

# YAML
# http://yaml.org/spec/1.2/2009-07-21/spec.html#id2576668
[*.{yaml,yml}]
indent_size = 2
indent_style = space
