Class: Wiktionary::Noun
- Inherits:
-
Object
- Object
- Wiktionary::Noun
- Defined in:
- lib/wiktionary/noun.rb
Constant Summary collapse
- FILES =
%w[ noun noun_uncountable noun_usually_uncountable noun_countable_and_uncountable noun_non_attested noun_unknown noun_pluralia_tantum noun_proper ]
- PLURALS =
%w[noun noun_usually_uncountable noun_countable_and_uncountable ]
- UNCOUNTABLE =
'noun_uncountable'
- PLURALIA_TANTUM =
'noun_pluralia_tantum'
Instance Method Summary collapse
-
#initialize(path = File.join(File.dirname(__FILE__),'..','..','data/')) ⇒ Noun
constructor
Argument path locates directory with CSV files form Wiktionary.
-
#plural?(noun) ⇒ Boolean
Indicate if noun is in plural form.
-
#singular?(noun) ⇒ Boolean
Indicate if noun is in singular form (or uncountable).
-
#singularize(noun) ⇒ Object
Returns list of possible singular forms of noun.
Constructor Details
#initialize(path = File.join(File.dirname(__FILE__),'..','..','data/')) ⇒ Noun
Argument path locates directory with CSV files form Wiktionary
26 27 28 29 30 |
# File 'lib/wiktionary/noun.rb', line 26 def initialize(path=File.join(File.dirname(__FILE__),'..','..','data/')) @plural_to_singulars = Hash.new{|h,e| h[e] = [] } @singular_to_plurals = Hash.new{|h,e| h[e] = [] } load_files(path) end |
Instance Method Details
#plural?(noun) ⇒ Boolean
Indicate if noun is in plural form.
38 39 40 |
# File 'lib/wiktionary/noun.rb', line 38 def plural?(noun) @plural_to_singulars.has_key?(noun) end |
#singular?(noun) ⇒ Boolean
Indicate if noun is in singular form (or uncountable).
33 34 35 |
# File 'lib/wiktionary/noun.rb', line 33 def singular?(noun) @singular_to_plurals.has_key?(noun) end |
#singularize(noun) ⇒ Object
Returns list of possible singular forms of noun.
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/wiktionary/noun.rb', line 43 def singularize(noun) first_capital = false if noun =~ /^\p{Lu}/ noun = UnicodeUtils.downcase(noun[0]) + noun[1..-1] first_capital = true end result = @plural_to_singulars[noun] if first_capital result.map!{|word| UnicodeUtils.upcase(word[0]) + word[1..-1] } end result end |