syllabize 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/exceptions.yml +4 -0
- data/lib/syllabize.rb +31 -7
- data/lib/syllabize/version.rb +1 -1
- data/spec/lib/syllabize_spec.rb +12 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23afd6f2352f69d7c3a26bb12a82400001320734
|
4
|
+
data.tar.gz: e7bd73dee7108f6ce73e07f8f1f932e43a4a78d9
|
5
5
|
!binary "U0hBNTEy":
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6214837189f911d7fddef222d33378de3d2deeb1e962168601ec799f2371f6c37a6d871de16bc54b132cd171cf89382555c067fae738b94130ab915b940dc720
|
7
|
+
data.tar.gz: aab4945ee4173764d6d04fed781f8ae78c98188e82004e83793f3d43c60ade1eeb46121f3f1e354f0069465aca69aa550b09daaefe4b22d053dbb8b95760d0dd
|
data/lib/exceptions.yml
ADDED
data/lib/syllabize.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "syllabize/version"
|
2
|
+
require 'yaml'
|
2
3
|
|
3
4
|
module Syllabize
|
4
5
|
|
@@ -14,19 +15,38 @@ module Syllabize
|
|
14
15
|
LE_VOWEL_SOUND = /((le)\z)|((le(d|r|s))|(ling)\z)/i
|
15
16
|
DIPHTHONGS = /ou|ie|oo|oi|ea|ee|ai|ae/i
|
16
17
|
Y_AS_VOWEL = /[^yY][yY]/
|
18
|
+
RE_VOWEL = /(^re[aeiou])/i
|
17
19
|
|
18
20
|
def count_syllables
|
19
|
-
|
20
|
-
syllables
|
21
|
-
|
22
|
-
|
23
|
-
syllables
|
24
|
-
syllables += 1 if ends_in_sm?
|
25
|
-
syllables <= 1 ? 1 : syllables
|
21
|
+
return handle_exceptions if exceptions.keys.include?(word)
|
22
|
+
@syllables = count_vowels
|
23
|
+
handle_additions
|
24
|
+
handle_subtractions
|
25
|
+
@syllables <= 1 ? 1 : @syllables
|
26
26
|
end
|
27
27
|
|
28
28
|
private
|
29
29
|
|
30
|
+
def exceptions
|
31
|
+
exceptions = YAML::load_file(File.join(__dir__, 'exceptions.yml'))['exceptions']
|
32
|
+
end
|
33
|
+
|
34
|
+
def handle_exceptions
|
35
|
+
exceptions[word.to_s]
|
36
|
+
end
|
37
|
+
|
38
|
+
def handle_additions
|
39
|
+
@syllables += count_ys_in_vowel_role if contains_non_initial_y?
|
40
|
+
if contains_le_vowel_sound? || begins_with_re_vowel? || ends_in_sm?
|
41
|
+
@syllables += 1
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def handle_subtractions
|
46
|
+
@syllables -= 1 if ends_in_silent_e?
|
47
|
+
@syllables -= count_diphthongs if contains_diphthongs?
|
48
|
+
end
|
49
|
+
|
30
50
|
def count_vowels
|
31
51
|
word.scan(VOWELS).count
|
32
52
|
end
|
@@ -47,6 +67,10 @@ module Syllabize
|
|
47
67
|
word.scan(Y_AS_VOWEL).size
|
48
68
|
end
|
49
69
|
|
70
|
+
def begins_with_re_vowel?
|
71
|
+
word.scan(RE_VOWEL).any?
|
72
|
+
end
|
73
|
+
|
50
74
|
def contains_diphthongs?
|
51
75
|
word.downcase.scan(DIPHTHONGS).any?
|
52
76
|
end
|
data/lib/syllabize/version.rb
CHANGED
data/spec/lib/syllabize_spec.rb
CHANGED
@@ -3,7 +3,8 @@ require_relative '../spec_helper'
|
|
3
3
|
class Syllabize::Counter
|
4
4
|
public :count_vowels, :ends_in_silent_e?, :count_diphthongs,
|
5
5
|
:contains_diphthongs?, :ends_in_sm?, :contains_non_initial_y?,
|
6
|
-
:count_ys_in_vowel_role, :contains_le_vowel_sound
|
6
|
+
:count_ys_in_vowel_role, :contains_le_vowel_sound?,
|
7
|
+
:begins_with_re_vowel?
|
7
8
|
end
|
8
9
|
|
9
10
|
describe Syllabize::Counter do
|
@@ -74,6 +75,13 @@ describe Syllabize::Counter do
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
78
|
+
describe '#begins_with_re_vowel?' do
|
79
|
+
it 'returns true if the word begins with re- and a vowel' do
|
80
|
+
expect(Syllabize::Counter.new('rearrange').begins_with_re_vowel?).to be_true
|
81
|
+
expect(Syllabize::Counter.new('dreary').begins_with_re_vowel?).to be_false
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
77
85
|
describe '#count_diphthongs' do
|
78
86
|
it 'counts the diphthongs in a word' do
|
79
87
|
expect(Syllabize::Counter.new('air').count_diphthongs).to eq(1)
|
@@ -99,6 +107,9 @@ describe Syllabize::Counter do
|
|
99
107
|
'please' => 1,
|
100
108
|
'candle' => 2,
|
101
109
|
'handling' => 3,
|
110
|
+
'realize' => 3,
|
111
|
+
'really' => 2,
|
112
|
+
'cooperate' => 4,
|
102
113
|
}.each do |word, syllable_count|
|
103
114
|
expect(Syllabize::Counter.new(word).count_syllables).to eq(syllable_count)
|
104
115
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syllabize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thenickcox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -64,6 +64,7 @@ files:
|
|
64
64
|
- LICENSE.txt
|
65
65
|
- README.md
|
66
66
|
- Rakefile
|
67
|
+
- lib/exceptions.yml
|
67
68
|
- lib/syllabize.rb
|
68
69
|
- lib/syllabize/version.rb
|
69
70
|
- spec/lib/syllabize_spec.rb
|