Class: SleepingKingStudios::Tools::Toolbox::Inflector::Rules
- Inherits:
-
Object
- Object
- SleepingKingStudios::Tools::Toolbox::Inflector::Rules
- Defined in:
- lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb
Overview
Rules for inflecting words.
Instance Attribute Summary collapse
-
#irregular_words ⇒ Array<Array<(String, String)>>
readonly
Irregular word pairs in singular => plural order.
-
#irregular_words_reversed ⇒ Array<Array<(String, String)>>
readonly
Irregular word pairs in plural => singular order.
-
#plural_rules ⇒ Array<Array<(Regexp, String)>>
readonly
Rules for pluralizing words.
-
#singular_rules ⇒ Array<Array<(Regexp, String)>>
readonly
Rules for singularizing words.
-
#uncountable_words ⇒ Array<String>
readonly
Uncountable words.
Instance Method Summary collapse
-
#define_irregular_word(singular, plural) ⇒ self
Defines an irregular word pair.
-
#define_plural_rule(pattern, replace) ⇒ self
Defines a pluralization rule.
-
#define_singular_rule(pattern, replace) ⇒ self
Defines a singularization rule.
-
#define_uncountable_word(word) ⇒ self
Defines an uncountable word.
-
#initialize(irregular_words: nil, plural_rules: nil, singular_rules: nil, uncountable_words: nil) ⇒ Rules
constructor
A new instance of Rules.
-
#inspect ⇒ String
A human-readable representation of the rules object.
Constructor Details
#initialize(irregular_words: nil, plural_rules: nil, singular_rules: nil, uncountable_words: nil) ⇒ Rules
Returns a new instance of Rules.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 17 def initialize( irregular_words: nil, plural_rules: nil, singular_rules: nil, uncountable_words: nil ) @plural_rules = plural_rules || default_plural_rules @singular_rules = singular_rules || default_singular_rules @irregular_words = irregular_words || default_irregular_words @uncountable_words = Set.new(uncountable_words || default_uncountable_words) @irregular_words_reversed = reverse_hash(@irregular_words) end |
Instance Attribute Details
#irregular_words ⇒ Array<Array<(String, String)>> (readonly)
Returns irregular word pairs in singular => plural order.
34 35 36 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 34 def irregular_words @irregular_words end |
#irregular_words_reversed ⇒ Array<Array<(String, String)>> (readonly)
Returns irregular word pairs in plural => singular order.
38 39 40 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 38 def irregular_words_reversed @irregular_words_reversed end |
#plural_rules ⇒ Array<Array<(Regexp, String)>> (readonly)
Returns rules for pluralizing words.
41 42 43 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 41 def plural_rules @plural_rules end |
#singular_rules ⇒ Array<Array<(Regexp, String)>> (readonly)
Returns rules for singularizing words.
44 45 46 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 44 def singular_rules @singular_rules end |
#uncountable_words ⇒ Array<String> (readonly)
Returns uncountable words.
47 48 49 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 47 def uncountable_words @uncountable_words end |
Instance Method Details
#define_irregular_word(singular, plural) ⇒ self
Defines an irregular word pair.
55 56 57 58 59 60 61 62 63 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 55 def define_irregular_word(singular, plural) validate_string(singular) validate_string(plural) @irregular_words[singular] = plural @irregular_words_reversed[plural] = singular self end |
#define_plural_rule(pattern, replace) ⇒ self
Defines a pluralization rule.
71 72 73 74 75 76 77 78 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 71 def define_plural_rule(pattern, replace) validate_pattern(pattern) validate_string(replace, as: 'replace') @plural_rules.unshift([pattern, replace]) self end |
#define_singular_rule(pattern, replace) ⇒ self
Defines a singularization rule.
86 87 88 89 90 91 92 93 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 86 def define_singular_rule(pattern, replace) validate_pattern(pattern) validate_string(replace, as: 'replace') @singular_rules.unshift([pattern, replace]) self end |
#define_uncountable_word(word) ⇒ self
Defines an uncountable word.
100 101 102 103 104 105 106 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 100 def define_uncountable_word(word) validate_string(word) @uncountable_words << word self end |
#inspect ⇒ String
Returns a human-readable representation of the rules object.
109 110 111 |
# File 'lib/sleeping_king_studios/tools/toolbox/inflector/rules.rb', line 109 def inspect "#<SleepingKingStudios::Tools::Toolbox::Inflector::Rules:#{object_id}>" end |