Current section

12 Versions

Jump to

Compare versions

10 files changed
+59 additions
-1295 deletions
  @@ -5,7 +5,7 @@
5 5 [![Hex.pm](https://img.shields.io/hexpm/v/paasaa.svg?maxAge=2592000)](https://hex.pm/packages/paasaa)
6 6 [![Hex.pm](https://img.shields.io/hexpm/l/paasaa.svg?maxAge=2592000)](https://hex.pm/packages/paasaa)
7 7
8 - Language detection for Elixir
8 + Natural language detection for Elixir
9 9
10 10 [Api Documentation] | [Hex Package]
11 11
  @@ -15,7 +15,7 @@ Add `paasaa` to your list of dependencies in `mix.exs`:
15 15
16 16 ```elixir
17 17 def deps do
18 - [{:paasaa, "~> 0.1.0"}]
18 + [{:paasaa, "~> 0.2.0"}]
19 19 end
20 20 ```
  @@ -3,15 +3,11 @@
3 3 {<<"description">>,<<"Natural language detection">>}.
4 4 {<<"elixir">>,<<"~> 1.3">>}.
5 5 {<<"files">>,
6 - [<<"lib/paasaa.ex">>,<<"priv/languages.json">>,<<"priv/scripts.json">>,
7 - <<"priv/support.json">>,<<"mix.exs">>,<<"README.md">>,<<"LICENSE">>]}.
6 + [<<"lib/mix/tasks.ex">>,<<"lib/paasaa.ex">>,<<"priv/languages.binary">>,
7 + <<"priv/scripts.binary">>,<<"mix.exs">>,<<"README.md">>,<<"LICENSE">>]}.
8 8 {<<"licenses">>,[<<"MIT">>]}.
9 9 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/minibikini/paasaa">>}]}.
10 10 {<<"maintainers">>,[<<"Egor Kislitsyn">>]}.
11 11 {<<"name">>,<<"paasaa">>}.
12 - {<<"requirements">>,
13 - [[{<<"app">>,<<"exjsx">>},
14 - {<<"name">>,<<"exjsx">>},
15 - {<<"optional">>,false},
16 - {<<"requirement">>,<<"~> 3.2">>}]]}.
17 - {<<"version">>,<<"0.1.1">>}.
12 + {<<"requirements">>,[]}.
13 + {<<"version">>,<<"0.2.0">>}.
  @@ -0,0 +1,47 @@
1 + defmodule Mix.Tasks.Paasaa.PrepareLanguages do
2 + use Mix.Task
3 + # mix paasaa.prepare_languages
4 +
5 + @shortdoc "Parse and prepare erlang term file"
6 + @moduledoc false
7 +
8 + def run(_args) do
9 + generate_scripts
10 + generate_languages
11 +
12 + Mix.shell.info "The term files generated successfully!"
13 + :ok
14 + end
15 +
16 + def generate_scripts do
17 + File.write! "./priv/scripts.binary", "./data/scripts.json"
18 + |> File.read!
19 + |> JSX.decode!
20 + |> Enum.map(fn {name, expr} -> {name, Regex.compile!(expr, "u")} end)
21 + |> :erlang.term_to_binary
22 + end
23 +
24 + def generate_languages do
25 + File.write! "./priv/languages.binary", "./data/languages.json"
26 + |> File.read!
27 + |> JSX.decode!
28 + |> Enum.map(&parse_trigrams/1)
29 + |> Enum.into(%{})
30 + |> :erlang.term_to_binary
31 + end
32 +
33 + defp parse_trigrams({script, langs}), do: {script, parse_trigrams langs}
34 +
35 + defp parse_trigrams(langs) when is_map(langs) do
36 + Enum.map langs, fn {lang, trigrams} ->
37 + {lang, parse_trigrams trigrams}
38 + end
39 + end
40 +
41 + defp parse_trigrams(trigrams_str) when is_binary(trigrams_str) do
42 + trigrams_str
43 + |> String.split("|")
44 + |> Enum.with_index
45 + |> Enum.into(%{})
46 + end
47 + end
  @@ -9,27 +9,13 @@ defmodule Paasaa do
9 9
10 10 """
11 11
12 - @scripts "./priv/scripts.json"
12 + @scripts "./priv/scripts.binary"
13 13 |> File.read!
14 - |> JSX.decode!
15 - |> Enum.map(fn {name, expr} -> {name, Regex.compile!(expr, "u")} end)
14 + |> :erlang.binary_to_term
16 15
17 - @languages "./priv/languages.json"
16 + @languages "./priv/languages.binary"
18 17 |> File.read!
19 - |> JSX.decode!
20 - |> Enum.map(fn {script, langs} ->
21 - langs = Enum.map(langs, fn {lang, trigrams} ->
22 - trigrams = trigrams
23 - |> String.split("|")
24 - |> Enum.with_index
25 - |> Enum.into(%{})
26 -
27 - {lang, trigrams}
28 - end)
29 -
30 - {script, langs}
31 - end)
32 - |> Enum.into(%{})
18 + |> :erlang.binary_to_term
33 19
34 20 @max_difference 300
  @@ -4,7 +4,7 @@ defmodule Paasaa.Mixfile do
4 4 def project do
5 5 [
6 6 app: :paasaa,
7 - version: "0.1.1",
7 + version: "0.2.0",
8 8 elixir: "~> 1.3",
9 9 description: description(),
10 10 package: package(),
  @@ -20,7 +20,7 @@ defmodule Paasaa.Mixfile do
20 20
21 21 defp deps do
22 22 [
23 - {:exjsx, "~> 3.2"},
23 + {:exjsx, "~> 3.0", only: [:dev, :test]},
24 24 {:ex_doc, "~> 0.12", only: :dev},
25 25 {:mix_test_watch, "~> 0.2", only: :dev},
26 26 {:benchfella, "~> 0.3.0", only: :dev},
Loading more files…