linguistics 1.0.9 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/.gemtest +0 -0
- data/ChangeLog +849 -342
- data/History.rdoc +11 -0
- data/LICENSE +9 -9
- data/Manifest.txt +44 -0
- data/README.rdoc +226 -0
- data/Rakefile +32 -349
- data/examples/endocs.rb +272 -0
- data/examples/generalize_sentence.rb +2 -1
- data/examples/klingon.rb +22 -0
- data/lib/linguistics.rb +130 -292
- data/lib/linguistics/en.rb +337 -1628
- data/lib/linguistics/en/articles.rb +138 -0
- data/lib/linguistics/en/conjugation.rb +2245 -0
- data/lib/linguistics/en/conjunctions.rb +202 -0
- data/lib/linguistics/en/{infinitive.rb → infinitives.rb} +41 -55
- data/lib/linguistics/en/linkparser.rb +41 -49
- data/lib/linguistics/en/numbers.rb +483 -0
- data/lib/linguistics/en/participles.rb +33 -0
- data/lib/linguistics/en/pluralization.rb +810 -0
- data/lib/linguistics/en/stemmer.rb +75 -0
- data/lib/linguistics/en/titlecase.rb +121 -0
- data/lib/linguistics/en/wordnet.rb +63 -97
- data/lib/linguistics/inflector.rb +89 -0
- data/lib/linguistics/iso639.rb +534 -448
- data/lib/linguistics/languagebehavior.rb +36 -0
- data/lib/linguistics/monkeypatches.rb +42 -0
- data/spec/lib/constants.rb +15 -0
- data/spec/lib/helpers.rb +38 -0
- data/spec/linguistics/en/articles_spec.rb +797 -0
- data/spec/linguistics/en/conjugation_spec.rb +2083 -0
- data/spec/linguistics/en/conjunctions_spec.rb +154 -0
- data/spec/linguistics/en/infinitives_spec.rb +518 -0
- data/spec/linguistics/en/linkparser_spec.rb +66 -0
- data/spec/linguistics/en/numbers_spec.rb +1295 -0
- data/spec/linguistics/en/participles_spec.rb +55 -0
- data/spec/linguistics/en/pluralization_spec.rb +4636 -0
- data/spec/linguistics/en/stemmer_spec.rb +72 -0
- data/spec/linguistics/en/titlecase_spec.rb +841 -0
- data/spec/linguistics/en/wordnet_spec.rb +85 -0
- data/spec/linguistics/en_spec.rb +45 -167
- data/spec/linguistics/inflector_spec.rb +40 -0
- data/spec/linguistics/iso639_spec.rb +49 -53
- data/spec/linguistics/monkeypatches_spec.rb +40 -0
- data/spec/linguistics_spec.rb +46 -76
- metadata +241 -113
- metadata.gz.sig +0 -0
- data/README +0 -166
- data/README.english +0 -245
- data/rake/191_compat.rb +0 -26
- data/rake/dependencies.rb +0 -76
- data/rake/documentation.rb +0 -123
- data/rake/helpers.rb +0 -502
- data/rake/hg.rb +0 -318
- data/rake/manual.rb +0 -787
- data/rake/packaging.rb +0 -129
- data/rake/publishing.rb +0 -341
- data/rake/style.rb +0 -62
- data/rake/svn.rb +0 -668
- data/rake/testing.rb +0 -152
- data/rake/verifytask.rb +0 -64
- data/tests/en/infinitive.tests.rb +0 -207
- data/tests/en/inflect.tests.rb +0 -1389
- data/tests/en/lafcadio.tests.rb +0 -77
- data/tests/en/linkparser.tests.rb +0 -42
- data/tests/en/lprintf.tests.rb +0 -77
- data/tests/en/titlecase.tests.rb +0 -73
- data/tests/en/wordnet.tests.rb +0 -95
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/usr/bin/env spec -cfs
|
2
|
+
|
3
|
+
BEGIN {
|
4
|
+
require 'pathname'
|
5
|
+
basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
|
6
|
+
|
7
|
+
libdir = basedir + "lib"
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
|
10
|
+
$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
|
11
|
+
}
|
12
|
+
|
13
|
+
require 'rspec'
|
14
|
+
require 'spec/lib/helpers'
|
15
|
+
|
16
|
+
require 'linguistics'
|
17
|
+
require 'linguistics/en'
|
18
|
+
require 'linguistics/en/wordnet'
|
19
|
+
|
20
|
+
|
21
|
+
describe Linguistics::EN::WordNet do
|
22
|
+
|
23
|
+
before( :all ) do
|
24
|
+
setup_logging()
|
25
|
+
Linguistics.use( :en )
|
26
|
+
end
|
27
|
+
|
28
|
+
after( :all ) do
|
29
|
+
reset_logging()
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
it "adds EN::WordNet to the list of English language modules" do
|
34
|
+
Linguistics::EN::MODULES.include?( Linguistics::EN::WordNet )
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
describe "on a system that has the 'wordnet' library installed" do
|
39
|
+
|
40
|
+
before( :each ) do
|
41
|
+
pending "installation of the wordnet library" unless
|
42
|
+
Linguistics::EN.has_wordnet?
|
43
|
+
end
|
44
|
+
|
45
|
+
it "can create a WordNet::Synset from a word" do
|
46
|
+
"jackal".en.synset.should be_a( WordNet::Synset )
|
47
|
+
end
|
48
|
+
|
49
|
+
it "can load all synsets for a word" do
|
50
|
+
result = "appear".en.synsets
|
51
|
+
result.should have( 7 ).members
|
52
|
+
result.should include( WordNet::Synset[200422090] )
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
describe "on a system that doesn't have the 'wordnet' library" do
|
59
|
+
before( :all ) do
|
60
|
+
# If the system *does* have wordnet support, pretend it doesn't.
|
61
|
+
if Linguistics::EN.has_wordnet?
|
62
|
+
@had_wordnet = true
|
63
|
+
error = LoadError.new( "no such file to load -- wordnet" )
|
64
|
+
Linguistics::EN::WordNet.instance_variable_set( :@has_wordnet, false )
|
65
|
+
Linguistics::EN::WordNet.instance_variable_set( :@wn_error, error )
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
after( :all ) do
|
70
|
+
if @had_wordnet
|
71
|
+
Linguistics::EN::WordNet.instance_variable_set( :@has_wordnet, true )
|
72
|
+
Linguistics::EN::WordNet.instance_variable_set( :@wn_error, nil )
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it "raises the appropriate LoadError when you try to use wordnet functionality" do
|
77
|
+
expect {
|
78
|
+
"persimmon".en.synset
|
79
|
+
}.to raise_error( LoadError, %r{wordnet}i )
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
data/spec/linguistics/en_spec.rb
CHANGED
@@ -6,210 +6,88 @@ BEGIN {
|
|
6
6
|
|
7
7
|
libdir = basedir + "lib"
|
8
8
|
|
9
|
-
$LOAD_PATH.unshift(
|
9
|
+
$LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
|
10
|
+
$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
|
10
11
|
}
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
require 'rubygems'
|
19
|
-
retry
|
20
|
-
end
|
21
|
-
raise
|
22
|
-
end
|
13
|
+
require 'rspec'
|
14
|
+
require 'spec/lib/helpers'
|
15
|
+
|
16
|
+
require 'linguistics'
|
17
|
+
require 'linguistics/en'
|
18
|
+
require 'linguistics/languagebehavior'
|
23
19
|
|
24
20
|
|
25
21
|
describe Linguistics::EN do
|
26
22
|
|
27
23
|
before( :all ) do
|
28
|
-
|
24
|
+
setup_logging( :fatal )
|
25
|
+
Linguistics.use( :en, :proxy => true )
|
29
26
|
include Linguistics::EN
|
30
27
|
end
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
before( :each ) do
|
36
|
-
@array = ['cat']
|
37
|
-
end
|
38
|
-
|
39
|
-
it "results in a phrase with indefinite article" do
|
40
|
-
@array.en.conjunction.should == "a cat"
|
41
|
-
end
|
42
|
-
|
29
|
+
after( :all ) do
|
30
|
+
reset_logging()
|
43
31
|
end
|
44
32
|
|
45
33
|
|
46
|
-
|
34
|
+
it_behaves_like "a Linguistics language module"
|
47
35
|
|
48
|
-
before( :each ) do
|
49
|
-
@array = ['cat', 'dog']
|
50
|
-
end
|
51
36
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
it "results in a phrase joined with 'plus' if 'plus' is set as the conjunctive" do
|
57
|
-
@array.en.conjunction(:conjunctive => 'plus').should == "a cat plus a dog"
|
58
|
-
end
|
59
|
-
|
60
|
-
it "results in a phrase joined with a space if an empty string is set as the conjunctive" do
|
61
|
-
@array.en.conjunction(:conjunctive => '').should == "a cat a dog"
|
62
|
-
end
|
63
|
-
|
37
|
+
it "provides a predicate for testing for the presence of modules by name" do
|
38
|
+
Linguistics::EN.should_not have_extension( 'nonexistant' )
|
39
|
+
Linguistics::EN.should have_extension( 'articles' )
|
64
40
|
end
|
65
41
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
before( :each ) do
|
70
|
-
@array = ['cat', 'Cat']
|
71
|
-
end
|
72
|
-
|
73
|
-
it "combines them into their downcased equivalents with default options" do
|
74
|
-
@array.en.conjunction.should == "two cats"
|
75
|
-
end
|
76
|
-
|
77
|
-
it "lists them separately if :combine is set to false" do
|
78
|
-
@array.en.conjunction(:combine => false).should == "a cat and a Cat"
|
79
|
-
end
|
80
|
-
|
81
|
-
it "doesn't combine them if :casefold is turned off" do
|
82
|
-
@array.en.conjunction(:casefold => false).should == "a cat and a Cat"
|
83
|
-
end
|
84
|
-
|
85
|
-
it "combines and lists them with a non-specific count if :generalize is set" do
|
86
|
-
@array.en.conjunction(:generalize => true).should == "several cats"
|
87
|
-
end
|
88
|
-
|
42
|
+
it "knows that it's not in 'classical' mode by default" do
|
43
|
+
Linguistics::EN.should_not be_classical()
|
89
44
|
end
|
90
45
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
before( :each ) do
|
95
|
-
@array = %w{cat dog fox dog chicken chicken Fox chicken goose Dog goose}
|
96
|
-
end
|
97
|
-
|
98
|
-
it "combines them into their downcased equivalents and lists them in order of amount " +
|
99
|
-
"with default options" do
|
100
|
-
@array.en.conjunction.should ==
|
101
|
-
'three dogs, three chickens, two foxes, two geese, and a cat'
|
102
|
-
end
|
103
|
-
|
104
|
-
it "lists them separately if :combine is set to false" do
|
105
|
-
@array.en.conjunction(:combine => false).should ==
|
106
|
-
'a cat, a dog, a fox, a dog, a chicken, a chicken, a Fox, a '\
|
107
|
-
'chicken, a goose, a Dog, and a goose'
|
108
|
-
end
|
109
|
-
|
110
|
-
it "doesn't combine the differently-cased ones if :casefold is turned off" do
|
111
|
-
@array.en.conjunction(:casefold => false).should ==
|
112
|
-
'three chickens, two dogs, two geese, a cat, a fox, a Fox, '\
|
113
|
-
'and a Dog'
|
46
|
+
it "can run a single block in classical mode" do
|
47
|
+
Linguistics::EN.in_classical_mode do
|
48
|
+
Linguistics::EN.should be_classical()
|
114
49
|
end
|
115
|
-
|
116
|
-
it "combines and lists them with a non-specific count if :generalize is set" do
|
117
|
-
@array.en.conjunction(:generalize => true).should ==
|
118
|
-
'several dogs, several chickens, several foxes, several '\
|
119
|
-
'geese, and a cat'
|
120
|
-
end
|
121
|
-
|
122
50
|
end
|
123
|
-
|
124
|
-
|
125
|
-
describe "conjunction with an object-transform block" do
|
126
|
-
|
127
|
-
it "doesn't still have #6: #conjunction doesn't invoke supplied block under some conditions"
|
128
|
-
before( :each ) do
|
129
|
-
# Create a new class, as we need to guarantee that this will be the
|
130
|
-
# first #conjunction call to it.
|
131
|
-
@collection = Class::new {
|
132
|
-
include Enumerable, Linguistics
|
133
|
-
def initialize( *ary )
|
134
|
-
@ary = ary.flatten
|
135
|
-
end
|
136
|
-
|
137
|
-
# Delegate #each to the contained Array
|
138
|
-
def each( &block )
|
139
|
-
@ary.each( &block )
|
140
|
-
end
|
141
|
-
}
|
142
|
-
|
143
|
-
@obj = @collection.new( 'foo', 'bar', 'baz', 'tree', 'node', 'sonogram' )
|
144
|
-
end
|
145
51
|
|
146
|
-
|
147
|
-
|
148
|
-
|
52
|
+
it "handles nested classical blocks correctly" do
|
53
|
+
Linguistics::EN.in_classical_mode do
|
54
|
+
Linguistics::EN.in_classical_mode do
|
55
|
+
Linguistics::EN.should be_classical()
|
56
|
+
end
|
57
|
+
Linguistics::EN.should be_classical()
|
149
58
|
end
|
59
|
+
Linguistics::EN.should_not be_classical()
|
150
60
|
end
|
151
61
|
|
152
62
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
assert_nothing_raised do
|
158
|
-
rval = Items.en.conjunction {|word| "%s-word" % word[0,1]}
|
159
|
-
end
|
160
|
-
|
161
|
-
assert_equal "three c-words and a b-word", rval
|
63
|
+
it "provides a sprintf-like function for interpolating variables into a String" do
|
64
|
+
"I have %CONJUNCT.".en.lprintf( ["cat", "cat", "dog"] ).
|
65
|
+
should == "I have two cats and a dog."
|
162
66
|
end
|
163
67
|
|
164
68
|
|
165
|
-
|
166
|
-
rval = nil
|
69
|
+
context "lprintf formatters" do
|
167
70
|
|
168
|
-
|
169
|
-
|
71
|
+
before( :all ) do
|
72
|
+
@real_formatters = Linguistics::EN.lprintf_formatters
|
170
73
|
end
|
171
74
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
def test_conjunction_with_penultimate_separator_turned_off_should_not_use_one
|
176
|
-
rval = nil
|
177
|
-
|
178
|
-
assert_nothing_raised do
|
179
|
-
rval = Items.en.conjunction( :penultimate => false )
|
75
|
+
before( :each ) do
|
76
|
+
Linguistics::EN.lprintf_formatters.clear
|
180
77
|
end
|
181
|
-
|
182
|
-
assert_equal "a cow, a chicken, a blancmange and a cyclist", rval
|
183
|
-
end
|
184
78
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
assert_nothing_raised do
|
189
|
-
rval = %w{duck cow dog}.en.conjunction( :penultimate => false )
|
79
|
+
after( :all ) do
|
80
|
+
Linguistics::EN.lprintf_formatters.replace( @real_formatters )
|
190
81
|
end
|
191
|
-
|
192
|
-
assert_equal "a duck, a cow and a dog", rval
|
193
|
-
end
|
194
82
|
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
"wooden chest",
|
202
|
-
"hat rack",
|
203
|
-
]
|
204
|
-
|
205
|
-
assert_nothing_raised do
|
206
|
-
rval = scene_items.conjunction
|
83
|
+
|
84
|
+
it "provides a way to register new lprintf formatters with a Symbol" do
|
85
|
+
Linguistics::EN.register_lprintf_formatter :TEST, :plural
|
86
|
+
Linguistics::EN.lprintf_formatters.should have( 1 ).member
|
87
|
+
Linguistics::EN.lprintf_formatters.should include( :TEST )
|
88
|
+
Linguistics::EN.lprintf_formatters[ :TEST ].should be_a( Proc )
|
207
89
|
end
|
208
|
-
|
209
|
-
assert_equal "a desk with stamps, paper, and envelopes on it; " +
|
210
|
-
"a basket containing milk, eggs, and broccoli; " +
|
211
|
-
"a chair; a wooden chest; and a hat rack", rval
|
212
|
-
end
|
213
90
|
|
91
|
+
end
|
214
92
|
end
|
215
93
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env spec -cfs
|
2
|
+
|
3
|
+
BEGIN {
|
4
|
+
require 'pathname'
|
5
|
+
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
6
|
+
|
7
|
+
libdir = basedir + "lib"
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
|
10
|
+
$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
|
11
|
+
}
|
12
|
+
|
13
|
+
require 'rspec'
|
14
|
+
require 'spec/lib/helpers'
|
15
|
+
|
16
|
+
require 'linguistics'
|
17
|
+
require 'linguistics/inflector'
|
18
|
+
|
19
|
+
|
20
|
+
describe Linguistics::Inflector do
|
21
|
+
|
22
|
+
before( :all ) do
|
23
|
+
setup_logging( :fatal )
|
24
|
+
end
|
25
|
+
|
26
|
+
after( :all ) do
|
27
|
+
reset_logging()
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
it "provides a human-readable representation of the object suitable for debugging" do
|
32
|
+
obj = Object.new
|
33
|
+
result = Linguistics::Inflector.new( :en, obj ).inspect
|
34
|
+
|
35
|
+
result.should include( (obj.object_id / 2).to_s(16) )
|
36
|
+
result.should =~ /english-language/i
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env spec -cfs
|
2
|
+
#encoding: utf-8
|
2
3
|
|
3
4
|
BEGIN {
|
4
5
|
require 'pathname'
|
@@ -6,67 +7,62 @@ BEGIN {
|
|
6
7
|
|
7
8
|
libdir = basedir + "lib"
|
8
9
|
|
9
|
-
$LOAD_PATH.unshift(
|
10
|
+
$LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
|
11
|
+
$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
|
10
12
|
}
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
require 'linguistics/iso639'
|
15
|
-
rescue LoadError
|
16
|
-
unless Object.const_defined?( :Gem )
|
17
|
-
require 'rubygems'
|
18
|
-
retry
|
19
|
-
end
|
20
|
-
raise
|
21
|
-
end
|
14
|
+
require 'rspec'
|
15
|
+
require 'spec/lib/helpers'
|
22
16
|
|
17
|
+
require 'linguistics'
|
18
|
+
require 'linguistics/iso639'
|
23
19
|
|
24
|
-
describe Linguistics, " language codes" do
|
25
20
|
|
21
|
+
describe Linguistics::ISO639 do
|
22
|
+
|
23
|
+
# eng||en|English|anglais
|
26
24
|
it "loads simple language codes from its __DATA__ section" do
|
27
|
-
Linguistics::
|
28
|
-
Linguistics::
|
29
|
-
|
30
|
-
Linguistics::
|
31
|
-
Linguistics::
|
32
|
-
Linguistics::
|
33
|
-
|
34
|
-
|
35
|
-
Linguistics::
|
36
|
-
Linguistics::
|
25
|
+
Linguistics::LANGUAGE_CODES.should have_key( :en )
|
26
|
+
Linguistics::LANGUAGE_CODES[ :en ].should have(3).members
|
27
|
+
|
28
|
+
Linguistics::LANGUAGE_CODES[ :en ].should have_key( :codes )
|
29
|
+
Linguistics::LANGUAGE_CODES[ :en ][:codes].should have(2).members
|
30
|
+
Linguistics::LANGUAGE_CODES[ :en ][:codes].should include("en", "eng")
|
31
|
+
|
32
|
+
Linguistics::LANGUAGE_CODES[ :en ].should have_key( :eng_name )
|
33
|
+
Linguistics::LANGUAGE_CODES[ :en ][:eng_name].should == 'English'
|
34
|
+
Linguistics::LANGUAGE_CODES[ :en ].should have_key( :fre_name )
|
35
|
+
Linguistics::LANGUAGE_CODES[ :en ][:fre_name].should == 'anglais'
|
37
36
|
end
|
38
|
-
|
37
|
+
|
39
38
|
it "loads language codes with variants from its __DATA__ section" do
|
40
39
|
|
41
|
-
# ces
|
42
|
-
Linguistics::
|
43
|
-
Linguistics::
|
44
|
-
|
45
|
-
Linguistics::
|
46
|
-
Linguistics::
|
47
|
-
Linguistics::
|
48
|
-
|
49
|
-
Linguistics::
|
50
|
-
|
51
|
-
Linguistics::
|
52
|
-
Linguistics::
|
53
|
-
|
54
|
-
#
|
55
|
-
Linguistics::
|
56
|
-
Linguistics::
|
57
|
-
|
58
|
-
Linguistics::
|
59
|
-
|
60
|
-
Linguistics::
|
61
|
-
|
62
|
-
Linguistics::
|
63
|
-
Linguistics::
|
64
|
-
Linguistics::
|
65
|
-
Linguistics::
|
66
|
-
|
67
|
-
Linguistics::LanguageCodes[ "jv" ].should have_key( :desc )
|
68
|
-
Linguistics::LanguageCodes[ "jv" ][:desc].should == 'Javanese'
|
69
|
-
|
40
|
+
# cze|ces|cs|Czech|tchèque
|
41
|
+
Linguistics::LANGUAGE_CODES.should have_key( :cs )
|
42
|
+
Linguistics::LANGUAGE_CODES[ :cs ].should have(3).members
|
43
|
+
|
44
|
+
Linguistics::LANGUAGE_CODES[ :cs ].should have_key( :codes )
|
45
|
+
Linguistics::LANGUAGE_CODES[ :cs ][:codes].should have(3).members
|
46
|
+
Linguistics::LANGUAGE_CODES[ :cs ][:codes].should include("cs", "ces", "cze")
|
47
|
+
|
48
|
+
Linguistics::LANGUAGE_CODES[ :cs ].should have_key( :eng_name )
|
49
|
+
Linguistics::LANGUAGE_CODES[ :cs ][:eng_name].should == 'Czech'
|
50
|
+
Linguistics::LANGUAGE_CODES[ :cs ].should have_key( :fre_name )
|
51
|
+
Linguistics::LANGUAGE_CODES[ :cs ][:fre_name].should == 'tchèque'
|
52
|
+
|
53
|
+
# mac|mkd|mk|Macedonian|macédonien
|
54
|
+
Linguistics::LANGUAGE_CODES.should have_key( :mk )
|
55
|
+
Linguistics::LANGUAGE_CODES[ :mk ].should have( 3 ).members
|
56
|
+
|
57
|
+
Linguistics::LANGUAGE_CODES[ :mk ].should have_key( :codes )
|
58
|
+
Linguistics::LANGUAGE_CODES[ :mk ][:codes].should have(3).members
|
59
|
+
Linguistics::LANGUAGE_CODES[ :mk ][:codes].should include("mk", "mac", "mkd")
|
60
|
+
|
61
|
+
Linguistics::LANGUAGE_CODES[ :mk ].should have_key( :eng_name )
|
62
|
+
Linguistics::LANGUAGE_CODES[ :mk ][:eng_name].should == 'Macedonian'
|
63
|
+
Linguistics::LANGUAGE_CODES[ :mk ].should have_key( :fre_name )
|
64
|
+
Linguistics::LANGUAGE_CODES[ :mk ][:fre_name].should == 'macédonien'
|
65
|
+
|
70
66
|
end
|
71
|
-
|
67
|
+
|
72
68
|
end
|