Sha256: 0015c5c3b3e8ac0c557eefef78596c417d6093f11fb79f489e7f293df463087e

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

# coding: utf-8
module Pascoale
  class Reflector
    include Constants

    def initialize(text)
      @text = text
    end

    # ALWAYS have accents
    def proparoxytone?
      return false if separated.size < 3
      separated[-3] =~ /[#{ACCENTED}]/
    end

    # Most common case in portuguese
    def paroxytone?
      !proparoxytone? && !oxytone?
    end

    # Accents or specific terminators
    def oxytone?
      return true if separated.size == 1
      return true if separated[-1] =~ /[#{ACCENTED}]/
      return false if separated[-2] =~ /[#{ACCENTED}]/
      return false  if separated[-3] =~ /[#{ACCENTED}]/
      separated[-1] =~ /(is?|im|ins?|us?|um|uns?|l|n|r|x|ps|ãs?|ãos?|ons?|ais?|eis?|ois?|aus?|eus?|ous?|ias?|ies?|ios?|uas?|ues?|uos?)$/
    end

    def syllable_index
      return -1 if oxytone?
      return -2 if paroxytone?
      return -3 if proparoxytone?
      # Shoud never happen because defaut is paroxytone
      raise "Can't understand word"
    end

    private

    def separated
      @separated ||= SyllableSeparator.new(@text).separate
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pascoale-0.3.2 lib/pascoale/reflector.rb