russian_inflect 0.0.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c307716037dd2adeaa77a714c95ad9cea3809c2f
4
- data.tar.gz: 159838d9e8a3eda32cf893e6c93fcd08e98c95c3
3
+ metadata.gz: 5381c2481facf07752dd9021d46a529f59c0c948
4
+ data.tar.gz: 145b237507fcf48233128505432a5d606b24478e
5
5
  SHA512:
6
- metadata.gz: de84706386e7b118efe2a232aa8106134e898239e459f6edd5e40077cc6ba6c0638e71b807a501958ce110be08ea6fdb27fc85e1c67703d2bbc0bc63012944b8
7
- data.tar.gz: c8d982b06b4934cba1c46131473401ae3e6ada5791b63ebe755ff141ed7fe8c09f1b71eb373d461c303481b7951c0d69b0f20a04b3572db785d1f3bec5d3d475
6
+ metadata.gz: 652c3c75efa74eae5cf7fadeeb070aaa019d788c5f31cffefb25cddfa0489c3f3954262fa50edb48d4e71ac3df76df09de6b0494bf4cc1bebc5eefc80c5661ad
7
+ data.tar.gz: 8d6bfbc904c7f181775a15bfc2af9d27178fb19f9e61cb865097370663fdbf31a30d3d622b6dd65abdef584203ae8b242dba966d2948fa74c121e3d3f7ce430f
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .ruby-version
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
data/README.md CHANGED
@@ -20,15 +20,26 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- RussianInflect.inflect("Хорошая погода", :nominative) # Хорошая погода
24
- RussianInflect.inflect("Хорошая погода", :genitive) # Хорошей погоды
25
- RussianInflect.inflect("Хорошая погода", :dative) # Хорошей погоде
26
- RussianInflect.inflect("Хорошая погода", :accusative) # Хорошую погоду
27
- RussianInflect.inflect("Хорошая погода", :instrumental) # Хорошей погодой
28
- RussianInflect.inflect("Хорошая погода", :prepositional) # Хорошей погоде
23
+ ```ruby
24
+ RussianInflect.inflect("Хорошая погода", :nominative) # => Хорошая погода
25
+ RussianInflect.inflect("Хорошая погода", :genitive) # => Хорошей погоды
26
+ RussianInflect.inflect("Хорошая погода", :dative) # => Хорошей погоде
27
+ RussianInflect.inflect("Хорошая погода", :accusative) # => Хорошую погоду
28
+ RussianInflect.inflect("Хорошая погода", :instrumental) # => Хорошей погодой
29
+ RussianInflect.inflect("Хорошая погода", :prepositional) # => Хорошей погоде
30
+ ```
31
+
32
+ или
33
+
34
+ ```ruby
35
+ words = RussianInflect.new("Хорошая погода")
36
+ words.to_case :genitive # => Хорошей погоды
37
+ words.to_case :dative # => Хорошей погоде
38
+ # etc...
39
+ ```
29
40
 
30
41
  ## Помощь гему
31
42
  * Нужны тесты для всяких окончаний, исключений и т.п.
32
43
  Дополнять их просто: в [spec/lib/russian_inflect_spec.rb](/estum/russian_inflect/blob/master/spec/lib/russian_inflect_spec.rb) нужно добавить пример словосочетания и правильные результаты склонения по аналогии с уже добавленными примерами.
33
- * Правила склонения пока далеки от идеала и тоже ждут своего Розенталя. Они похожи на правила из гема [petrovich](https://github.com/rocsci/petrovich) и находятся в [lib/russian_inflect/rules.yml](/estum/russian_inflect/blob/master/lib/russian_inflect/rules.yml).
34
- * Как видите, ридми тоже не мешало бы переписать.
44
+ * Правила склонения пока далеки от идеала и тоже ждут своего Розенталя. Они похожи на правила из гема [petrovich](https://github.com/rocsci/petrovich) и находятся в [lib/russian_inflect/rules.yml](/lib/russian_inflect/rules.yml).
45
+ * Как видите, ридми тоже не мешало бы переписать.
@@ -1,70 +1,78 @@
1
- # encoding: UTF-8
2
-
3
1
  require 'yaml'
4
2
  require 'unicode_utils'
5
- require 'active_support'
6
- require 'active_support/core_ext'
7
3
  require 'russian_inflect/rules'
8
4
  require "russian_inflect/version"
9
5
 
10
6
  class RussianInflect
11
- CASES = [:nominative, :genitive, :dative, :accusative, :instrumental, :prepositional]
12
- GROUPS = [nil, :first, :second, :third]
13
-
14
7
  NOMINATIVE = :nominative # именительный
15
8
  GENITIVE = :genitive # родительный
16
9
  DATIVE = :dative # дательный
17
10
  ACCUSATIVE = :accusative # винительный
18
11
  INSTRUMENTAL = :instrumental # творительный
19
12
  PREPOSITIONAL = :prepositional # предложный
20
-
13
+
14
+ CASES = [NOMINATIVE, GENITIVE, DATIVE, ACCUSATIVE, INSTRUMENTAL, PREPOSITIONAL]
15
+ GROUPS = [nil, :first, :second, :third]
16
+
21
17
  attr_accessor :source, :words, :noun, :case_group
22
-
23
- def initialize(source, options = {})
18
+
19
+ def initialize(source, options = nil)
20
+ options ||= {}
21
+
24
22
  @source = source
25
- @words = source.split
23
+ @words = source.split
24
+
26
25
  @noun = case options[:noun]
27
26
  when String then options[:noun]
28
27
  when Fixnum then @words[options[:noun]]
29
- else @words[0]
28
+ else @words.detect { |w| self.class.detect_type(w) == :noun }
30
29
  end
31
- group = options[:group].presence || self.class.detect_case_group(@noun)
30
+ group = options.fetch(:group) { self.class.detect_case_group(@noun) }
32
31
  @case_group = GROUPS[group]
33
32
  end
34
-
35
- def to_case(gcase)
33
+
34
+ def to_case(gcase, force_downcase: false)
36
35
  after_prepositions = false
36
+
37
37
  inflected_words = words.map do |word|
38
- result = word
39
38
  unless after_prepositions
40
- if word.in?(RULES['prepositions'])
39
+ downcased = UnicodeUtils.downcase(word)
40
+ if Rules.prepositions.include?(downcased)
41
41
  after_prepositions = true
42
42
  else
43
- result = Rules.new(case_group).inflect(word, gcase)
43
+ result = Rules[case_group].inflect(downcased, gcase)
44
+ word = if force_downcase
45
+ result
46
+ else
47
+ len = downcased.each_char.take_while.with_index { |x, n| x == result[n] }.size
48
+ word[0, len] << result[len..-1]
49
+ end
44
50
  end
45
51
  end
46
- result
52
+
53
+ word
47
54
  end
55
+
48
56
  inflected_words.join(' ')
49
57
  end
50
-
58
+
51
59
  def self.inflect(text, gcase)
52
- self.new(text).to_case(gcase)
60
+ new(text).to_case(gcase)
53
61
  end
54
-
62
+
55
63
  def self.detect_case_group(noun)
56
64
  case noun
57
65
  when /(а|я|и)$/i then 1
58
66
  when /(о|е|ы)$/i then 2
59
- when /(мя|ь)$/i then 3
60
- else 2
67
+ when /(мя|ь)$/i then 3
68
+ else 2
61
69
  end
62
70
  end
63
-
71
+
64
72
  def self.detect_type(word)
65
73
  case word
66
74
  when /(ая|яя|ые|ие|ый|ой|[^р]ий|ое|ее)$/i then :adjective
67
- else :noun
75
+ else :noun
68
76
  end
69
77
  end
70
78
  end
@@ -1,93 +1,111 @@
1
- # encoding: UTF-8
2
-
3
1
  class RussianInflect
4
- RULES = YAML.load_file(File.expand_path 'rules.yml', File.dirname(__FILE__))
5
-
6
- class UnknownCaseException < Exception;;end
7
- class UnknownRuleException < Exception;;end
2
+ UnknownError = Class.new(StandardError)
8
3
 
9
- # Набор методов для нахождения и применения правил к имени, фамилии и отчеству.
10
- class Rules
11
- def initialize(args)
12
- @group = args
4
+ class UnknownCaseException < UnknownError
5
+ def initialize(gcase)
6
+ super "Unknown grammatical case: `#{gcase}'."
13
7
  end
14
-
15
- def inflect(word, gcase)
16
- type = RussianInflect.detect_type(word)
17
- find_and_apply(word, gcase, RussianInflect::RULES["#{@group.to_s}_group"][type.to_s])
8
+ end
9
+
10
+ class UnknownRuleException < UnknownError
11
+ def initialize(name)
12
+ super "Can't find rule for `#{name}'."
18
13
  end
19
-
20
- protected
14
+ end
21
15
 
22
- def match?(name, rule, match_whole_word)
23
- name = UnicodeUtils.downcase(name)
24
- rule['test'].each do |chars|
25
- test = match_whole_word ? name : name.slice([name.size - chars.size, 0].max .. -1)
26
- return true if test == chars
16
+ Rules = Struct.new(:group, :rules)
17
+
18
+ # Набор методов для нахождения и применения правил к имени, фамилии и отчеству.
19
+ class Rules
20
+ class << self
21
+ def prepositions
22
+ @prepositions ||= []
27
23
  end
28
24
 
29
- false
30
- end
25
+ def dictionary
26
+ @dictionary ||= {}
27
+ end
31
28
 
32
- # Применить правило
33
- def apply(name, gcase, rule)
34
- modificator_for(gcase, rule).each_char do |char|
35
- case char
36
- when '.'
37
- when '-'
38
- name = name.slice(0, name.size - 1)
39
- else
40
- name += char
29
+ def [](group)
30
+ dictionary.fetch(group)
31
+ end
32
+
33
+ def load_dictionary(hash)
34
+ @prepositions = Array(hash[:prepositions])
35
+ hash[:rules].each do |group, rules|
36
+ dictionary[group] = new(group, rules)
41
37
  end
42
38
  end
39
+ end
43
40
 
44
- name
41
+ load_dictionary YAML.load_file(File.expand_path('../rules.yml', __FILE__))
42
+
43
+ def inflect(word, gcase)
44
+ type = RussianInflect.detect_type(word)
45
+ find_and_apply(word, gcase, type)
45
46
  end
46
47
 
48
+ protected
49
+
47
50
  # Найти правило и применить к имени с учетом склонения
48
- def find_and_apply(name, gcase, rules)
49
- rule = find_for(name, rules)
50
- apply(name, gcase, rule)
51
+ def find_and_apply(name, gcase, type)
52
+ apply(name, gcase, find_for(name, type))
51
53
  rescue UnknownRuleException
52
- # Если не найдено правило для имени, возвращаем неизмененное имя.
53
54
  name
54
55
  end
55
56
 
56
57
  # Найти подходящее правило в исключениях или суффиксах
57
- def find_for(name, rules)
58
- # Сначала пытаемся найти исключения
59
- if rules.has_key?('exceptions')
60
- p = find(name, rules['exceptions'], true)
61
- return p if p
58
+ def find_for(name, type)
59
+ if scoped_rules = rules[type][:exceptions]
60
+ ex = find(name, scoped_rules, true)
61
+ return ex if ex
62
+ else
63
+ scoped_rules = rules[type][:suffixes]
62
64
  end
63
65
 
64
- # Не получилось, ищем в суффиксах. Если не получилось найти и в них,
65
- # возвращаем неизмененное имя.
66
- find(name, rules['suffixes'], false) or raise UnknownRuleException, "Cannot find rule for #{name}"
66
+ find(name, scoped_rules) || fail(UnknownRuleException, name)
67
+ end
68
+
69
+ def find(name, scoped_rules, match_whole_word = false)
70
+ scoped_rules.detect { |rule| match?(name, rule, match_whole_word) }
71
+ end
72
+
73
+ # Проверить правило
74
+ def match?(word, rule, match_whole_word = false)
75
+ # word = UnicodeUtils.downcase(word)
76
+
77
+ rule[:test].any? do |chars|
78
+ test = match_whole_word ? word : word.slice([word.length - chars.length, 0].max .. -1)
79
+ test == chars
80
+ end
67
81
  end
68
82
 
69
- # Найти подходящее правило в конкретном списке правил
70
- def find(name, rules, match_whole_word)
71
- rules.find { |rule| match?(name, rule, match_whole_word) }
83
+ # Применить правило
84
+ def apply(word, gcase, rule)
85
+ modificator = modificator_for(gcase, rule)
86
+ result = word.dup
87
+
88
+ modificator.each_char do |char|
89
+ case char
90
+ when '.'
91
+ when '-' then result.slice!(-1)
92
+ else result << char
93
+ end
94
+ end
95
+
96
+ result
72
97
  end
73
98
 
74
99
  # Получить модификатор из указанного правиля для указанного склонения
75
100
  def modificator_for(gcase, rule)
76
101
  case gcase.to_sym
77
- when NOMINATIVE
78
- '.'
79
- when GENITIVE
80
- rule['mods'][0]
81
- when DATIVE
82
- rule['mods'][1]
83
- when ACCUSATIVE
84
- rule['mods'][2]
85
- when INSTRUMENTAL
86
- rule['mods'][3]
87
- when PREPOSITIONAL
88
- rule['mods'][4]
89
- else
90
- raise UnknownCaseException, "Unknown grammatic case: #{gcase}"
102
+ when NOMINATIVE then '.'
103
+ when GENITIVE then rule[:mods][0]
104
+ when DATIVE then rule[:mods][1]
105
+ when ACCUSATIVE then rule[:mods][2]
106
+ when INSTRUMENTAL then rule[:mods][3]
107
+ when PREPOSITIONAL then rule[:mods][4]
108
+ else fail UnknownCaseException, gcase
91
109
  end
92
110
  end
93
111
  end
@@ -1,85 +1,86 @@
1
- prepositions: [в, без, до, из, к, на, по, о, от, перед, при, через, у, за, над, об, под, про, для, с, со, без]
1
+ :prepositions: [в, без, до, из, к, на, по, о, от, перед, при, через, у, за, над, об, под, про, для, с, со, без]
2
2
 
3
- first_group:
4
- adjective:
5
- suffixes:
6
- -
7
- test: [шая]
8
- mods: [--ей, --ей, --ую, --ей, --ей]
9
- -
10
- test: [ая]
11
- mods: [--ой, --ой, --ую, --ой, --ой]
12
- -
13
- test: [яя]
14
- mods: [--ей, --ей, --юю, --ей, --ей]
15
- -
16
- test: [ые, ие]
17
- mods: [-х, -м, ., -ми, -х]
18
- noun:
19
- suffixes:
20
- -
21
- test: [га, ка, ха, ча, ша, ща]
22
- mods: [-и, -е, -у, -ой, ]
23
- -
24
- test: [ба, ва, да, жа, за, ла, ма, на, па, ра, са, та, фа, ца]
25
- mods: [-ы, -е, -у, -ой, ]
26
- -
27
- test: [я]
28
- mods: [-и, -е, -ю, -ей, -е]
29
- -
30
- test: [и]
31
- mods: [--ок, -ам, ., -ами, -ах]
3
+ :rules:
4
+ :first:
5
+ :adjective:
6
+ :suffixes:
7
+ -
8
+ :test: [шая]
9
+ :mods: [--ей, --ей, --ую, --ей, --ей]
10
+ -
11
+ :test: [ая]
12
+ :mods: [--ой, --ой, --ую, --ой, --ой]
13
+ -
14
+ :test: [яя]
15
+ :mods: [--ей, --ей, --юю, --ей, --ей]
16
+ -
17
+ :test: [ые, ие]
18
+ :mods: [-х, -м, ., -ми, -х]
19
+ :noun:
20
+ :suffixes:
21
+ -
22
+ :test: [га, ка, ха, ча, ша, ща]
23
+ :mods: [-и, -е, -у, -ой, -е]
24
+ -
25
+ :test: [ба, ва, да, жа, за, ла, ма, на, па, ра, са, та, фа, ца]
26
+ :mods: [-ы, -е, -у, -ой, -е]
27
+ -
28
+ :test: [я]
29
+ :mods: [-и, -е, -ю, -ей, -е]
30
+ -
31
+ :test: [и]
32
+ :mods: [--ок, -ам, ., -ами, -ах]
32
33
 
33
- second_group:
34
- adjective:
35
- suffixes:
36
- -
37
- test: [шое, шый, шой]
38
- mods: [--ого, --ому, ., --им, --ом]
39
- -
40
- test: [ое, ый, ой]
41
- mods: [--ого, --ому, ., --ым, --ом]
42
- -
43
- test: [ее, ий]
44
- mods: [--его, --ему, ., --им, --ем]
45
- noun:
46
- suffixes:
47
- -
48
- test: [б, в, г, д, ж, з, к, л, м, н, п, р, с, т, ф, х, ц, ч, щ]
49
- mods: [а, у, ., ом, е]
50
- -
51
- test: [ш]
52
- mods: [а, у, ., ем, е]
53
- -
54
- test: [о]
55
- mods: [-а, -у, ., м, -е]
56
- -
57
- test: [е]
58
- mods: [-я, -ю, ., м, .]
59
- -
60
- test: [ы]
61
- mods: [-ов, -ам, ., -ами, -ах]
62
- -
63
- test: [ий]
64
- mods: [-я, -ю, ., -ем, -и]
34
+ :second:
35
+ :adjective:
36
+ :suffixes:
37
+ -
38
+ :test: [шое, шый, шой]
39
+ :mods: [--ого, --ому, ., --им, --ом]
40
+ -
41
+ :test: [ое, ый, ой]
42
+ :mods: [--ого, --ому, ., --ым, --ом]
43
+ -
44
+ :test: [ее, ий]
45
+ :mods: [--его, --ему, ., --им, --ем]
46
+ :noun:
47
+ :suffixes:
48
+ -
49
+ :test: [б, в, г, д, ж, з, к, л, м, н, п, р, с, т, ф, х, ц, ч, щ]
50
+ :mods: [а, у, ., ом, е]
51
+ -
52
+ :test: [ш]
53
+ :mods: [а, у, ., ем, е]
54
+ -
55
+ :test: [о]
56
+ :mods: [-а, -у, ., м, -е]
57
+ -
58
+ :test: [е]
59
+ :mods: [-я, -ю, ., м, .]
60
+ -
61
+ :test: [ы]
62
+ :mods: [-ов, -ам, ., -ами, -ах]
63
+ -
64
+ :test: [ий]
65
+ :mods: [-я, -ю, ., -ем, -и]
65
66
 
66
- third_group:
67
- adjective:
68
- suffixes:
69
- -
70
- test: [ая]
71
- mods: [--ой, --ой, --ую, --ой, --ой]
72
- -
73
- test: [яя]
74
- mods: [--ей, --ей, --юю, --ей, --ей]
75
- -
76
- test: [ые, ие]
77
- mods: [-х, -м, ., -ми, -х]
78
- noun:
79
- suffixes:
80
- -
81
- test: [ь]
82
- mods: [-и, -и, ., -ью, -и]
83
- -
84
- test: [мя]
85
- mods: [-ени, --ени, ., -енем, -ени]
67
+ :third:
68
+ :adjective:
69
+ :suffixes:
70
+ -
71
+ :test: [ая]
72
+ :mods: [--ой, --ой, --ую, --ой, --ой]
73
+ -
74
+ :test: [яя]
75
+ :mods: [--ей, --ей, --юю, --ей, --ей]
76
+ -
77
+ :test: [ые, ие]
78
+ :mods: [-х, -м, ., -ми, -х]
79
+ :noun:
80
+ :suffixes:
81
+ -
82
+ :test: [ь]
83
+ :mods: [-и, -и, ., -ью, -и]
84
+ -
85
+ :test: [мя]
86
+ :mods: [-ени, --ени, ., -енем, -ени]
@@ -1,3 +1,3 @@
1
1
  class RussianInflect
2
- VERSION = "0.0.4"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -1,7 +1,6 @@
1
- # encoding: UTF-8
2
-
3
1
  lib = File.expand_path('../lib', __FILE__)
4
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
5
4
  require 'russian_inflect/version'
6
5
 
7
6
  Gem::Specification.new do |spec|
@@ -19,9 +18,8 @@ Gem::Specification.new do |spec|
19
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
19
  spec.require_paths = ["lib"]
21
20
 
22
- spec.add_dependency "activesupport", ">= 3.0.0"
23
- spec.add_dependency "unicode_utils", "~> 1.4"
24
- spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_dependency "unicode_utils", ">= 1.4"
22
+ spec.add_development_dependency "bundler"
25
23
  spec.add_development_dependency "rake"
26
24
  spec.add_development_dependency "rspec"
27
25
  end
data/spec/spec_helper.rb CHANGED
@@ -4,11 +4,11 @@ class RussianInflect
4
4
  def self.each_case(&block)
5
5
  CASES.each_with_index &block
6
6
  end
7
-
7
+
8
8
  def test_each_case(*answers)
9
9
  puts ''
10
10
  RussianInflect.each_case do |c, index|
11
- result = self.to_case(c)
11
+ result = to_case(c)
12
12
  puts %{RussianInflect.inflect("#{source}", :#{c}) # #{result}}
13
13
  result.should == answers[index]
14
14
  end
metadata CHANGED
@@ -1,83 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: russian_inflect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tõnis Simo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-22 00:00:00.000000000 Z
11
+ date: 2016-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: 3.0.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: 3.0.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: unicode_utils
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ~>
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
19
  version: '1.4'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ~>
24
+ - - ">="
39
25
  - !ruby/object:Gem::Version
40
26
  version: '1.4'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ~>
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: '1.3'
33
+ version: '0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ~>
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '1.3'
40
+ version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - '>='
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
47
  version: '0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - '>='
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rspec
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - '>='
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
61
  version: '0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '>='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  description: Склонение по падежам заголовков на русском языке
@@ -87,7 +73,7 @@ executables: []
87
73
  extensions: []
88
74
  extra_rdoc_files: []
89
75
  files:
90
- - .gitignore
76
+ - ".gitignore"
91
77
  - Gemfile
92
78
  - LICENSE.txt
93
79
  - README.md
@@ -109,17 +95,17 @@ require_paths:
109
95
  - lib
110
96
  required_ruby_version: !ruby/object:Gem::Requirement
111
97
  requirements:
112
- - - '>='
98
+ - - ">="
113
99
  - !ruby/object:Gem::Version
114
100
  version: '0'
115
101
  required_rubygems_version: !ruby/object:Gem::Requirement
116
102
  requirements:
117
- - - '>='
103
+ - - ">="
118
104
  - !ruby/object:Gem::Version
119
105
  version: '0'
120
106
  requirements: []
121
107
  rubyforge_project:
122
- rubygems_version: 2.0.5
108
+ rubygems_version: 2.5.1
123
109
  signing_key:
124
110
  specification_version: 4
125
111
  summary: Склоняет заданный заголовок по падежам