russian_inflect 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 "Комментарий", "Комментария", "Комментарию", "Комментарий", "Комментарием", "Комментарии"
|