Current section

12 Versions

Jump to

Compare versions

6 files changed
+44 additions
-33 deletions
  @@ -36,9 +36,9 @@ Detect language and return a scored list of languages:
36 36 iex> Paasaa.all("Detect this!")
37 37 [
38 38 {"eng", 1.0},
39 - {"sco", 0.8668304668304668},
40 - {"nob", 0.6054054054054054},
41 - {"swe", 0.5921375921375922},
39 + {"sco", 0.8675529295913343},
40 + {"nob", 0.6065977351058591},
41 + {"swe", 0.5923190546528804},
42 42 ...
43 43 ]
44 44 ```
  @@ -52,7 +52,7 @@ mix bench
52 52 ## Update Language Data
53 53
54 54 ```shell
55 - mix run script/generate_language_data.ex
55 + mix run script/generate_language_data.exs
56 56 ```
57 57
58 58 ## Derivation
  @@ -10,4 +10,4 @@
10 10 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/minibikini/paasaa">>}]}.
11 11 {<<"name">>,<<"paasaa">>}.
12 12 {<<"requirements">>,[]}.
13 - {<<"version">>,<<"0.5.0">>}.
13 + {<<"version">>,<<"0.5.1">>}.
  @@ -90,10 +90,10 @@ defmodule Paasaa do
90 90 iex> Paasaa.all("Detect this!") |> Enum.take(5)
91 91 [
92 92 {"eng", 1.0},
93 - {"sco", 0.8668304668304668},
94 - {"nob", 0.6054054054054054},
95 - {"swe", 0.5921375921375922},
96 - {"nno", 0.5518427518427518}
93 + {"sco", 0.8675529295913343},
94 + {"nob", 0.6065977351058591},
95 + {"swe", 0.5923190546528804},
96 + {"nno", 0.5534219596258001}
97 97 ]
98 98 """
99 99
  @@ -129,10 +129,20 @@ defmodule Paasaa do
129 129 |> normalize(str)
130 130
131 131 true ->
132 - [{script, 1}]
132 + if allowed?(script, options) do
133 + [{script, 1}]
134 + else
135 + @und
136 + end
133 137 end
134 138 end
135 139
140 + defp allowed?(lang, options) do
141 + white = options[:whitelist]
142 + black = options[:blacklist]
143 + (Enum.empty?(white) || Enum.member?(white, lang)) && !Enum.member?(black, lang)
144 + end
145 +
136 146 @doc """
137 147 Detects a script.
138 148
  @@ -189,7 +199,7 @@ defmodule Paasaa do
189 199 languages
190 200 else
191 201 Enum.filter(languages, fn {lang, _} ->
192 - (Enum.empty?(white) || Enum.member?(white, lang)) && !Enum.member?(black, lang)
202 + allowed?(lang, options)
193 203 end)
194 204 end
195 205 end
unknownlib/paasaa/languages.ex
File is too large to be displayed (100 KB limit).
  @@ -3,37 +3,38 @@ defmodule Paasaa.Scripts do
3 3
4 4 @data %{
5 5 "Arabic" =>
6 - "[؀-؄؆-؋؍-ؚ؞ؠ-ؿف-يٖ-ٟ٪-ٯٱ-ۜ۞-ۿݐ-ݿࢠ-ࢲࣤ-ࣿﭐ-﯁ﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷽ﹰ-ﹴﹶ-ﻼ]|�[�-�]|�[�-��-������-��-��������-�������������-��-��-��-���-��-��-��-��-���]",
7 - "Cyrillic" => "[Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚝꚟ]",
8 - "Devanagari" => "[ऀ-ॐ॓-ॣ०-ॿ꣠-ꣻ]",
6 + "[؀-؄؆-؋؍-ؚ؜؞ؠ-ؿف-يٖ-ٯٱ-ۜ۞-ۿݐ-ݿࢠ-ࢴࢶ-ࢽ࣓-ࣣ࣡-ࣿﭐ-﯁ﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷽ﹰ-ﹴﹶ-ﻼ]|�[�-�]|�[�-��-������-��-��������-�������������-��-��-��-���-��-��-��-��-���]",
7 + "Cyrillic" => "[Ѐ-҄҇-ԯᲀ-ᲈᴫᵸⷠ-ⷿꙀ-ꚟ︮︯]",
8 + "Devanagari" => "[ऀ-ॐॕ-ॣ०-ॿ꣠-ꣿ]",
9 9 "Ethiopic" =>
10 10 "[ሀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፼ᎀ-᎙ⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮ]",
11 - "Hebrew" => "[֑-ׇא-תװ-״יִ-זּטּ-לּמּנּסּףּפּצּ-ﭏ]",
11 + "Hebrew" => "[֑-ׇא-תׯ-״יִ-זּטּ-לּמּנּסּףּפּצּ-ﭏ]",
12 12 "Latin" =>
13 - "[A-Za-z\\xAA\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꟿꬰ-ꭚꭜ-ꭟꭤff-stA-Za-z]",
13 + "[A-Za-z\\xAA\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞿꟂ-Ᶎꟷ-ꟿꬰ-ꭚꭜ-ꭤꭦꭧff-stA-Za-z]",
14 14 "Myanmar" => "[က-႟ꧠ-ꧾꩠ-ꩿ]",
15 - "aii" => "[܀-܍܏-݊ݍ-ݏ]",
16 - "ben" => "[ঀ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-৻]",
15 + "aii" => "[܀-܍܏-݊ݍ-ݏࡠ-ࡪ]",
16 + "ben" => "[ঀ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-৾]",
17 17 "bod" => "[ༀ-ཇཉ-ཬཱ-ྗྙ-ྼ྾-࿌࿎-࿔࿙࿚]",
18 - "cmn" => "[⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〻㐀-䶵一-鿌豈-舘並-龎]|[�-��-�][�-�]|�[�-��-�]|�[�-��-�]|�[�-�]|�[�-�]",
18 + "cmn" =>
19 + "[⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〻㐀-䶵一-鿯豈-舘並-龎]|[�-��-��-��-�][�-�]|�[�-��-�]|�[�-��-�]|�[�-��-�]|�[�-��-�]|�[�-�]|�[�-�]",
19 20 "ell" =>
20 21 "[Ͱ-ͳ͵-ͷͺ-ͽͿ΄ΆΈ-ΊΌΎ-ΡΣ-ϡϰ-Ͽᴦ-ᴪᵝ-ᵡᵦ-ᵪᶿἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ῄῆ-ΐῖ-Ί῝-`ῲ-ῴῶ-῾Ωꭥ]|�[�-��]|�[�-�]",
21 - "guj" => "[ઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૱]",
22 - "hye" => "[Ա-Ֆՙ-՟ա-և֊֍-֏ﬓ-ﬗ]",
22 + "guj" => "[ઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૱ૹ-૿]",
23 + "hye" => "[Ա-Ֆՙ-ֈ֊֍-֏ﬓ-ﬗ]",
23 24 "iii" => "[ꀀ-ꒌ꒐-꓆]",
24 - "jpn" => "[ぁ-ゖゝ-ゟ]|𛀁|🈀|[ァ-ヺヽ-ヿㇰ-ㇿ㋐-㋾㌀-㍗ヲ-ッア-ン]|𛀀|[㐀-䶵一-龯]",
25 - "kan" => "[ಁ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲ]",
26 - "kat" => "[Ⴀ-ჅჇჍა-ჺჼ-ჿⴀ-ⴥⴧⴭ]",
25 + "jpn" => "[ぁ-ゖゝ-ゟ]|�[�-��-�]|🈀|[ァ-ヺヽ-ヿㇰ-ㇿ㋐-㋾㌀-㍗ヲ-ッア-ン]|�[��-�]|[㐀-䶵一-龯]",
26 + "kan" => "[ಀ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲ]",
27 + "kat" => "[Ⴀ-ჅჇჍა-ჺჼ-ჿᲐ-ᲺᲽ-Ჿⴀ-ⴥⴧⴭ]",
27 28 "khm" => "[ក-៝០-៩៰-៹᧠-᧿]",
28 29 "kor" => "[ᄀ-ᇿ〮〯ㄱ-ㆎ㈀-㈞㉠-㉾ꥠ-ꥼ가-힣ힰ-ퟆퟋ-ퟻᅠ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]",
29 - "lao" => "[ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟ]",
30 - "mal" => "[ഁ-ഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൵൹-ൿ]",
30 + "lao" => "[ກຂຄຆ-ຊຌ-ຣລວ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟ]",
31 + "mal" => "[ഀ-ഃഅ-ഌഎ-ഐഒ-ൄെ-ൈൊ-൏ൔ-ൣ൦-ൿ]",
31 32 "ori" => "[ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୷]",
32 - "pan" => "[ਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵ]",
33 + "pan" => "[ਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-੶]",
33 34 "sat" => "[᱐-᱿]",
34 35 "sin" => "[ංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟ෦-෯ෲ-෴]|�[�-�]",
35 - "tam" => "[ஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௺]",
36 - "tel" => "[ఀ-ఃఅ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯౸-౿]",
36 + "tam" => "[ஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௺]|�[�-��]",
37 + "tel" => "[ఀ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-్ౕౖౘ-ౚౠ-ౣ౦-౯౷-౿]",
37 38 "tha" => "[ก-ฺเ-๛]",
38 39 "zgh" => "[ⴰ-ⵧⵯ⵰⵿]"
39 40 }
Loading more files…