Trackler

The data for the exercises in for all of the Exercism language tracks, along with the code to sew it all together.

Installation

Add this line to your application's Gemfile:

gem 'trackler'

And then execute:

$ bundle

Or install it yourself as:

$ gem install trackler

Usage

To access a language track, use the track id (e.g. ruby, cpp):

track = Trackler.tracks["fsharp"]
track.language
# => "F#"

Tracks have implementations of specific problems:

track.implementations.each do |implementation|
  # implementation.files, implementation.readme, etc
end

To get the specification of a problem, use the exercise slug:

specification = Trackler.specifications["leap"]

Specifications contain the generic, language-independent metadata:

specification.blurb
# => "Write a program that will take a year and report if it is a leap year."
specification.name
# => "Leap"

You can get all of the different language implementations for a specification:


Trackler.implementations[specification.slug].each do |implementation|
  # ...
end

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install.

To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Adding a new language track

Language tracks are included as submodules. To add a new one, run the following command, defining the track id as an environment variable. Shown here with prolog as an example.

$ TRACK_ID=prolog; git submodule add https://github.com/exercism/$TRACK_ID tracks/$TRACK_ID

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/exercism/trackler. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

See CONTRIBUTING.md for details.

This is an extraction from https://github.com/exercism/x-api.

Publishing

Owners of the gem can publish it to rubygems like this:

gem build trackler.gemspec
gem install --local trackler-$VERSION.gem
gem push trackler-$VERSION.gem

Users

Projects that make use of this gem:

License

The gem is available as open source under the terms of the MIT License.