russian_inflect 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/russian_inflect/version.rb +1 -1
- data/lib/russian_inflect.rb +7 -3
- data/spec/lib/russian_inflect_spec.rb +9 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0d67cfe5db6bc84834af246ba504c8e662769f0
|
4
|
+
data.tar.gz: e229c6ceac87150cfcdb1681377b35dd70a997d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 993b69cdb146f2db194401a1c6a8f3466f0864f3a9cfbddcd5cd5a831cbe0def7e46ea6e3e5fdd545f2706d531cfcfd75b0f95b24d017aa402ca64f53362804f
|
7
|
+
data.tar.gz: 508c950843829e4235a41592e6f24e935bcc4c865242a63fecf2a7861b09793a0a3e1b2d14af2675ca71dfe97a9ae85d9de0c638e0e43460fe971237089b4792
|
data/lib/russian_inflect.rb
CHANGED
@@ -37,7 +37,7 @@ class RussianInflect
|
|
37
37
|
inflected_words = words.map do |word|
|
38
38
|
unless after_prepositions
|
39
39
|
downcased = UnicodeUtils.downcase(word)
|
40
|
-
if
|
40
|
+
if preposition?(downcased)
|
41
41
|
after_prepositions = true
|
42
42
|
else
|
43
43
|
result = Rules[case_group].inflect(downcased, gcase)
|
@@ -56,8 +56,12 @@ class RussianInflect
|
|
56
56
|
inflected_words.join(' ')
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
60
|
-
|
59
|
+
def preposition?(word)
|
60
|
+
Rules.prepositions.include?(word) || GROUPS[self.class.detect_case_group(word)] != @case_group
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.inflect(text, gcase, force_downcase: false)
|
64
|
+
new(text).to_case(gcase, force_downcase: force_downcase)
|
61
65
|
end
|
62
66
|
|
63
67
|
def self.detect_case_group(noun)
|
@@ -7,22 +7,27 @@ describe RussianInflect do
|
|
7
7
|
source = RussianInflect.new("Хорошая погода")
|
8
8
|
source.test_each_case "Хорошая погода", "Хорошей погоды", "Хорошей погоде", "Хорошую погоду", "Хорошей погодой", "Хорошей погоде"
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
it "должен правильно склонять словосочение «Большой куш»" do
|
12
12
|
source = RussianInflect.new("Большой куш")
|
13
13
|
source.test_each_case "Большой куш", "Большого куша", "Большому кушу", "Большой куш", "Большим кушем", "Большом куше"
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "должен правильно склонять словосочение «Синее море»" do
|
17
17
|
source = RussianInflect.new("Синее море")
|
18
18
|
source.test_each_case "Синее море", "Синего моря", "Синему морю", "Синее море", "Синим морем", "Синем море"
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it "должен правильно склонять словосочение «Красное вино»" do
|
22
22
|
source = RussianInflect.new("Красное вино")
|
23
23
|
source.test_each_case "Красное вино", "Красного вина", "Красному вину", "Красное вино", "Красным вином", "Красном вине"
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
|
+
it "должен правильно склонять словосочение «Накладка моторного отсека»" do
|
27
|
+
source = RussianInflect.new("Накладка моторного отсека")
|
28
|
+
source.test_each_case "Накладка моторного отсека", "Накладки моторного отсека", "Накладке моторного отсека", "Накладку моторного отсека", "Накладкой моторного отсека", "Накладке моторного отсека"
|
29
|
+
end
|
30
|
+
|
26
31
|
it "должен правильно склонять слово «Комментарий»" do
|
27
32
|
source = RussianInflect.new("Комментарий")
|
28
33
|
source.test_each_case "Комментарий", "Комментария", "Комментарию", "Комментарий", "Комментарием", "Комментарии"
|