All Projects → uesteibar → minerva

uesteibar / minerva

Licence: MIT license
Elixir framework for easily writing koans.

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to minerva

nested filter
Providing Map#drop (by key or value) and Map#take functionality for nested maps
Stars: ✭ 32 (+146.15%)
Mutual labels:  elixir-library
riemannx
A riemann client for elixir (TCP/UDP/TLS supported)
Stars: ✭ 23 (+76.92%)
Mutual labels:  elixir-library
Elixir Koans
Elixir learning exercises
Stars: ✭ 1,788 (+13653.85%)
Mutual labels:  koans
elixir-revisionair ecto
A Revisionair adapter based on Ecto. Allows you to persist and keep track of revisions of your data structures in any of Ecto's supported databases.
Stars: ✭ 18 (+38.46%)
Mutual labels:  elixir-library
smppex
✉️ SMPP 3.4 protocol and framework implementation in Elixir
Stars: ✭ 86 (+561.54%)
Mutual labels:  elixir-library
refactoring-koans-js
Refactoring Koans to help you learn to refactor code smells in javascript
Stars: ✭ 15 (+15.38%)
Mutual labels:  koans
emojix
Simple emoji library for Elixir 💩
Stars: ✭ 21 (+61.54%)
Mutual labels:  elixir-library
permission ex
No description or website provided.
Stars: ✭ 23 (+76.92%)
Mutual labels:  elixir-library
pardall markdown
Reactive publishing framework, filesystem-based with support for Markdown, nested hierarchies, and instant content rebuilding. Written in Elixir.
Stars: ✭ 84 (+546.15%)
Mutual labels:  elixir-library
Python koans
Python Koans - Learn Python through TDD
Stars: ✭ 4,478 (+34346.15%)
Mutual labels:  koans
vim-ide-elixir
Highly opininated setup of vim plugins for Elixir development
Stars: ✭ 28 (+115.38%)
Mutual labels:  elixir-library
simple graphql client
SimpleGraphqlClient is a graphql client, focused on simplicity and ease of use.
Stars: ✭ 17 (+30.77%)
Mutual labels:  elixir-library
julia koans
Small exercises to get you used to reading and writing Julia code!
Stars: ✭ 28 (+115.38%)
Mutual labels:  koans
sockerl
Sockerl is an advanced Erlang/Elixir socket framework for TCP protocols and provides fast, useful and easy-to-use API for implementing servers, clients and client connection pools.
Stars: ✭ 26 (+100%)
Mutual labels:  elixir-library
fat ecto
Query mechanism for Ecto
Stars: ✭ 20 (+53.85%)
Mutual labels:  elixir-library
mix systemd
Library of mix tasks to generate a systemd unit file for an Elixir project
Stars: ✭ 48 (+269.23%)
Mutual labels:  elixir-library
ecto autoslug field
Automatically create slugs for Ecto schemas.
Stars: ✭ 138 (+961.54%)
Mutual labels:  elixir-library
libsalty
Elixir bindings for libsodium (NIF)
Stars: ✭ 20 (+53.85%)
Mutual labels:  elixir-library
sftp client
An Elixir SFTP Client that wraps Erlang's ssh and ssh_sftp.
Stars: ✭ 29 (+123.08%)
Mutual labels:  elixir-library
crystal-koans
The Crystal Programming Language Koans
Stars: ✭ 31 (+138.46%)
Mutual labels:  koans

Minerva

Hex Version

Minerva is a framework for Elixir that will allow you to easily write koans.

With very little setup, it will allow you to write koans in plain elixir and run them automagically every time the user modifies the file.

The DSL is inspired in elixir-koans. Thanks!

Index

Installation

Add minerva to your list of dependencies in mix.exs:

def deps do
  [{:minerva, "~> 0.2.5"}]
end

Usage

Add it to your supervision tree, passing a list of your koan modules as argument.

In your application.ex file (If you're in a supervised project):

def start(_type, _args) do
  import Supervisor.Spec, warn: false

  children = [
    worker(Minerva, [[MyApp.AwesomeKoan]]),
  ]

  opts = [strategy: :one_for_one, name: MyApp.Supervisor]
  Supervisor.start_link(children, opts)
end

Or you can just start up the server with:

Minerva.start_link([MyApp.AwesomeKoan])

In your config.exs file, let minerva know where your koans live:

config :minerva, files: "lib/my_app/koans"

Now you can start writing koans:

defmodule MyApp.AwesomeKoan do
  use Minerva.Koans

  koan "You can use variables" do
    var = ___

    assert 1 == var
  end

  koan "You can add numbers" do
    assert 1 + 3 == ___
  end
end

See that ___ represents a gap the user should fill to make the koan pass.

You can now run your project with

mix run --no-halt

You'll see something like:

Welcome to the koan!
######################

The exercises are found somewhere under lib/my_app/koans.
Just fill the gaps (anywhere you see ___, that's a gap),
save the file and come back here!

Module: AwesomeKoan
Koan:   You can compare variables

  var = ___

  assert(1 == var)

Meditate a little bit and try again =)

Time to go to your editor and start filling the gaps! The code will be reloaded and the koans will run every time you save a koan file.

Enjoy!

Documentation can be found on HexDocs.

Running locally

Clone the repository

git clone [email protected]:uesteibar/minerva.git

Install dependencies

cd minerva && mix deps.get

To run the tests

mix test

To run the lint

mix credo

Contributing

Pull requests are always welcome =)

The project uses standard-changelog to update the Changelog with each commit message and upgrade the package version. For that reason every contribution should have a title and body that follows the conventional commits standard conventions (e.g. feat(runner): Make it smarter than Jarvis).

To make this process easier, you can do the following:

Install commitizen and cz-conventional-changelog globally

npm i -g commitizen cz-conventional-changelog

Save cz-conventional-changelog as default

echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

Instead of git commit, you can now run

git cz

and follow the instructions to generate the commit message.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].