Current section
12 Versions
Jump to
Current section
12 Versions
Compare versions
10
files changed
+59
additions
-1295
deletions
| @@ -5,7 +5,7 @@ | |
| 5 5 | [](https://hex.pm/packages/paasaa) |
| 6 6 | [](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…