github.com/ralsina/hansa

A wrapper around go-enry for programming language detection

0 stars
2 dependents
License: MIT

Nothing has been indexed for 0.1.6 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.

Installation

# Add this to your shard.yml
dependencies:
  hansa:
    github: ralsina/hansa
    version: ~> 0.1.6

Then run:

shards install

shard.yml

No shard.yml has been indexed for 0.1.6. You can read it on the repository.

Dependencies

Unknown: the shard.yml for this version has not been read yet.

README

This README is the one indexed from the repository at its latest ref, not from the tag for this version.

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:

  1. Editor modelines (# vim: set ft=ruby:, # -*- mode: python -*-) in the first or last 5 lines.
  2. Shebang lines, including /usr/bin/env indirection, 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

  1. Add the dependency to your shard.yml:

    dependencies:
      hansa:
        github: ralsina/hansa
  2. 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

  1. Fork it (https://github.com/ralsina/hansa/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors