phonology 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/phonology.rb +2 -0
- data/lib/phonology/ipa.rb +11 -0
- data/lib/phonology/rule.rb +8 -0
- data/lib/phonology/sound.rb +5 -5
- data/lib/phonology/sound_sequence.rb +8 -2
- data/lib/phonology/syllable.rb +62 -0
- data/lib/phonology/version.rb +1 -1
- metadata +8 -4
data/lib/phonology.rb
CHANGED
@@ -5,6 +5,8 @@ require File.expand_path("../phonology/sound", __FILE__)
|
|
5
5
|
require File.expand_path("../phonology/sound_sequence", __FILE__)
|
6
6
|
require File.expand_path("../phonology/orthography", __FILE__)
|
7
7
|
require File.expand_path("../phonology/rule", __FILE__)
|
8
|
+
require File.expand_path("../phonology/syllable", __FILE__)
|
9
|
+
require File.expand_path("../phonology/ipa", __FILE__)
|
8
10
|
|
9
11
|
module Phonology
|
10
12
|
|
data/lib/phonology/rule.rb
CHANGED
data/lib/phonology/sound.rb
CHANGED
@@ -2,11 +2,11 @@ module Phonology
|
|
2
2
|
|
3
3
|
module SoundBase
|
4
4
|
|
5
|
-
attr_accessor :features, :orthography, :hints
|
5
|
+
attr_accessor :features, :orthography, :hints, :syllable
|
6
6
|
protected :features=, :hints=
|
7
7
|
|
8
8
|
Features::ALL.each do |feature|
|
9
|
-
class_eval(<<-EOM, __FILE__, __LINE__ +1)
|
9
|
+
class_eval(<<-EOM, __FILE__, __LINE__ + 1)
|
10
10
|
def #{feature}?
|
11
11
|
features.include? :#{feature}
|
12
12
|
end
|
@@ -18,7 +18,7 @@ module Phonology
|
|
18
18
|
end
|
19
19
|
|
20
20
|
Features::CLASSES.each do |feature_class, values|
|
21
|
-
class_eval(<<-EOM, __FILE__, __LINE__ +1)
|
21
|
+
class_eval(<<-EOM, __FILE__, __LINE__ + 1)
|
22
22
|
def #{feature_class}?
|
23
23
|
set = Features.expand(:#{feature_class})
|
24
24
|
!set.intersection(features).empty?
|
@@ -138,8 +138,8 @@ module Phonology
|
|
138
138
|
alias add <<
|
139
139
|
|
140
140
|
# Add a feature without replacing place or manner.
|
141
|
-
def add!(
|
142
|
-
features.add
|
141
|
+
def add!(*args)
|
142
|
+
args.map {|a| features.add a.to_sym }
|
143
143
|
self
|
144
144
|
end
|
145
145
|
|
@@ -9,7 +9,7 @@ module Phonology
|
|
9
9
|
@sounds.__send__(sym, *args, &block)
|
10
10
|
end
|
11
11
|
|
12
|
-
def initialize(arg)
|
12
|
+
def initialize(arg = nil)
|
13
13
|
# String of ipa symbols
|
14
14
|
if arg.kind_of? String
|
15
15
|
@sounds = arg.split('').map {|letter| Sound.new(letter)}
|
@@ -18,6 +18,10 @@ module Phonology
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
def syllables(syllabifier)
|
22
|
+
@syllables ||= syllabifier.syllabify(self)
|
23
|
+
end
|
24
|
+
|
21
25
|
def symbols
|
22
26
|
compact.map(&:symbol).join
|
23
27
|
end
|
@@ -40,6 +44,8 @@ module Phonology
|
|
40
44
|
self
|
41
45
|
end
|
42
46
|
|
43
|
-
|
47
|
+
def sonority
|
48
|
+
@sounds.empty? ? nil : @sounds.last.sonority
|
49
|
+
end
|
44
50
|
end
|
45
51
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Phonology
|
2
|
+
# @abstract
|
3
|
+
class Syllable
|
4
|
+
|
5
|
+
attr_accessor :onset, :coda, :nucleus, :stress
|
6
|
+
|
7
|
+
def initialize(sound = nil)
|
8
|
+
@onset = ::Phonology::SoundSequence.new
|
9
|
+
@nucleus = ::Phonology::SoundSequence.new
|
10
|
+
@coda = ::Phonology::SoundSequence.new
|
11
|
+
add sound if sound
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_a
|
15
|
+
[onset, rime].flatten
|
16
|
+
end
|
17
|
+
|
18
|
+
def valid?
|
19
|
+
!nucleus.empty?
|
20
|
+
end
|
21
|
+
|
22
|
+
def rime
|
23
|
+
[nucleus, coda]
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_s(show_stress = true)
|
27
|
+
(show_stress && stress ? IPA.primary_stress : "") + to_a.map(&:symbol).join
|
28
|
+
end
|
29
|
+
|
30
|
+
def wants?(sound)
|
31
|
+
onset_wants?(sound) or nucleus_wants?(sound) or coda_wants?(sound)
|
32
|
+
end
|
33
|
+
|
34
|
+
def onset_wants?(sound)
|
35
|
+
raise NotImplementedError
|
36
|
+
end
|
37
|
+
|
38
|
+
def nucleus_wants?(sound)
|
39
|
+
raise NotImplementedError
|
40
|
+
end
|
41
|
+
|
42
|
+
def coda_wants?(sound)
|
43
|
+
raise NotImplementedError
|
44
|
+
end
|
45
|
+
|
46
|
+
def <<(sound)
|
47
|
+
if onset_wants?(sound)
|
48
|
+
@onset << sound
|
49
|
+
elsif nucleus_wants?(sound)
|
50
|
+
@nucleus << sound
|
51
|
+
else
|
52
|
+
@coda << sound
|
53
|
+
end
|
54
|
+
sound.syllable = self
|
55
|
+
end
|
56
|
+
alias add <<
|
57
|
+
|
58
|
+
def empty?
|
59
|
+
onset.empty? && nucleus.empty? && coda.empty?
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/phonology/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 6
|
9
|
+
version: 0.0.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Norman Clarke
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-07-09 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -30,10 +30,12 @@ files:
|
|
30
30
|
- lib/phonology.rb
|
31
31
|
- lib/phonology/features.rb
|
32
32
|
- lib/phonology/inventory.rb
|
33
|
+
- lib/phonology/ipa.rb
|
33
34
|
- lib/phonology/orthography.rb
|
34
35
|
- lib/phonology/rule.rb
|
35
36
|
- lib/phonology/sound.rb
|
36
37
|
- lib/phonology/sound_sequence.rb
|
38
|
+
- lib/phonology/syllable.rb
|
37
39
|
- lib/phonology/version.rb
|
38
40
|
- test/affricate_test.rb
|
39
41
|
- test/features_test.rb
|
@@ -54,6 +56,7 @@ rdoc_options: []
|
|
54
56
|
require_paths:
|
55
57
|
- lib
|
56
58
|
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
57
60
|
requirements:
|
58
61
|
- - ">="
|
59
62
|
- !ruby/object:Gem::Version
|
@@ -61,6 +64,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
61
64
|
- 0
|
62
65
|
version: "0"
|
63
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
64
68
|
requirements:
|
65
69
|
- - ">="
|
66
70
|
- !ruby/object:Gem::Version
|
@@ -70,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
74
|
requirements: []
|
71
75
|
|
72
76
|
rubyforge_project: "[none]"
|
73
|
-
rubygems_version: 1.3.
|
77
|
+
rubygems_version: 1.3.7
|
74
78
|
signing_key:
|
75
79
|
specification_version: 3
|
76
80
|
summary: Phonology library for Ruby
|