langusta 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data/.document +5 -0
  2. data/Gemfile +11 -0
  3. data/Gemfile.lock +32 -0
  4. data/LICENSE.txt +13 -0
  5. data/README.rdoc +34 -0
  6. data/Rakefile +55 -0
  7. data/VERSION +1 -0
  8. data/bin/langusta +5 -0
  9. data/data/messages.properties +128 -0
  10. data/data/uppercase.bin +0 -0
  11. data/langusta.gemspec +210 -0
  12. data/lib/langusta.rb +36 -0
  13. data/lib/langusta/command.rb +78 -0
  14. data/lib/langusta/detector.rb +197 -0
  15. data/lib/langusta/detector_factory.rb +46 -0
  16. data/lib/langusta/java_property_reader.rb +35 -0
  17. data/lib/langusta/lang_profile.rb +80 -0
  18. data/lib/langusta/language.rb +14 -0
  19. data/lib/langusta/language_detection_facade.rb +24 -0
  20. data/lib/langusta/n_gram.rb +116 -0
  21. data/lib/langusta/regex_helper.rb +15 -0
  22. data/lib/langusta/tag_extractor.rb +39 -0
  23. data/lib/langusta/ucs2_string.rb +70 -0
  24. data/lib/langusta/unicode_block.rb +56 -0
  25. data/profiles/af +1 -0
  26. data/profiles/ar +1 -0
  27. data/profiles/bg +1 -0
  28. data/profiles/bn +1 -0
  29. data/profiles/cs +1 -0
  30. data/profiles/da +1 -0
  31. data/profiles/de +1 -0
  32. data/profiles/el +1 -0
  33. data/profiles/en +1 -0
  34. data/profiles/es +1 -0
  35. data/profiles/fa +1 -0
  36. data/profiles/fi +1 -0
  37. data/profiles/fr +1 -0
  38. data/profiles/gu +1 -0
  39. data/profiles/he +1 -0
  40. data/profiles/hi +1 -0
  41. data/profiles/hr +1 -0
  42. data/profiles/hu +1 -0
  43. data/profiles/id +1 -0
  44. data/profiles/it +1 -0
  45. data/profiles/ja +1 -0
  46. data/profiles/kn +1 -0
  47. data/profiles/ko +1 -0
  48. data/profiles/mk +1 -0
  49. data/profiles/ml +1 -0
  50. data/profiles/mr +1 -0
  51. data/profiles/ne +1 -0
  52. data/profiles/nl +1 -0
  53. data/profiles/no +1 -0
  54. data/profiles/pa +1 -0
  55. data/profiles/pl +1 -0
  56. data/profiles/pt +1 -0
  57. data/profiles/ro +1 -0
  58. data/profiles/ru +1 -0
  59. data/profiles/sk +1 -0
  60. data/profiles/so +1 -0
  61. data/profiles/sq +1 -0
  62. data/profiles/sv +1 -0
  63. data/profiles/sw +1 -0
  64. data/profiles/ta +1 -0
  65. data/profiles/te +1 -0
  66. data/profiles/th +1 -0
  67. data/profiles/tl +1 -0
  68. data/profiles/tr +1 -0
  69. data/profiles/uk +1 -0
  70. data/profiles/ur +1 -0
  71. data/profiles/vi +1 -0
  72. data/profiles/zh-cn +1 -0
  73. data/profiles/zh-tw +1 -0
  74. data/test/helper.rb +20 -0
  75. data/test/quality/test_falsified.rb +33 -0
  76. data/test/test_command.rb +34 -0
  77. data/test/test_data/af +1 -0
  78. data/test/test_data/ar +1 -0
  79. data/test/test_data/bg +32 -0
  80. data/test/test_data/bn +9 -0
  81. data/test/test_data/cs +9 -0
  82. data/test/test_data/da +14 -0
  83. data/test/test_data/de +4 -0
  84. data/test/test_data/el +7 -0
  85. data/test/test_data/en +26 -0
  86. data/test/test_data/es +4 -0
  87. data/test/test_data/fa +21 -0
  88. data/test/test_data/fi +8 -0
  89. data/test/test_data/fr +13 -0
  90. data/test/test_data/gu +3 -0
  91. data/test/test_data/he +20 -0
  92. data/test/test_data/hi +1 -0
  93. data/test/test_data/hr +16 -0
  94. data/test/test_data/hu +6 -0
  95. data/test/test_data/id +2 -0
  96. data/test/test_data/it +3 -0
  97. data/test/test_data/ja +34 -0
  98. data/test/test_data/kn +14 -0
  99. data/test/test_data/ko +2 -0
  100. data/test/test_data/mk +3 -0
  101. data/test/test_data/ml +1 -0
  102. data/test/test_data/mr +3 -0
  103. data/test/test_data/ne +2 -0
  104. data/test/test_data/nl +1 -0
  105. data/test/test_data/no +3 -0
  106. data/test/test_data/pa +1 -0
  107. data/test/test_data/pl +23 -0
  108. data/test/test_data/pt +2 -0
  109. data/test/test_data/ro +2 -0
  110. data/test/test_data/ru +1 -0
  111. data/test/test_data/sk +2 -0
  112. data/test/test_data/so +4 -0
  113. data/test/test_data/sq +4 -0
  114. data/test/test_data/sv +3 -0
  115. data/test/test_data/sw +6 -0
  116. data/test/test_data/ta +1 -0
  117. data/test/test_data/te +2 -0
  118. data/test/test_data/th +3 -0
  119. data/test/test_data/tl +1 -0
  120. data/test/test_data/tr +2 -0
  121. data/test/test_data/uk +3 -0
  122. data/test/test_data/ur +1 -0
  123. data/test/test_data/vi +2 -0
  124. data/test/test_data/zh-tw +3 -0
  125. data/test/test_detector.rb +52 -0
  126. data/test/test_detector_factory.rb +16 -0
  127. data/test/test_java_property_reader.rb +8 -0
  128. data/test/test_lang_profile.rb +79 -0
  129. data/test/test_language.rb +15 -0
  130. data/test/test_language_detection_facade.rb +9 -0
  131. data/test/test_langusta.rb +25 -0
  132. data/test/test_n_gram.rb +103 -0
  133. data/test/test_tag_extractor.rb +71 -0
  134. data/test/test_ucs2_string.rb +9 -0
  135. data/test/test_unicode_block.rb +9 -0
  136. metadata +320 -0
@@ -0,0 +1,3 @@
1
+ Englands historie begynte da de første mennesker kom til øygruppen for tusener av år siden. I jernalderen var England befolket av mennesker som snakket et keltisk språk, kjent som britonere.
2
+ Romersk Britannia varte fra år 43 til 400-tallet; fulgt av germansktalendefolkegrupper kalt angelsaksere; disse regnes som opprinnelsen til det engelske folk. Angelsaksiske språk, eller gammelengelsk, erstattet tidligere britonske språk. Angelsakserne utfordret britonske stater i Wales, Cornwall, og Hen Ogledd. Fra rundt 800 ble England herjet av vikinger.
3
+ I 1066 kom Normannernes invasjon av England. England erobret Wales på 1100-tallet, og ble forent med Skottland tidlig på 1700-tallet for å danne kongedømmet Storbritannia. Den økonomiske veksten som kom med den industrielle revolusjon, førte til at Storbritannia styrte verdens største imperium. Etter at det britiske imperiets kolonier ble avviklet på 1900-tallet tapte landet mye av sin makt, men har fortsatt en kulturell betydning.
@@ -0,0 +1 @@
1
+ ਗੁਪਤ. गुप्त. ਇੱਕ ਪ੍ਰਤਾਪੀ ਪੁਰਖ, ਜਿਸ ਤੋਂ ਵੰਸ਼ ਦੀ ਅੱਲ ਗੁਪਤ ਹੋਈ. ਇਸ ਦਾ ਪੁਤ੍ਰ ਘਟੋਤਕਚ ਬਲਵਾਨ ਅਤੇ ਵਡਾ ਉੱਦਮੀ ਸੀ. ਘਟੋਤਕਚ ਦਾ ਬੇਟਾ ਚੰਦ੍ਰਗੁਪਤ ਹੋਇਆ, ਜੋ ਆਪਣੀ ਇਸਤ੍ਰੀ ਕੁਮਾਰਦੇਵੀ ਦੀ ਸਹਾਇਤਾ ਨਾਲ ਸਨ 320 ਵਿੱਚ ਮਗਧ ਦਾ ਰਾਜਾ ਹੋਕੇ ਨੀਤਿਬਲ ਨਾਲ ਭਾਰਤ ਦਾ ਮਹਾਰਾਜਾ ਬਣਿਆ. ਇਸ ਦੀ ਰਾਜਧਾਨੀ ਪਟਨਾ ਸੀ. ਇਸ ਦਾ ਪੁਤ੍ਰ ਸਮੁਦ੍ਰਗੁਪਤ ਭੀ ਵਡਾ ਪ੍ਰਸਿੱਧ ਮਹਾਰਾਜਾ ਸਨ 330 ਵਿੱਚ ਹੋਇਆ, ਜਿਸ ਨੇ ਪਟਨੇ ਤੋਂ ਛੁੱਟ ਆਪਣੀ ਰਾਜਧਾਨੀ ਅਯੋਧ੍ਯਾ ਭੀ ਥਾਪੀ. ਧ੍ਰੁਵਦੇਵੀ ਦੇ ਉਦਰ ਤੋਂ ਸਮੁਦ੍ਰਗੁਪਤ ਦਾ ਪੁਤ੍ਰ ਚੰਦ੍ਰਗੁਪਤ ਦੂਜਾ, (ਜਿਸ ਦਾ ਨਾਉਂ ਵਿਕ੍ਰਮਾਦਿਤ੍ਯ ਭੀ ਹੈ) ਮਹਾ ਤੇਜਸੀ ਮਹਾਰਾਜਾ ਸਨ 380 ਵਿੱਚ ਹੋਇਆ, ਇਸ ਨੇ ਉੱਜਯਨ ਮਾਲਵਾ, ਗੁਜਰਾਤ ਤੇ ਸੁਰਾਸ਼ਟ੍ਰ ਨੂੰ ਫਤੇ ਕੀਤਾ. ਬਹੁਤ ਸਾਰੀ ਸਾਖੀਆਂ ਜੋ ਮਸ਼ਹੂਰ ਰਾਜਾ ਬਿਕ੍ਰਮਾਜੀਤ ਨਾਲ ਸੰਬੰਧ ਰਖਦੀਆਂ ਹਨ, ਉਹ ਇਸੇ ਪ੍ਰਤਾਪੀ ਰਾਜੇ ਦੇ ਜੀਵਨ ਤੋਂ ਲਈਆਂ ਗਈਆਂ ਹਨ. ਇਸ ਦੇ ਵੇਲੇ ਸੰਸਕ੍ਰਿਤ ਦੀ ਭਾਰੀ ਤਰੱਕੀ ਹੋਈ. ਬਹੁਤਿਆਂ ਨੇ ਕਾਲੀਦਾਸ ਮਹਾਂ ਕਵੀ ਇਸੇ ਦੇ ਸਮੇਂ ਹੋਣਾ ਮੰਨਿਆ ਹੈ. ਇਸ ਦਾ ਪੁਤ੍ਰ ਕੁਮਾਰਗੁਪਤ ਸਨ 413 ਅਥਵਾ 415 ਵਿੱਚ ਗੱਦੀ ਪੁਰ ਬੈਠਾ, ਪਰ ਇਸ ਦੇ ਸਮੇਂ ਤੋਂ ਗੁਪਤਵੰਸ਼ ਦਾ ਪ੍ਰਤਾਪ ਘਟਣ ਲਗ ਪਿਆ. ਕੁਮਾਰਗੁਪਤ ਦਾ ਪੁਤ੍ਰ ਸਕੰਦਗੁਪਤ ਸਨ 455 ਵਿੱਚ ਹੂਨ ਜਾਤਿ ਤੋਂ ਜਿੱਤਿਆ ਗਿਆ. ਇਸ ਨੂੰ ਗੁਪਤਵੰਸ਼ ਦਾ ਅਖੀਰੀ ਮਹਾਰਾਜਾ ਸਮਝਣਾ ਚਾਹੀਏ. ਭਾਵੇਂ ਇਸ ਕੁਲ ਦੇ, ਛੋਟੇ ਛੋਟੇ ਰਾਜੇ ਅਰ ਸਰਦਾਰ ਨਰਸਿੰਹਗੁਪਤ, ਕੁਮਾਰਗੁਪਤ ਦੂਜਾ ਆਦਿਕ ਹੋਏ, ਜਿਨ੍ਹਾਂ ਵਿੱਚੋਂ ਭਾਨੁਗੁਪਤ ਸਨ 510 ਵਿੱਚ ਅਖੀਰੀ ਹੋਇਆ, ਪਰ ਇਸ ਗੁਪਤਵੰਸ਼ ਦਾ ਰਾਜ ਪੂਰੇ ਪ੍ਰਤਾਪ ਵਿੱਚ ਸਨ 320 ਤੋਂ 455 ਤੀਕ ਰਿਹਾ. ਗੁਪਤ ਸੰਮਤ ਜੋ ਸਨ 320 ਤੋਂ ਆਰੰਭ ਹੋਇਆ ਸੀ, ਉਹ ਭੀ ਇਸ ਕੁਲ ਦੇ ਰਾਜ ਨਾਲ ਹੀ ਲੋਪ ਹੋ ਗਿਆ।
@@ -0,0 +1,23 @@
1
+ Litwo! Ojczyzno moja! ty jesteś jak zdrowie.
2
+ Ile cię trzeba cenić, ten tylko się dowie,
3
+ Kto cię stracił. Dziś piękność twą w całej ozdobie
4
+ Widzę i opisuję, bo tęsknię po tobie.
5
+
6
+ Panno Święta, co jasnej bronisz Częstochowy
7
+ I w Ostrej świecisz Bramie! 2 Ty, co gród zamkowy
8
+ Nowogródzki ochraniasz z jego wiernym ludem!
9
+ Jak mnie dziecko do zdrowia powróciłaś cudem
10
+ (Gdy od płaczącej matki pod Twoją opiekę
11
+ 10 Ofiarowany, martwą podniosłem powiekę
12
+ I zaraz mogłem pieszo do Twych świątyń progu
13
+ Iść za wrócone życie podziękować Bogu),
14
+ Tak nas powrócisz cudem na Ojczyzny łono.
15
+ Tymczasem przenoś moję duszę utęsknioną
16
+ Do tych pagórków leśnych, do tych łąk zielonych,
17
+ Szeroko nad błękitnym Niemnem rozciągnionych;
18
+ Do tych pól malowanych zbożem rozmaitem,
19
+ Wyzłacanych pszenicą, posrebrzanych żytem;
20
+ Gdzie bursztynowy świerzop, gryka jak śnieg biała,
21
+ 20 Gdzie panieńskim rumieńcem dzięcielina pała,
22
+ A wszystko przepasane, jakby wstęgą, miedzą
23
+ Zieloną, na niej z rzadka ciche grusze siedzą.
@@ -0,0 +1,2 @@
1
+ A perseguição de Diocleciano ou «Grande Perseguição» foi a última e talvez mais sangrenta perseguição aos cristãos no Império Romano. Em 303, o imperador Diocleciano e seus colegas Maximiano,Galério e Constâncio emitiram uma série de éditos em que revogavam os direitos legais dos cristãos e exigiam que estes cumprissem aspráticas religiosas tradicionais. Decretos posteriores encaminhados aoclero exigiram o sacrifício universal, ordenando a realização de sacrifícios às divindades romanas. A perseguição variou em intensidade ao longo do império: as menos violentas repressões ocorreram na Gália e Britânia, onde se aplicou apenas o primeiro édito, enquanto as mais violentas se deram nas províncias orientais. Embora as leis persecutórias fossem anuladas por diversos imperadores em várias épocas, tradicionalmente o fim das perseguições aos cristãos foi marcado pelo Édito de Milão de Valério Licínio e Constantino, o Grande.
2
+ Os cristãos tinham sido alvo de discriminação a nível local no Império, embora os primeiros imperadores se mostrassem renitentes a formular leis gerais contra eles. Não foi senão na década de 250, durante os reinados de Décio e Valeriano, que este tipo de leis começou a ser aprovado. Com esta legislação, os cristãos viram-se obrigados a sacrificar aos deuses pagãos, ou, pelo contrário, a enfrentar a prisão e pena de morte. Depois da chegada ao trono de Galieno em 260, estas leis foram abolidas. A chegada ao trono de Diocleciano, um camponês da Dalmácia em 284, após o assassinato de Numeriano, não marcou uma reversão imediata do desprezo pelo Cristianismo, mas anunciou uma mudança gradual nas atitudes oficiais para com as minorias religiosas.
@@ -0,0 +1,2 @@
1
+ Bătălia de la Austerlitz a fost una dintre cele mai mari victorii ale lui Napoleon. Această victorie a determinat destrămarea celei de a treia Coaliții formată împotrivaImperiului Francez. Pe 2 decembrie 1805 (20 noiembrieîn Stilul Vechi), o armată franceză condusă de împăratul Napoleon I a înfrânt decisiv o armată ruso-austriacă, comandată de țarul Alexandru I, după aproape nouă ore de luptă înverșunată. Bătălia a avut loc la Austerlitz (Slavkov u Brna) la aproape 20 km (12 mile) est de Brno în Moravia. Bătălia este adeseori considerată o capodoperă tactică.
2
+ Pe 26 decembrie 1805, Austria și Franța au semnat Tratatul de la Pressburg, care a îndepărtat-o pe prima din război, a întărit tratatele inițiale de la Campo Formio și Lunéville, a obligat Austria să cedeze pământuri aliaților germani ai lui Napoleon și a impus o indemnizație de 40 de milioane de franci asupra Habsburgilor învinși.
@@ -0,0 +1 @@
1
+ Хирбад — низший священнический чин в зороастризме, частично инициированный мобед задэ, который закончил курс обучения, успешно сдал экзамены и принял участие в первой службе Ясны. Хирбад поступает в помощники мобеду на срок от 5 до 10 лет. Этот срок является стажировкой, которую проходят все будущие мобеды. Хирбад подчиняется всем решениям дастуров и мобедов беспрекословно, однако в случае сомнения в правильности их решений хирбад обязан обратиться в сообщество мобедов или дастуров. Традиционно хирбады являются связующим звеном между бехдинами и мобедами.
@@ -0,0 +1,2 @@
1
+ Karneval zvierat (Le Carnaval des Animaux) je dielo francúzskeho skladateľa Camille Saint-Saënsa.
2
+ Skladbu je možno považovať za suitu, hoci skladateľ ju vtipne otituloval ako "veľkú zoologickú fantáziu". Dielo bolo zložené vo februári 1886 počas Saint-Saënsovej dovolenky v Rakúsku. Humorne ladené dielo malo na premiére v roku 1887 úspech, skladateľ sa však obával, aby mu neprinieslo povesť skladateľa ľahšej múzy. Chcel si udržať reputáciu vážneho skladateľa, ktorý skladá hlbokú hudbu, a preto doživotne zakázal hrať Karneval zvierat, s výnimkou Labute. Po skladateľovej smrti bolo ale dielo vydané a stalo sa jeho najpopulárnejším. Skladba je akýsi odľahčený a duchaplný hudobný cyklus, ktorý využíva viaceré humorné prvky. Ide predovšetkým o parodované citácie melódií iných skladateľov. Napriek tomu, že charakterovo ide o ľahšie dielo, oba klavírne party sú mimoriadne náročné.
@@ -0,0 +1,4 @@
1
+ Waa Halyey Soomaaliyeed, Kaasoo isku deyay in uu magaalo ku Taala Geeska Africa oo ay adagtahay in jaamacad laga sameeyo ka unkay, Runtii markii hore riyo ayay u ahayd dadka, sida uu ii sheegay Prof.Saleebaan. Laakiin Riyadaas way dhabawday oo waxay Jaamacadda Camuud noqotay Jaamacadaha Dhulka soomaalidu degto kuwooda uga sarreeya hadaanay ahaynba Tan Koowaad.
2
+ Prof.Saleebaan ii mar noo warramay anaga oo Jaamacadda Joogana ayuu yidhi "Waxaan u aadnay UAE Anagoo u yabooh tagnay barigii la aasa aasay Jaamacadda CAMUUD nin ka mid ahGanacsatadda Gobolka oo Dubai jooga ayaan ku idhi...waxaanu furaynaa jaamacad dee lacad ayaa lagaa rabaa...ninkii ayaa qoslay..kkk..wuxuuna yidhi Dee Jaamacad sow ma aha tii 10ka fooq ahayd...". Akhriste dhibaatadaas iyo kuwa ka sii qosol badan ayaa soo maray intii ay ku jireen Prof.Saleebaan iyo Saraakiisa la shaqeysa.
3
+ Prof. Saleebaan waxa uu hada ku astaysan yahay halyey Soomaliyeed oo bog cusub u furay aqoonta iyo waxbarashada umada Soomaaliyeed. Ka dib furitaankii Jaamacadda weyn Ee Camuud, waxa bilaabmay Jaamacadaha faraha badan ee maanta ka jira guud ahaan geyiga Soomaliyeed.
4
+ Prof. Saleebaan oo hogaanka wali u haya Jaamacadda Camuud, waxa uu jaamacadaasi u horseeday inay xaqiijiso guulo wax ku ool ah. Jaamacadda Camuud oo hada 10 sano jirsatay, waxa ay soo gardaadisay in ka badan 700 oo aqoon yahan, kuwaasi oo bartay laamaha kala duwan ee cilmiga. Aqoonayahanada ay Camuudi soo saartay, sida Dhakhaatiirta, Macaliminta, Dhaqaalayahanada, iyo Khubarada Beeraha iyo Culuumta Diinta maanta waxa ay ku baahsan yihiin dacalada dunida, iyaga oo adeegyo aasaasi ah u fidiya dadweyanaha ay la nool yihiin.
@@ -0,0 +1,4 @@
1
+ Hobi është një aktivitet të cilin një person e bën për kënaqësi personale dhe jo për ndonjë shpërblim. Duke ushtruar një aktivitet të caktuar personi i zgjëron njohuritë e tij, fiton përvojë dhe shkathtësi dhe vendos kontakte me pesona tjerë të cilët merren me aktivitetin e njejtë. Për ushtrimin me sukses të një veprimtarie hobi personi mund të vlerësohet me shpërblime të ndryshme por thelbi i hobit është kënaqësia personale.
2
+ Si hobi mund të konsiderohen: arti, muzika, vallëzimi, piktura; modelimi, enigmatika, programimi, shkenca p.sh astronomia, matematika; sporti; pastaj drugdhendja, pemëtaria,bletaria; marrja me kafshët si me kuajt qentë,pëllumbat, pastaj koleksionimi i pullave postare etj.
3
+ Në disa raste hobi kalon në punë të përhershme dhe bëhet profesion.
4
+
@@ -0,0 +1,3 @@
1
+ Ett ozonhål är ett underskott av gasen ozon som uppstår i ozonlagret i jordens atmosfär. Hålet, som egentligen är en förtunning av ozonskiktet, uppträder säsongsvis över polartrakterna, främst Antarktis, då mängden ozon där reduceras kraftig till följd av den höga halten klor som i sin tur orsakas av utsläpp av freoner (CFC). Konsekvens är att det mesta av den farligaultravioletta strålning (270–315 nm) som ozonskiktet brukar stoppa i atmosfären når ned i biosfären, där den förhöjda halten kan orsaka bland annat hudcancer, reduktion av planktonpopulationen i haven och skador på växter.
2
+ Reduktionen av mängden ozon i atmosfären har sedan 1980-talet ökat. Inte bara den säsongsbundna minskningen överAntarktis som ozonhålen är associerade med, utan även en betydligt långsammare global minskning med omkring 3 procent per år som även drabbar områden mellan polarregionerna.
3
+ 1994 utsåg FN:s generalförsamling den 16 september till "Världs-ozonhåls-dagen" för att högtidlighålla undertecknandet avMontrealprotokollet 1987.
@@ -0,0 +1,6 @@
1
+ Jina hilo linatumika hasa kumaanisha Kanisa la Kikristo linalokubali mamlaka yaPapa wa Roma kama mkuu wa Maaskofu juu yake lote.
2
+ Kanisa hilo linaamini kuwa ndani yake linadumu moja kwa moja Kanisa pekee lililoanzishwa na Yesu Kristo ambalo wanaunganishwa nalo wote wanaobatizwa katika madhehebu yoyote. Tofauti kati yao ni kwamba baadhi (Wakatoliki) wana ushirika kamili nalo, wakati wengine (hasa Waorthodoksi na Waprotestanti) wana ushirika nalo kwa viwango mbalimbali, kadiri wanavyokubali mafundisho,sakramenti na uongozi wake.
3
+ Neno "katoliki" linatokana na kivumishi cha Kigiriki καθολικός (katholikòs), lenye maana ya «kamili, kadiri ya utimilifu». Kwa mara ya kwanza liliandikwa na Ignas wa Antiokia kwa Wakristo wa Smirna mwanzoni mwa karne II: «Alipo Yesu Kristo ndipo lilipo Kanisa Katoliki» (Ad Smyrnaeos, 8).
4
+ Kati ya madhehebu ya Kikristo, Kanisa Katoliki linakusanya waamini 1,166,000,000, yaani nusu ya wafuasi wote wa Yesu, na 17.4 % ya binadamuwote, likiwa na asilimia kubwa ya waamini kati ya wananchi wa Amerika na Ulaya.
5
+ Kanisa Katoliki linaishi katika majimbo 2,945, ambayo kwa kawaida yanaongozwa na Maaskofu (kwa jumla wako 5,002) wakisaidiwa na mapadri (409,166) na mashemasi; kati ya hayo, mengi yanafuata mapokeo ya magharibi, lakini machache mapokeo ya mashariki. Majimbo yanagawanyika katika parokia zinazoongozwa na padri anayeitwa paroko.
6
+ Kati ya waamini wana nafasi ya pekee wamonaki na watawa wengine ambao wanaishi kwa mitindo iliyostawi katika historia ya Kanisa ili kumfuata Yesu kwa karibu zaidi katika useja mtakatifu, ufukara na utiifu.
@@ -0,0 +1 @@
1
+ கலிலேயக் கடல் என்றும் கெனசரேத்து ஏரி என்றும் அழைக்கப்படுகின்ற பெரும் நீர்த்தேக்கம் இசுரயேல் நாட்டில் உள்ளது. மனித இதயம் போன்ற வடிவம் கொண்ட இந்த ஏரிப் பகுதியில்தான் இயேசு கிறித்துவின் பணி பெரும்பாலும் நிகழ்ந்தது.விவிலிய வரலாற்றில் இந்த ஏரி சிறப்பான பங்கு வகிக்கிறது. இசுரயேல் நாட்டில் நல்ல தண்ணீர் கொண்ட ஏரிகளுள் மிகப் பெரியதாகும். இரண்டாயிரம் ஆண்டுகளுக்கு முன் இயேசு பணிசெய்த காலத்திலேயே கலிலேயக் கடல் மிகவும் பேர் போன இடமாக இருந்தது. கடலோர நெடுஞ்சாலை என்னும் பெயர்கொண்ட வணிகப் பாதை அவ்வழியே சென்று, எகிப்தையும் வடக்கு அரசுகளையும் இணைத்தது. அந்த ஏரிக்கரையில் உரோமையர் பல நகர்களை நிறுவினர். இயேசு பலமுறை இக்கடலுக்கு வந்துள்ளார். இந்த ஏரிக்கரையில் மீனவர் குடியிருப்புகள் பல இருந்தன. அங்கு வாணிகம் சிறப்பாக நடைபெற்றது. இயேசு தமது முதல் திருத்தூதர்களை அழைத்தபோது, இக்கடலில்தான் அவர்கள் மீன்பிடித்துக்கொண்டிருந்தனர். இவ்வாறு, மீன்பிடித் தொழிலை விட்டுவிட்டு இயேசுவைப் பின்சென்றவர்கள் திருத்தூதர்கள் பேதுருவும் அவர்தம் உடன்பிறப்பு அந்திரேயாவும், மற்றும்யோவான், அவர்தம் உடன்பிறப்பு யாக்கோபும் ஆவர். கலிலேயக் கடலருகில் அமைந்த ஒரு மலையில்தான் இயேசு ஒரு நீண்ட சொற்பொழிவு ஆற்றியதாக மத்தேயு நற்செய்தியாளர்
@@ -0,0 +1,2 @@
1
+ భారత గణతంత్ర రాజ్యము నూటపది కోట్లకు పైగా జనాభా తో ప్రపంచం లో అత్యధిక జనాభా కలిగిన దేశాలలో రెండవది. వైశాల్యము లో ప్రపంచం లో ఏడవది. భారత దేశ ప్రాముఖ్యత గత రెండు దశాబ్దాలలో గణనీయంగా పెరిగింది. భారత ఆర్ధిక వ్యవస్థ యొక్క స్థూల జాతీయోత్పత్తి( పర్చేసింగ్ పవర్ పారిటీ) ప్రకారం నాలుగో స్థానంలో ఉంది. ప్రపంచంలో అతివేగంగా వృద్ధి చెందుతున్న వ్యవస్థలలో ఇది ఒకటి. ప్రపంచం లోనే అతి పెద్ద స్వేచ్ఛాయుత ప్రజాస్వామ్యము ఐన భారతదేశం, ప్రపంచం లోనే అతి పెద్ద సైనిక సామర్థ్యం కలిగి ఉన్న దేశాలలో ఒకటిగా, అణ్వస్త్ర సామర్థ్యం కలిగన దేశంగా ఒక ముఖ్యమైన ప్రాంతీయ శక్తిగా ఆవిర్భవించినది.
2
+ దక్షణాసియా లో ఏడు వేల కిలోమీటర్లకు పైగా సముద్రతీరము కలిగి ఉండి, భారత ఉపఖండము లో అధిక భాగాన్ని కూడుకొని ఉన్న భారతదేశం, అనేక చారిత్రక వాణిజ్య రహదారుల పైన ఉన్నది. పాకిస్తాన్, చైనా, మయన్మార్,బంగ్లాదేశ్, నేపాల్, భూటాన్ మరియు ఆఫ్ఘానిస్తాన్[1] దేశాలతో సరిహద్దులను పంచుకుంటోంది. శ్రీలంక,మాల్దీవులు మరియు ఇండోనేసియా భారతదేశం దగ్గరలో గల ద్వీప-దేశాలు. భారతదేశము కొన్ని పురాతన నాగరికతలకుపుట్టిల్లు మరియు నాలుగు ముఖ్య ప్రపంచ మతాలకు (హిందూ మతము, బౌద్ధ మతము, జైన మతము మరియు సిక్కు మతము) జన్మనిచ్చినది. 1947 లో స్వాతంత్ర్యం రావడానికి ముందు బ్రిటీషు సామ్రాజ్యం లో భాగంగా ఉండేది.
@@ -0,0 +1,3 @@
1
+ ดาราจักร (กาแล็กซี) เป็นกลุ่มของดาวฤกษ์นับล้านดวง กับสสารระหว่างดาวอันประกอบด้วยแก๊ส ฝุ่น และสสารมืด รวมอยู่ด้วยกันด้วยแรงโน้มถ่วง คำนี้มีที่มาจากภาษากรีกว่า galaxias หมายถึง "น้ำนม" ซึ่งสื่อโดยตรงถึงดาราจักรทางช้างเผือก ดาราจักรโดยทั่วไปมีขนาดน้อยใหญ่ต่างกัน นับแต่ดาราจักรแคระที่มีดาวฤกษ์ประมาณสิบล้านดวง ไปจนถึงดาราจักรขนาดยักษ์ที่มีดาวฤกษ์นับถึงล้านล้านดวง โคจรรอบศูนย์กลางมวลจุดเดียวกัน ในดาราจักรหนึ่ง ๆ ยังประกอบไปด้วยระบบดาวหลายดวง กระจุกดาวจำนวนมาก และเมฆระหว่างดาวหลายประเภท ดวงอาทิตย์ของเราเป็นหนึ่งในบรรดาดาวฤกษ์ในดาราจักรทางช้างเผือก เป็นศูนย์กลางของระบบสุริยะซึ่งมีโลกและวัตถุอื่น ๆ โคจรโดยรอบ
2
+ ในอดีตมีการแบ่งดาราจักรเป็นชนิดต่าง ๆ โดยจำแนกจากลักษณะที่มองเห็นด้วยตา รูปแบบที่พบโดยทั่วไปคือดาราจักรรี ซึ่งปรากฏให้เห็นเป็นรูปทรงรี ดาราจักรชนิดก้นหอย เป็นดาราจักรรูปร่างแบนเหมือนจาน ภายในมีแขนฝุ่นเป็นวงโค้ง ดาราจักรที่มีรูปร่างไม่แน่นอนหรือแปลกประหลาดเรียกว่าดาราจักรแปลก ซึ่งมักเกิดจากการถูกรบกวนด้วยแรงโน้มถ่วงของดาราจักรข้างเคียง อันตรกิริยาระหว่างดาราจักรในลักษณะนี้อาจส่งผลให้ดาราจักรมารวมตัวกัน และทำให้เกิดสภาวะที่ดาวฤกษ์มาจับกลุ่มกันมากขึ้นและกลายสภาพเป็นดาราจักรที่สร้างดาวฤกษ์ใหม่อย่างบ้าคลั่ง เรียกว่าดาราจักรชนิดดาวกระจาย นอกจากนี้ดาราจักรขนาดเล็กที่ปราศจากโครงสร้างอันเชื่อมโยงกันก็มักถูกเรียกว่าดาราจักรไร้รูปแบบ (อ่านต่อ...)
3
+ บทความคัดสรรก่อนหน้านี้: สมเด็จพระอนุชาธิราช เจ้าฟ้าจักรพงษ์ภูวนาถ กรมหลวงพิษณุโลกประชานาถ –พระเมรุมาศ – เจ. อาร์. อาร์. โทลคีน
@@ -0,0 +1 @@
1
+ Ang Lungsod ng Maynila (Opisyal: City of Manila), kilala bilangMaynila, ay ang kabiserang lungsod ng Pilipinas na isa sa 17 lungsod at munisipalidad na bumubuo ng Kalakhang Maynila. Matatagpuan ang lungsod sa baybayin ng Look ng Maynila na nasa kanlurang bahagi ng pambansang punong rehiyon na matatagpuan sa kanlurang bahagi ng Luzon, isa ito sa mga sentro ng negosyo ng umuunlad na kalakhang pook na tinitirahan ng humigit sa 19 na milyong katao. Ang Maynila, na sumasakop ng 38.55 na kuwadrado ng kilometro, ay ang pangalawang pinakamalaking lungsod ng Pilipinas, na may humigit-kumulang na 1.6 milyong kataong naninirahan. Pero ang kalapit na lungsod, ang Lungsod Quezon, ang dating kabisera ng bansa, ay mas matao. Ang kalakhang pook ay ang pangalawang pinakamalaki sa Timog-silangang Asya. Ang Maynila ay may 900 na kilometro ang layo mula sa Hongkong, 2,400 na kilometro ang layo mula saSinggapur at mas marami ng 2,100 na kilometro ang layo sa hilagang-silangan mula sa Kuala Lumpur. Ang Ilog Pasig ang humahati sa lungsod ng dalawa. Sa depositong alubyal ng Ilog Pasig at Look ng Maynila nakapwesto ang nakakaraming sinasakupan ng lungsod na gawa mula sa tubig.
@@ -0,0 +1,2 @@
1
+ Nikki ve Paulo, Nikki Fernandez ve Paulo (telaffuzu /ˈpaʊluː/), kırkı aşkın kişinin geçirdikleri uçak kazasının ardından Güney Pasifikyakınlarındaki bir adada yaşananları konu alan ABC dramatelevizyon dizisi Lost'ta yer alan kurgusal karakterler. 815 sefer sayılı Oceanic uçuşunun ardından yaşam mücadelesi veren karakterler, ABD'li aktris Kiele Sanchez ve Brezilyalı aktör Rodrigo Santorotarafından canlandırıldı.
2
+ İkili, ilk kez üçüncü sezon başlarında göründü. Uçak kazasını izleyen günlerde yalnızca on beş kişiden söz edilmesi üzerine dizi yapımcıları diğer karakterlerin kaderlerine ilişkin sorularla karşılaşmış, Nikki ve Paulo karakterleri de bu sırada ortaya çıkmıştır. Karakterler, izleyiciler ve eleştirmenler üzerinde genelde olumsuz bir etki bırakmıştır. Lost 'un dizi sorumlusu Damon Lindelof da dizi hayranlarının ikiliden nefret ettiğini kabul etmiştir. Bu sebepten dolayı karakterler, aynı sezonun ilerleyen bölümlerinde hayatlarına veda ettiler.
@@ -0,0 +1,3 @@
1
+ Гре́ція (грец. Ελλάδα — Еллада), офіційна назва Грецька Республіка (грец. Ελληνική Δημοκρατία) — європейськадержава на півдні Балканського півострова та численних островах. На півночі межує з Албанією, Республікою Македонією та Болгарією, на сході — з Туреччиною. Південні береги омиваються Середземним морем, західні —Іонічним, східні — Егейським. До складу Грецької республіки також входить автономна чернеча республіка Афон, розташована на півострові Халкідіки Айон-Орос.
2
+ Сучасна Греція — спадкоємиця культури Стародавньої Греції і вважається колискою західної цивілізації, батьківщиною світової демократії[5], західної філософії[6], основних принципів фізико-математичних наук, мистецтва театру[7] таОлімпійських ігор сучасності. Грецька мова має найдовшу історію серед усіх мов індоєвропейської групи, адже нараховує 34 століття тільки писемного періоду[8]. На основі грецької абетки виникли латиниця та кирилиця.
3
+ Багата культурна спадщина, географічне положення роблять Грецію однією з найбільш відвідуваних країн світу[9]. Вона приваблює туристів одночасно рекреаційними курортами, різнобічним історико-культурним туризмом та паломництвомдо святинь всього християнського світу.
@@ -0,0 +1 @@
1
+ ‎ان کا نام “مؤید الدین ابو الفضل بن عبد الکریم بن عبد الرحمن الحارثی” ہے، طبیب، ریاضی دان، انجینئر، ادیب، نحوی اور شاعر تھے، دمشق میں 529 ہجری کو پیدا ہوئے اور 599 ہجری کو وفات پائی، وہ پہلے بڑھئی تھے اور اس کام میں مزید مہارت کے لیے اقلیدس کا ہندسہ سیکھا، انہوں نے علمِ ہیئت او زیچ بنانے پر بھی کام کیا، پھر طب کی تعلیم حاصل کی، وہ گھڑیاں بھی بناتے تھے، ان کی طب اور فلک پر کافی تصانیف مذکور ہیں جن میں کچھ یہ ہیں: کتاب فی معرفہ رمز التقویم، کتاب فی الادویہ.
@@ -0,0 +1,2 @@
1
+ Rhinocerus là tên tác phẩm khắc gỗ của họa sĩ, nghệ nhân khắc bản in người Đức Albrecht Dürer sáng tác năm 1515. Tác phẩm này là hình ảnh một con tê giácdựa trên các mô tả từ sách vở và bức phác họa của một họa sĩ vô danh về con tê giác Ấn Độ đã được đưa tới Lisboa vào đầu năm 1515. Đây là con tê giác đầu tiên được đưa tới châu Âu kể từ thời Đế chế La Mã vì vậy bản thân Dürer chưa bao giờ được nhìn thấy một con tê giác thực sự. Vào cuối năm 1515 vua Manuel I của Bồ Đào Nha đã gửi con vật choGiáo hoàng Leo X làm quà nhưng chiếc tàu chở nó đã bị đắm ngoài khơi Ý đầu năm1516 và phải chờ đến năm 1579 con tê giác thứ hai mới được mang từ Ấn Độ về châu Âu.
2
+ Mặc dù bức tranh có nhiều chi tiết giải phẫu không chính xác về loài tê giác,Rhinocerus vẫn trở nên rất nổi tiếng ở châu Âu và được sao chép lại nhiều lần qua ba thế kỷ sau đó với tư cách một minh họa chính xác về loài tê giác. Mãi đến cuốithế kỷ 18 khi con tê giác Clara được đưa đi trưng bày khắp châu Âu, Rhinocerusmới dần bị thay thế bởi các bức minh họa chân thực hơn. Người ta đã nhận xét về tác phẩm của Dürer như sau: "có lẽ không bức tranh động vật nào có được ảnh hưởng sâu sắc tới nghệ thuật như vậy"
@@ -0,0 +1,3 @@
1
+ 胡蜂號航空母艦(CV-18)是一艘隸屬於美國海軍的航空母艦,為艾塞克斯級航空母艦的十號艦,亦是美軍第九艘以胡蜂為名的軍艦。艦上水兵以胡蜂之形象,暱稱胡蜂號為強力蜂刺(Mighty Stinger)。[2]
2
+ 胡蜂號在1942年開始建造,起初命名為奧里斯卡尼(Oriskany),但在數個月更改,以紀念於瓜達爾卡納爾島戰役沉沒的胡蜂號。1943年胡蜂號下水服役,並在1944年開始參與太平洋戰爭。戰後胡蜂號退役停放,並在1949年進行SCB-27A現代化改建。改建完成時,韓戰已爆發一年多,但胡蜂號未前往西太平洋,而是留在大西洋及地中海一帶執勤。1952年胡蜂號被重編為攻擊航母(CVA-18),並在1955年進行SCB-125改建,增設斜角飛行甲板。1956年胡蜂號再重編為反潛航艦(CVS-18),多次參與北約的海上演習,亦曾多次回收雙子座計畫的太空艙。
3
+ 胡蜂號在1972年退役除藉,並在1973年出售拆解。
@@ -0,0 +1,52 @@
1
+ require 'test/helper'
2
+
3
+ class DetectorTest < Test::Unit::TestCase
4
+ TRAINING_EN = "\x00a \x00a \x00a \x00b \x00b \x00c \x00c \x00d \x00e"
5
+ TRAINING_FR = "\x00a \x00b \x00b \x00c \x00c \x00c \x00d \x00d \x00d"
6
+ TRAINING_JP = "\x30\x42 \x30\x42 \x30\x42 \x30\x44 \x30\x46 \x30\x48 \x30\x48"
7
+
8
+ def setup
9
+ @factory = DetectorFactory.new
10
+ profile_en = LangProfile.new("en")
11
+ TRAINING_EN.split(/ /).each do |w|
12
+ profile_en.add(UCS2String.new(w))
13
+ end
14
+ @factory.add_profile(profile_en, 0, 3)
15
+
16
+ profile_fr = LangProfile.new("fr")
17
+ TRAINING_FR.split(/ /).each do |w|
18
+ profile_fr.add(UCS2String.new(w))
19
+ end
20
+ @factory.add_profile(profile_fr, 1, 3)
21
+
22
+ profile_jp = LangProfile.new("jp")
23
+ TRAINING_JP.split(/ /).each do |w|
24
+ profile_jp.add(UCS2String.new(w))
25
+ end
26
+ @factory.add_profile(profile_jp, 2, 3)
27
+ end
28
+
29
+ def test_detector1
30
+ detector = @factory.create()
31
+ detector.append(UCS2String.new("\x00a"))
32
+ assert_equal("en", detector.detect())
33
+ end
34
+
35
+ def test_detector2
36
+ detector = @factory.create()
37
+ detector.append(UCS2String.new("\x00b\x00\x20\x00d"))
38
+ assert_equal("fr", detector.detect())
39
+ end
40
+
41
+ def test_detector3
42
+ detector = @factory.create()
43
+ detector.append(UCS2String.new("\x00d\x00 \x00e"))
44
+ assert_equal("en", detector.detect())
45
+ end
46
+
47
+ def test_detector4
48
+ detector = @factory.create()
49
+ detector.append(UCS2String.new("\x30\x42\x30\x42\x30\x42\x30\x42\x00a"))
50
+ assert_equal("jp", detector.detect())
51
+ end
52
+ end
@@ -0,0 +1,16 @@
1
+ require 'test/helper'
2
+
3
+ class DetectorFactoryTest < Test::Unit::TestCase
4
+ def test_add_profile
5
+ profile = LangProfile.new
6
+ factory = DetectorFactory.new
7
+
8
+ factory.add_profile(profile, 0, 1)
9
+ assert_raises(LangDetectException) do
10
+ factory.add_profile(profile, 1, 1)
11
+ end
12
+
13
+ detector = factory.create(0.123)
14
+ assert_equal(0.123, detector.alpha)
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ require 'test/helper'
2
+
3
+ class JavaPropertyReaderTest < Test::Unit::TestCase
4
+ def test_parse
5
+ jpr = JavaPropertyReader.new(MESSAGES_PROPERTIES)
6
+ assert_equal("\x4f\x7c\x69\x34", jpr["NGram.KANJI_1_0"])
7
+ end
8
+ end
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test/helper'
3
+
4
+ class LangProfileTest < Test::Unit::TestCase
5
+ def test_lang_profile
6
+ profile = LangProfile.new
7
+ assert_nil(profile.name)
8
+ end
9
+
10
+ def test_lang_profile_string_int
11
+ profile = LangProfile.new('en')
12
+ assert_equal('en', profile.name)
13
+ end
14
+
15
+ def test_add
16
+ profile = LangProfile.new('en')
17
+ profile.add(UCS2String.from_utf8("a"))
18
+ assert_equal(1, profile.freq[UCS2String.from_utf8("a")])
19
+ profile.add(UCS2String.from_utf8("a"))
20
+ assert_equal(2, profile.freq[UCS2String.from_utf8("a")])
21
+ profile.omit_less_freq()
22
+ end
23
+
24
+ def test_add_illegally_1
25
+ profile = LangProfile.new
26
+ profile.add(UCS2String.from_utf8("a"))
27
+ assert_nil(profile.freq[UCS2String.from_utf8("a")])
28
+ end
29
+
30
+ def test_add_illegally_2
31
+ profile = LangProfile.new('en')
32
+ profile.add(UCS2String.from_utf8("a"))
33
+ profile.add(UCS2String.from_utf8(""))
34
+ profile.add(UCS2String.from_utf8("abcd"))
35
+ assert_equal(1, profile.freq[UCS2String.from_utf8("a")])
36
+ assert_nil(profile.freq[UCS2String.from_utf8("")])
37
+ assert_nil(profile.freq[UCS2String.from_utf8("abcd")])
38
+ end
39
+
40
+ def test_omit_less_freq
41
+ profile = LangProfile.new('en')
42
+ grams = "\x00a \x00b \x00c \x30\x42 \x30\x44 \x30\x46 \x30\x48 \x30\x4a \x30\x4b \x30\x4c \x30\x4d \x30\x4e \x30\x4f".split(/ /)
43
+ 5.times do
44
+ grams.each do |gram|
45
+ profile.add(UCS2String.new(gram))
46
+ end
47
+ end
48
+ profile.add(UCS2String.new("\x30\x50"))
49
+
50
+ assert_equal(5, profile.freq[UCS2String.from_utf8("a")])
51
+ assert_equal(5, profile.freq[UCS2String.new("\x30\x42")])
52
+ assert_equal(1, profile.freq[UCS2String.new("\x30\x50")])
53
+
54
+ profile.omit_less_freq()
55
+ assert_nil(profile.freq[UCS2String.from_utf8("a")])
56
+ assert_equal(5, profile.freq[UCS2String.new("\x30\x42")])
57
+ assert_nil(profile.freq[UCS2String.new("\x30\x50")])
58
+ end
59
+
60
+ def test_omit_less_freq_illegally
61
+ profile = LangProfile.new
62
+ profile.omit_less_freq()
63
+ end
64
+
65
+ def test_load_from_file
66
+ Dir[File.join(PROFILES_PATH, '*')].each do |filename|
67
+ profile = LangProfile.load_from_file(filename)
68
+ assert_equal(filename.split(/\//).last, profile.name)
69
+ has_content = [
70
+ profile.freq[UCS2String.from_utf8(" A")], # Latin
71
+ profile.freq[UCS2String.new("\x06\x0c")], # Arabic
72
+ profile.freq[UCS2String.new("\x0a\x85")], # Gujarati
73
+ profile.freq[UCS2String.new("\x09\x05")], # Hindi
74
+ profile.freq[UCS2String.new("\x30\x01")], # Japanese
75
+ ].any?
76
+ assert(has_content, profile.inspect)
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,15 @@
1
+ require 'test/helper'
2
+
3
+ class LanguageTest < Test::Unit::TestCase
4
+ def test_language
5
+ lang = Language.new(nil, 0)
6
+ assert_nil(lang.lang)
7
+ assert_in_delta(0, lang.prob, 0.0001)
8
+ assert_equal('', lang.to_s)
9
+
10
+ lang = Language.new('en', 1.0)
11
+ assert_equal('en', lang.lang)
12
+ assert_in_delta(1, lang.prob, 0.0001)
13
+ assert_equal('en:1.0', lang.to_s)
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test/helper'
3
+
4
+ class LanguageDetectionFacadeTest < Test::Unit::TestCase
5
+ def test_initialize_and_detect
6
+ facade = LanguageDetectionFacade.new
7
+ assert_equal("pl", facade.detect(UCS2String.from_utf8("Ich dalekopis fałszuje, gdy próby XQV nie wytrzymuje")))
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ require 'test/helper'
2
+
3
+ class LangustaTest < Test::Unit::TestCase
4
+
5
+ FACTORY = DetectorFactory.new
6
+ profiles = Dir[File.join(PROFILES_PATH, '*')].map do |filename|
7
+ LangProfile.load_from_file(filename)
8
+ end
9
+ profiles.each_with_index do |profile, index|
10
+ FACTORY.add_profile(profile, index, profiles.length)
11
+ end
12
+
13
+ Dir['test/test_data/*'].each do |filename|
14
+ language = filename.split(/\//).last
15
+ define_method(("test_%s_language" % [language]).to_sym) do
16
+ detector = FACTORY.create
17
+
18
+ ucs2_content = UCS2String.from_utf8(File.open(filename).read)
19
+ detector = FACTORY.create
20
+ detector.append(ucs2_content)
21
+
22
+ assert_equal(language, detector.detect)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,103 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test/helper'
3
+
4
+ class NGramTest < Test::Unit::TestCase
5
+ def test_constants
6
+ assert_equal(3, NGram::N_GRAM)
7
+ end
8
+
9
+ def test_normalize_with_latin
10
+ assert_equal("\x00 ", NGram.normalize("\x00\x00")) # \0
11
+ assert_equal("\x00 ", NGram.normalize("\x00\x09")) # <control>
12
+ assert_equal("\x00 ", NGram.normalize("\x00\x20")) # space
13
+ assert_equal("\x00 ", NGram.normalize("\x00\x30")) # 0
14
+ assert_equal("\x00 ", NGram.normalize("\x00\x40")) # @
15
+ assert_equal("\x00\x41", NGram.normalize("\x00\x41")) # A
16
+ assert_equal("\x00\x5a", NGram.normalize("\x00\x5a")) # Z
17
+ assert_equal("\x00 ", NGram.normalize("\x00\x5b")) # [
18
+ assert_equal("\x00 ", NGram.normalize("\x00\x60")) # `
19
+ assert_equal("\x00\x61", NGram.normalize("\x00\x61")) # a
20
+ assert_equal("\x00\x7a", NGram.normalize("\x00\x7a")) # z
21
+ assert_equal("\x00 ", NGram.normalize("\x00\x7b")) # {
22
+ assert_equal("\x00 ", NGram.normalize("\x00\x7f")) # <control>
23
+ assert_equal("\x00\x80", NGram.normalize("\x00\x80")) # <control>
24
+ assert_equal("\x00 ", NGram.normalize("\x00\xa0")) # <control>
25
+ assert_equal("\x00\xa1", NGram.normalize("\x00\xa1")) # <control>
26
+ end
27
+
28
+ def test_normalize_with_cjk_kanji
29
+ assert_equal("\x4e\x00", NGram.normalize("\x4e\x00"))
30
+ assert_equal("\x4e\x01", NGram.normalize("\x4e\x01"))
31
+ assert_equal("\x4e\x02", NGram.normalize("\x4e\x02"))
32
+ assert_equal("\x4e\x01", NGram.normalize("\x4e\x03"))
33
+ assert_equal("\x4e\x04", NGram.normalize("\x4e\x04"))
34
+ assert_equal("\x4e\x05", NGram.normalize("\x4e\x05"))
35
+ assert_equal("\x4e\x06", NGram.normalize("\x4e\x06"))
36
+ assert_equal("\x4e\x07", NGram.normalize("\x4e\x07"))
37
+ assert_equal("\x4e\x08", NGram.normalize("\x4e\x08"))
38
+ assert_equal("\x4e\x09", NGram.normalize("\x4e\x09"))
39
+ assert_equal("\x4e\x10", NGram.normalize("\x4e\x10"))
40
+ assert_equal("\x4e\x11", NGram.normalize("\x4e\x11"))
41
+ assert_equal("\x4e\x12", NGram.normalize("\x4e\x12"))
42
+ assert_equal("\x4e\x13", NGram.normalize("\x4e\x13"))
43
+ assert_equal("\x4e\x14", NGram.normalize("\x4e\x14"))
44
+ assert_equal("\x4e\x15", NGram.normalize("\x4e\x15"))
45
+ assert_equal("\x4e\x1e", NGram.normalize("\x4e\x1e"))
46
+ assert_equal("\x4e\x1f", NGram.normalize("\x4e\x1f"))
47
+ assert_equal("\x4e\x20", NGram.normalize("\x4e\x20"))
48
+ assert_equal("\x4e\x21", NGram.normalize("\x4e\x21"))
49
+ assert_equal("\x4e\x22", NGram.normalize("\x4e\x22"))
50
+ assert_equal("\x4e\x23", NGram.normalize("\x4e\x23"))
51
+ assert_equal("\x4e\x13", NGram.normalize("\x4e\x24"))
52
+ assert_equal("\x4e\x13", NGram.normalize("\x4e\x25"))
53
+ assert_equal("\x4e\x30", NGram.normalize("\x4e\x30"))
54
+ end
55
+
56
+ def test_ngram
57
+ ngram = NGram.new
58
+ (0..4).each do |n|
59
+ assert_nil(ngram.get(n))
60
+ end
61
+ ngram.add_char("\x00 ")
62
+ (1..3).each do |n|
63
+ assert_nil(ngram.get(n))
64
+ end
65
+ ngram.add_char("\x00A")
66
+ assert_equal(UCS2String.new("\x00A"), ngram.get(1))
67
+ assert_equal(UCS2String.new("\x00 \x00A"), ngram.get(2))
68
+ assert_nil(ngram.get(3))
69
+ ngram.add_char("\x06\xcc")
70
+ assert_equal(UCS2String.new("\x06\x4a"), ngram.get(1))
71
+ assert_equal(UCS2String.new("\x00A\x06\x4a"), ngram.get(2))
72
+ assert_equal(UCS2String.new("\x00 \x00A\x06\x4a"), ngram.get(3))
73
+ ngram.add_char("\x1e\xa0")
74
+ assert_equal(UCS2String.new("\x1e\xc3"), ngram.get(1))
75
+ assert_equal(UCS2String.new("\x06\x4a\x1e\xc3"), ngram.get(2))
76
+ assert_equal(UCS2String.new("\x00A\x06\x4a\x1e\xc3"), ngram.get(3))
77
+ ngram.add_char("\x30\x44")
78
+ assert_equal(UCS2String.new("\x30\x42"), ngram.get(1))
79
+ assert_equal(UCS2String.new("\x1e\xc3\x30\x42"), ngram.get(2))
80
+ assert_equal(UCS2String.new("\x06\x4a\x1e\xc3\x30\x42"), ngram.get(3))
81
+
82
+ ngram.add_char("\x30\xa4")
83
+ assert_equal(UCS2String.new("\x30\xa2"), ngram.get(1))
84
+ assert_equal(UCS2String.new("\x30\x42\x30\xa2"), ngram.get(2))
85
+ assert_equal(UCS2String.new("\x1e\xc3\x30\x42\x30\xa2"), ngram.get(3))
86
+ ngram.add_char("\x31\x06")
87
+ assert_equal(UCS2String.new("\x31\x05"), ngram.get(1))
88
+ assert_equal(UCS2String.new("\x30\xa2\x31\x05"), ngram.get(2))
89
+ assert_equal(UCS2String.new("\x30\x42\x30\xa2\x31\x05"), ngram.get(3))
90
+ ngram.add_char("\xac\x01")
91
+ assert_equal(UCS2String.new("\xac\x00"), ngram.get(1))
92
+ assert_equal(UCS2String.new("\x31\x05\xac\x00"), ngram.get(2))
93
+ assert_equal(UCS2String.new("\x30\xa2\x31\x05\xac\x00"), ngram.get(3))
94
+ ngram.add_char("\x20\x10")
95
+ assert_nil(ngram.get(1))
96
+ assert_equal(UCS2String.new("\xac\x00\x00 "), ngram.get(2))
97
+ assert_equal(UCS2String.new("\x31\x05\xac\x00\x00 "), ngram.get(3))
98
+ ngram.add_char("\x00a")
99
+ assert_equal(UCS2String.new("\x00a"), ngram.get(1))
100
+ assert_equal(UCS2String.new("\x00 \x00a"), ngram.get(2))
101
+ assert_nil(ngram.get(3))
102
+ end
103
+ end
@@ -0,0 +1,71 @@
1
+ require 'test/helper'
2
+
3
+ class TagExtractorTest < Test::Unit::TestCase
4
+ def test_tag_extractor
5
+ extractor = TagExtractor.new(nil, 0)
6
+ assert_nil(extractor.target)
7
+ assert_equal(0, extractor.threshold)
8
+
9
+ extractor2 = TagExtractor.new(UCS2String.from_utf8("abstract"), 10)
10
+ assert_equal(UCS2String.from_utf8("abstract"), extractor2.target)
11
+ assert_equal(10, extractor2.threshold)
12
+ end
13
+
14
+ def test_set_tag
15
+ extractor = TagExtractor.new(nil, 0)
16
+ extractor.tag = UCS2String.from_utf8("")
17
+ assert_equal(UCS2String.from_utf8(""), extractor.tag)
18
+ extractor.tag = nil
19
+ assert_nil(extractor.tag)
20
+ end
21
+
22
+ def test_add
23
+ extractor = TagExtractor.new(nil, 0)
24
+ extractor.add(UCS2String.from_utf8(""))
25
+ extractor.add(nil)
26
+ end
27
+
28
+ def test_close_tag
29
+ extractor = TagExtractor.new(nil, 0)
30
+ profile = nil
31
+ extractor.close_tag(profile)
32
+ end
33
+
34
+ def test_normal_scenario
35
+ extractor = TagExtractor.new(UCS2String.from_utf8("abstract"), 10)
36
+ assert_equal(0, extractor.count)
37
+
38
+ profile = LangProfile.new("en")
39
+ # normal
40
+ extractor.tag = UCS2String.from_utf8("abstract")
41
+ extractor.add(UCS2String.from_utf8("This is a sample text."))
42
+ extractor.close_tag(profile)
43
+ assert_equal(1, extractor.count)
44
+ assert_equal(17, profile.n_words[0])
45
+ assert_equal(22, profile.n_words[1])
46
+ assert_equal(17, profile.n_words[2])
47
+
48
+ # too short
49
+ extractor.tag = UCS2String.from_utf8("abstract")
50
+ extractor.add(UCS2String.from_utf8("sample"))
51
+ extractor.close_tag(profile)
52
+ assert_equal(1, extractor.count)
53
+
54
+ # other tags
55
+ extractor.tag = UCS2String.from_utf8("div")
56
+ extractor.add(UCS2String.from_utf8("This is a sample text which is enough long."))
57
+ extractor.close_tag(profile)
58
+ assert_equal(1, extractor.count)
59
+ end
60
+
61
+ def test_clear
62
+ extractor = TagExtractor.new(UCS2String.from_utf8("abstract"), 10)
63
+ extractor.tag = UCS2String.from_utf8("abstract")
64
+ extractor.add(UCS2String.from_utf8("This is a sample text."))
65
+ assert_equal(UCS2String.from_utf8("This is a sample text."), extractor.buffer)
66
+ assert_equal(UCS2String.from_utf8("abstract"), extractor.tag)
67
+ extractor.clear
68
+ assert_equal(UCS2String.from_utf8(""), extractor.buffer)
69
+ assert_nil(extractor.tag)
70
+ end
71
+ end