Sha256: 3a049ea60e185e380150b92b69289490d2048989c8af82e2658f2aa646c7302f

Contents?: true

Size: 647 Bytes

Versions: 1

Compression:

Stored size: 647 Bytes

Contents

require "syllable_counter/version"
require "syllable_counter/rules"

module SyllableCounter
  class Calculate
    def initialize(rule_set = SyllableCounter::Rules::Rules.new)
      @rule_set = rule_set
    end

    def execute(string)
      count = 0
      string.split.each do |word|
        if @rule_set.is_exception?(word)
          count += @rule_set.exceptions[word]
        else
          count += validate(@rule_set.execute(word).scan(/[aeiouy%]/).count)
        end
      end
      count
    end

    protected
    def validate(count)
      #all English words must have at least one syllable
      count == 0 ? 1 : count
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
syllable_counter-1.0.0 lib/syllable_counter/calculate.rb