Class: Wiktionary::Noun

Inherits:
Object
  • Object
show all
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

Constructor Details

#initialize(path = File.join(File.dirname(__FILE__),'..','..','data/')) ⇒ Noun

Argument path locates directory with CSV files form Wiktionary

Parameters:

  • path (String) (defaults to: File.join(File.dirname(__FILE__),'..','..','data/'))


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.

Returns:

  • (Boolean)


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).

Returns:

  • (Boolean)


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