warrah 0.1.0

Warrah: A command-line utility and Rust library that sloppily removes code comments from a text file, supporting 60+ programming languages.
# Supported languages

Here is the list of supported languages in which Warrah will remove comments. Languages are detected based on file extensions or file names.

- **Ada**
  - Extensions: `.adb`, `.ads`
  - Comments: `--`

- **Assembly**
  - Extensions: `.asm`, `.s`
  - Comments: `;`, `#`

- **C#**
  - Extension: `.cs`
  - Comments: `//`, `/* ... */`

- **C / C++**
  - Extensions: `.c`, `.cpp`, `.h`, `.hpp`
  - Comments: `//`, `/* ... */`

- **COBOL**
  - Extensions: `.cob`, `.cbl`
  - Comments: `*>`
  - ⚠️ Only modern comment style supported; fixed-format (column-based) is not supported

- **CMake**
  - Extension: `.cmake`
  - File: `CMakeLists.txt`
  - Comments: `#`

- **CoffeeScript**
  - Extension: `.coffee`
  - Comments: `#`, `### ... ###`

- **CSS**
  - Extensions: `.css`
  - Comments: `/* ... */`

- **Config files / scripting (misc)**
  - Extensions: `.env`, `.conf`, `.gitignore`, `.cfg`
  - Comments: `#`

- **D**
  - Extension: `.d`
  - Comments: `//`, `/* ... */`

- **Dart**
  - Extension: `.dart`
  - Comments: `//`, `/* ... */`

- **Dockerfile**
  - File: `Dockerfile`
  - Comments: `#`

- **EJS (Embedded JavaScript)**
  - Extension: `.ejs`
  - Comments: `<%-- ... --%>`

- **Elixir / Erlang**
  - Extensions: `.ex`, `.exs`, `.erl`
  - Comments: `#`

- **Elm**
  - Extension: `.elm`
  - Comments: `--`

- **F#**
  - Extension: `.fs`, `.fsx`
  - Comments: `//`
  - ⚠️ Multiline comments `(* ... *)` are not supported

- **Fortran**
  - Extensions: `.f90`, `.f95`, `.f03`, `.f08`, `.f`, `.for`
  - Comments: `!`

- **Gherkin (Cucumber BDD)**
  - Extension: `.feature`
  - Comments: `#`

- **Go**
  - Extension: `.go`
  - Comments: `//`, `/* ... */`

- **Gradle**
  - Extensions: `.gradle`, `.kts`
  - Comments: `//`, `/* ... */`

- **Groovy**
  - Extension: `.groovy`
  - Comments: `//`, `/* ... */`

- **Handlebars / Mustache**
  - Extensions: `.hbs`, `.handlebars`, `.mustache`
  - Comments: `{{! ... }}`

- **Haskell**
  - Extension: `.hs`
  - Comments: `--`
  - ⚠️ Multiline comments `{- -}` are not supported

- **Haxe**
  - Extension: `.hx`
  - Comments: `//`, `/* ... */`

- **HCL (HashiCorp Configuration Language)**
  - Extension: `.hcl`
  - Comments: `#`, `//`, `/* ... */`

- **HTML**
  - Extensions: `.html`, `.htm`
  - Comments: `<!-- ... -->`

- **Java**
  - Extension: `.java`
  - Comments: `//`, `/* ... */`

- **JavaScript / TypeScript**
  - Extensions: `.js`, `.ts`
  - Comments: `//`, `/* ... */`

- **Jinja2**
  - Extensions: `.jinja`, `.j2`
  - Comments: `{# ... #}`

- **JSONC (JSON with Comments)**
  - Extension: `.jsonc`
  - File: `tsconfig.json`
  - Comments: `//`, `/* ... */`

- **JSX / TSX (React)**
  - Extensions: `.jsx`, `.tsx`
  - Comments: `//`, `/* ... */`

- **Julia**
  - Extension: `.jl`
  - Comments: `#`
  - ⚠️ Multiline comments `#= =#` are not supported

- **Kotlin**
  - Extension: `.kt`
  - Comments: `//`, `/* ... */`

- **LaTeX**
  - Extension: `.tex`
  - Comments: `%`

- **Less**
  - Extension: `.less`
  - Comments: `//`, `/* ... */`

- **Lisp / Clojure / Scheme**
  - Extensions: `.lisp`, `.clj`, `.scm`
  - Comments: `;`
  - ⚠️ Multiline comments `#| ... |#` are not supported

- **Liquid**
  - Extension: `.liquid`
  - Comments: `{% comment %} ... {% endcomment %}`

- **Makefile**
  - Extension: `.mk`
  - File: `Makefile`
  - Comments: `#`

- **Markdown**
  - Extension: `.md`
  - Comments: `<!-- ... -->`

- **Objective-C, MATLAB**
  - Extensions: `.m`, `.mm`
  - Comments: `//`, `%`, `/* ... */`

- **Org-mode**
  - Extension: `.org`
  - Comments: `#`

- **Perl**
  - Extension: `.pl`, `.pm`
  - Comments: `#`

- **PHP**
  - Extension: `.php`
  - Comments: `//`, `#`, `/* ... */`

- **PowerShell**
  - Extension: `.ps1`
  - Comments: `#`, `<# ... #>`

- **Python**
  - Extension: `.py`
  - Comments: `#`, `""" ... """`, `''' ... '''`
  - ⚠️ Triple-quoted strings are treated as docstrings and will be removed, even if used as actual strings.

- **QML (Qt Modeling Language)**
  - Extension: `.qml`
  - Comments: `//`, `/* ... */`

- **R**
  - Extensions: `.r`
  - Comments: `#`

- **Rego (Open Policy Agent)**
  - Extension: `.rego`
  - Comments: `#`

- **Ruby**
  - Extension: `.rb`
  - Comments: `#`

- **Rust**
  - Extension: `.rs`
  - Comments: `//`, `/* ... */`

- **SASS / SCSS**
  - Extensions: `.sass`, `.scss`
  - Comments: `//`, `/* ... */`

- **Scala**
  - Extension: `.scala`
  - Comments: `//`, `/* ... */`

- **Shell / Bash**
  - Extensions: `.sh`, `.bash`
  - Comments: `#`

- **Starlark (Bazel build language)**
  - Extension: `.bzl`
  - Comments: `#`

- **Swift**
  - Extension: `.swift`
  - Comments: `//`, `/* ... */`

- **SQL**
  - Extensions: `.sql`
  - Comments: `--`, `/* ... */`

- **Terraform (HCL)**
  - Extension: `.tf`
  - Comments: `#`, `//`, `/* ... */`

- **Twig**
  - Extension: `.twig`
  - Comments: `{# ... #}`

- **Verilog / SystemVerilog**
  - Extensions: `.v`, `.sv`, `.svh`
  - Comments: `//`, `/* ... */`

- **VB / VBScript**
  - Extensions: `.vb`, `.vbs`
  - Comments: `'`

- **Vue**
  - Extension: `.vue`
  - Comments: `//`, `<!-- ... -->`,  `/* ... */`

- **XML**
  - Extensions: `.xml`, `.xsd`, `.pom`
  - Comments: `<!-- ... -->`

- **YAML / TOML / INI**
  - Extensions: `.yaml`, `.yml`, `.toml`, `.ini`
  - Comments: `#`

- **Zig**
  - Extension: `.zig`
  - Comments: `//`, `/* ... */`