hansa
Version, currently 0.2.19 versions
github.com/ralsina/hansa
A wrapper around go-enry for programming language detection
Installation
# Add this to your shard.yml
dependencies:
hansa:
github: ralsina/hansa
version: ~> 0.2.1Then run:
shards installshard.yml
- Crystal
>= 1.13.1- License
- MIT
- Author
- Roberto Alsina
- Target
hansafrom src/main.cr
Dependencies
Runtime Dependencies
- docopt*github: ralsina/docopt.cr
- baked_file_system0.11.1github: ralsina/baked_file_system
README
Hansa
Detect the programming language based only on content.
Just content, no filename, no extension, nothing else. There are other tools for that.
This is a port of a piece of go-enry to Crystal, trained on the same Linguist corpus (go-enry v2.9.6).
Before the classifier runs, two content-only strategies from go-enry v2 are consulted, in this order:
- Editor modelines (
# vim: set ft=ruby:,# -*- mode: python -*-) in the first or last 5 lines. - Shebang lines, including
/usr/bin/envindirection, with the interpreter mapped through Linguist's table. A shebang naming one language wins outright; ambiguous ones (perl → Perl/Pod) restrict the classifier to those candidates.
Paradoxically it will detect Crystal as Ruby but it's close enough ;-)
Installation
-
Add the dependency to your
shard.yml:dependencies: hansa: github: ralsina/hansa -
Run
shards install
Usage
require "hansa"
puts Hansa.classify(File.read(ARGV[0])) # => "Ruby"
There is a "hansa" command line tool that can be used to classify files:
$ hansa src/hansa.cr
src/hansa.cr CoffeeScript
$ printf '#!/bin/bash\necho hi\n' | hansa -
- Shell
Run hansa --help for usage. Errors are reported on stderr with a
non-zero exit code, and a file argument of - reads standard input.
Development
I don't expect to do much more development here.
Contributing
- Fork it (https://github.com/ralsina/hansa/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
- Roberto Alsina - creator and maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.2.1- Tagged
- Sep 27, 2026
- Commit
6a968648e988- Crystal
>= 1.13.1- Indexed
- yes
Dependents
Repository
github.com/ralsina/hansa
Metadata
- Created
- Aug 16, 2026
- Updated
- Oct 14, 2026
- Synced
- Oct 14, 2026
- Versions
- 9