summaryrefslogtreecommitdiff
path: root/lib/nola_plugins/txt/markov_native.ex
blob: aa6b4545140800f8c22e1a0923af2227ce84a1f7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
defmodule Nola.Plugins.Txt.MarkovNative do
  @behaviour Nola.Plugins.Txt.Markov

  def start_link() do
    ExChain.MarkovModel.start_link()
  end

  def reload(data, markov) do
    data = data
    |> Enum.map(fn({_, data}) ->
      for {line, _idx} <- data, do: line
    end)
    |> List.flatten

    ExChain.MarkovModel.populate_model(markov, data)
    :ok
  end

  def sentence(markov) do
    case ExChain.SentenceGenerator.create_filtered_sentence(markov) do
      {:ok, line, _, _} -> {:ok, line}
      error -> error
    end
  end

  def complete_sentence(sentence, markov) do
    case ExChain.SentenceGenerator.complete_sentence(markov, sentence) do
      {line, _} -> {:ok, line}
      error -> error
    end
  end

end