View Source mix kyopuro.new (Kyopuro v0.6.0)

コンテスト/問題を指定してモジュールとテストを生成するMixタスクです。本Mixタスクを使用する場合は事前にmix kyopuro.loginを実行してログインしておくことが必要です。

$ mix kyopuro.new

上記Mixタスクを実行するとコンテストを「常設中のコンテスト」「Rated対象から検索」「カテゴリから検索」「キーワードから検索」から検索するよう促されます。

1. URLを入力
2. 常設中のコンテスト
3. Rated対象から検索
4. カテゴリから検索
5. キーワードから検索

>

適当に選択していくとモジュールとテストが生成されます。例としてhogeプロジェクトでABC100のA問題を選択したものを載せます。

 lib - hoge - abc100 - a.ex

 test - hoge_test - abc100 - a_test.exs

モジュールとテストはKyopuroで用意しているテンプレート以外にユーザー側で定義したものを使用することが可能です。

# in config/config.exs
import Config

config :kyopuro,
  module_template: "priv/templates/module_template.ex",
  test_template: "priv/templates/test_template.ex"

Kyopuroで用意しているテンプレートは以下のようになっています。

モジュールのテンプレート

# モジュールのテンプレート
defmodule <%= inspect(module) %> do
  def main do

  end
end

テストのテンプレート

defmodule <%= inspect(test_module) %> do
  use ExUnit.Case

  import ExUnit.CaptureIO
<%= for test_case <- test_cases do %>
  test <%= inspect(Keyword.get(test_case, :input)) %> do
    assert(
      capture_io([input: <%= inspect(Keyword.get(test_case, :input)) %>, capture_prompt: false], fn ->
        <%= inspect(module) %>.main()
      end) == <%= inspect(Keyword.get(test_case, :output)) %>
    )
  end<% end %>
end