Linguistics 1.0.3

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/README ADDED
@@ -0,0 +1,178 @@
1
+
2
+ = Linguistics
3
+
4
+ == Authors
5
+
6
+ * Michael Granger <ged@FaerieMUD.org>
7
+ * Martin Chase <stillflame@FaerieMUD.org>
8
+
9
+
10
+ == Requirements
11
+
12
+ * Ruby >= 1.8.0
13
+
14
+ The following libraries are required, but are included in the redist/
15
+ directory. The installer script should install these for you if you don't
16
+ already have them.
17
+
18
+ * HashSlice - Adds slicing to the builtin Hash class
19
+
20
+
21
+ == Optional
22
+
23
+ * CrossCase - Provide auto-aliasing of camelCase to under_barred methods and
24
+ vice-versa. (Included in redist/)
25
+
26
+ * Ruby-WordNet (>= 0.02) - adds integration for the Ruby binding for the WordNet� lexical
27
+ reference system.
28
+
29
+ URL: http://www.deveiate.org/code/Ruby-WordNet.html
30
+ Download: http://www.deveiate.org/code/Ruby-WordNet-0.02.tar.gz
31
+
32
+ * LinkParser (>= 0.0.4) - adds integration for the Ruby Link Grammar Parser by
33
+ Martin Chase.
34
+
35
+ URL: http://dev.faeriemud.org/~stillflame/linkparse.html
36
+ Download: http://www.faeriemud.org/code/Ruby-LinkParser-0.0.4.tgz
37
+
38
+
39
+ == General Information
40
+
41
+ This module is a framework for building linguistic utilities for Ruby objects in
42
+ any language. It includes a generic language-independant front end, a module for
43
+ mapping language codes into language names, and a module which contains various
44
+ English-language utilities.
45
+
46
+
47
+ === Method Interface
48
+
49
+ The Linguistics module comes with a language-independant mechanism for extending
50
+ core Ruby classes with linguistic methods.
51
+
52
+ It consists of three parts: a core linguistics module which contains the
53
+ class-extension framework for languages, a generic inflector class that serves
54
+ as a delegator for linguistic methods on Ruby objects, and one or more
55
+ language-specific modules which contain the actual linguistic functions.
56
+
57
+ The module works by adding a single instance method for each language named
58
+ after the language's two-letter code (or three-letter code, if no two-letter
59
+ code is defined by ISO639) to various Ruby classes. This allows many
60
+ language-specific methods to be added to objects without cluttering up the
61
+ interface or risking collision between them, albeit at the cost of three or four
62
+ more characters per method invocation.
63
+
64
+ If you don't like extending core Ruby classes, the language modules should also
65
+ allow you to use them as a function library as well.
66
+
67
+ For example, the English-language module contains a #plural function which can
68
+ be accessed via a method on a core class:
69
+
70
+ Linguistics::use( :en )
71
+ "goose".en.plural
72
+ # => "geese"
73
+
74
+ or via the Linguistics::EN::plural function directly:
75
+
76
+ include Linguistics::EN
77
+ plural( "goose" )
78
+ # => "geese"
79
+
80
+ The class-extension mechanism actually uses the functional interface behind the
81
+ scenes.
82
+
83
+ A new feature with the 0.02 release: You can now omit the language-code method
84
+ for unambiguous methods by calling Linguistics::use with the +:installProxy+
85
+ configuration key, with the language code of the language module whose methods
86
+ you wish to be available. For example, instead of having to call:
87
+
88
+ "goose".en.plural
89
+
90
+ from the example above, you can now do this:
91
+
92
+ Lingusitics::use( :en, :installProxy => :en )
93
+ "goose".plural
94
+ # => "geese"
95
+
96
+ More about how this works in the documentation for Linguistics::use.
97
+
98
+
99
+ ==== Adding Language Modules
100
+
101
+ To add a new language to the framework, create a file named the same as the
102
+ ISO639 2- or 3-letter language code for the language you're adding. It must be
103
+ placed under lib/linguistics/ to be recognized by the linguistics module, but
104
+ you can also just require it yourself prior to calling Linguistics::use(). This
105
+ file should define a module under Linguistics that is an all-caps version of the
106
+ code used in the filename. Any methods you wish to be exposed to users should be
107
+ declared as module functions (ie., using Module#module_function).
108
+
109
+ You may also wish to add your module to the list of default languages by adding
110
+ the appropriate symbol to the Linguistics::DefaultLanguages array.
111
+
112
+ For example, to create a Portuguese-language module, create a file called
113
+ 'lib/linguistics/pt.rb' which contains the following:
114
+
115
+ module Linguistics
116
+ module PT
117
+ Linguistics::DefaultLanguages << :pt
118
+
119
+ module_function
120
+ <language methods here>
121
+ end
122
+ end
123
+
124
+ See the English language module (lib/linguistics/en.rb) for an example.
125
+
126
+
127
+ === English Language Module
128
+
129
+ See the README.english file for a synopsis.
130
+
131
+ The English-language module currently contains linguistic functions ported from
132
+ a few excellent Perl modules:
133
+
134
+ Lingua::EN::Inflect
135
+ Lingua::Conjunction
136
+ Lingua::EN::Infinitive
137
+
138
+ See the lib/linguistics/en.rb file for specific attributions.
139
+
140
+ New with version 0.02: integration with the Ruby WordNet� and LinkParser modules
141
+ (which must be installed separately).
142
+
143
+
144
+ == To Do
145
+
146
+ * I am planning on improving the results from the infinitive functions, which
147
+ currently return useful results only part of the time. Investigations into
148
+ additional stemming functions and some other strategies are ongoing.
149
+
150
+ * Martin Chase <stillflame at FaerieMUD dot org> is working on an integration
151
+ module for his excellent work on a Ruby interface to the CMU Link Grammar (an
152
+ english-sentence parser). This will make writing fairly accurate natural
153
+ language parsers in Ruby much easier.
154
+
155
+ * Suggestions (and patches) for any of these items or additional features are
156
+ welcomed.
157
+
158
+
159
+
160
+ == Legal
161
+
162
+ This module is Open Source Software which is Copyright (c) 2003 by The FaerieMUD
163
+ Consortium. All rights reserved.
164
+
165
+ You may use, modify, and/or redistribute this software under the terms of the
166
+ Perl Artistic License, a copy of which should have been included in this
167
+ distribution (See the file Artistic). If it was not, a copy of it may be
168
+ obtained from http://language.perl.com/misc/Artistic.html or
169
+ http://www.faeriemud.org/artistic.html).
170
+
171
+ THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
172
+ INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND
173
+ FITNESS FOR A PARTICULAR PURPOSE.
174
+
175
+
176
+ $Id: README,v 1.6 2003/10/09 13:21:48 deveiant Exp $
177
+
178
+
data/README.english ADDED
@@ -0,0 +1,245 @@
1
+
2
+ = English Ruby Linguistics Module - Synopsis
3
+
4
+ This is an overview of the functionality currently in the English functions of
5
+ the Ruby Linguistics module as of version 0.02:
6
+
7
+
8
+ == Pluralization
9
+
10
+ require 'linguistics'
11
+ Linguistics::use( :en ) # extends Array, String, and Numeric
12
+
13
+ "box".en.plural
14
+ # => "boxes"
15
+
16
+ "mouse".en.plural
17
+ # => "mice"
18
+
19
+ "ruby".en.plural
20
+ # => "rubies"
21
+
22
+
23
+ == Indefinite Articles
24
+
25
+ "book".en.a
26
+ # => "a book"
27
+
28
+ "article".en.a
29
+ # => "an article"
30
+
31
+
32
+ == Present Participles
33
+
34
+ "runs".en.present_participle
35
+ # => "running"
36
+
37
+ "eats".en.present_participle
38
+ # => "eating"
39
+
40
+ "spies".en.present_participle
41
+ # => "spying"
42
+
43
+
44
+ == Ordinal Numbers
45
+
46
+ 5.en.ordinal
47
+ # => "5th"
48
+
49
+ 2004.en.ordinal
50
+ # => "2004th"
51
+
52
+
53
+ == Numbers to Words
54
+
55
+ 5.en.numwords
56
+ # => "five"
57
+
58
+ 2004.en.numwords
59
+ # => "two thousand and four"
60
+
61
+ 2385762345876.en.numwords
62
+ # => "two trillion, three hundred and eighty-five billion,
63
+ seven hundred and sixty-two million, three hundred and
64
+ forty-five thousand, eight hundred and seventy-six"
65
+
66
+
67
+ == Quantification
68
+
69
+ "cow".en.quantify( 5 )
70
+ # => "several cows"
71
+
72
+ "cow".en.quantify( 1005 )
73
+ # => "thousands of cows"
74
+
75
+ "cow".en.quantify( 20_432_123_000_000 )
76
+ # => "tens of trillions of cows"
77
+
78
+
79
+ == Conjunctions
80
+
81
+ animals = %w{dog cow ox chicken goose goat cow dog rooster llama
82
+ pig goat dog cat cat dog cow goat goose goose ox alpaca}
83
+ puts "The farm has: " + animals.en.conjunction
84
+
85
+ # => The farm has: four dogs, three cows, three geese, three goats,
86
+ two oxen, two cats, a chicken, a rooster, a llama, a pig,
87
+ and an alpaca
88
+
89
+ Note that 'goose' and 'ox' are both correctly pluralized, and the correct
90
+ indefinite article 'an' has been used for 'alpaca'.
91
+
92
+ You can also use the generalization function of the #quantify method to give
93
+ general descriptions of object lists instead of literal counts:
94
+
95
+ allobjs = []
96
+ ObjectSpace::each_object {|obj| allobjs << obj.class.name}
97
+
98
+ puts "The current Ruby objectspace contains: " +
99
+ allobjs.en.conjunction( :generalize => true )
100
+
101
+ which will print something like:
102
+
103
+ The current Ruby objectspace contains: thousands of Strings,
104
+ thousands of Arrays, hundreds of Hashes, hundreds of
105
+ Classes, many Regexps, a number of Ranges, a number of
106
+ Modules, several Floats, several Procs, several MatchDatas,
107
+ several Objects, several IOS, several Files, a Binding, a
108
+ NoMemoryError, a SystemStackError, a fatal, a ThreadGroup,
109
+ and a Thread
110
+
111
+
112
+ == Infinitives
113
+
114
+ New in version 0.02:
115
+
116
+ "leaving".en.infinitive
117
+ # => "leave"
118
+
119
+ "left".en.infinitive
120
+ # => "leave"
121
+
122
+ "leaving".en.infinitive.suffix
123
+ # => "ing"
124
+
125
+
126
+ == WordNet� Integration
127
+
128
+ Also new in version 0.02, if you have the Ruby-WordNet module installed, you can
129
+ look up WordNet synsets using the Linguistics interface:
130
+
131
+ # Test to be sure the WordNet module loaded okay.
132
+ Linguistics::EN.has_wordnet?
133
+ # => true
134
+
135
+ # Fetch the default synset for the word "balance"
136
+ "balance".synset
137
+ # => #<WordNet::Synset:0x40376844 balance (noun): "a state of equilibrium"
138
+ (derivations: 3, antonyms: 1, hypernyms: 1, hyponyms: 3)>
139
+
140
+ # Fetch the synset for the first verb sense of "balance"
141
+ "balance".en.synset( :verb )
142
+ # => #<WordNet::Synset:0x4033f448 balance, equilibrate, equilibrize, equilibrise
143
+ (verb): "bring into balance or equilibrium; "She has to balance work and her
144
+ domestic duties"; "balance the two weights"" (derivations: 7, antonyms: 1,
145
+ verbGroups: 2, hypernyms: 1, hyponyms: 5)>
146
+
147
+ # Fetch the second noun sense
148
+ "balance".en.synset( 2, :noun )
149
+ # => #<WordNet::Synset:0x404ebb24 balance (noun): "a scale for weighing; depends
150
+ on pull of gravity" (hypernyms: 1, hyponyms: 5)>
151
+
152
+ # Fetch the second noun sense's hypernyms (more-general words, like a superclass)
153
+ "balance".en.synset( 2, :noun ).hypernyms
154
+ # => [#<WordNet::Synset:0x404e5620 scale, weighing machine (noun): "a measuring
155
+ instrument for weighing; shows amount of mass" (derivations: 2, hypernyms: 1,
156
+ hyponyms: 2)>]
157
+
158
+ # A simpler way of doing the same thing:
159
+ "balance".en.hypernyms( 2, :noun )
160
+ # => [#<WordNet::Synset:0x404e5620 scale, weighing machine (noun): "a measuring
161
+ instrument for weighing; shows amount of mass" (derivations: 2, hypernyms: 1,
162
+ hyponyms: 2)>]
163
+
164
+ # Fetch the first hypernym's hypernyms
165
+ "balance".en.synset( 2, :noun ).hypernyms.first.hypernyms
166
+ # => [#<WordNet::Synset:0x404c60b8 measuring instrument, measuring system,
167
+ measuring device (noun): "instrument that shows the extent or amount or quantity
168
+ or degree of something" (hypernyms: 1, hyponyms: 83)>]
169
+
170
+ # Find the synset to which both the second noun sense of "balance" and the
171
+ # default sense of "shovel" belong.
172
+ ("balance".en.synset( 2, :noun ) | "shovel".en.synset)
173
+ # => #<WordNet::Synset:0x40473da4 instrumentality, instrumentation (noun): "an
174
+ artifact (or system of artifacts) that is instrumental in accomplishing some
175
+ end" (derivations: 1, hypernyms: 1, hyponyms: 13)>
176
+
177
+ # Fetch just the words for the other kinds of "instruments"
178
+ "instrument".en.hyponyms.collect {|synset| synset.words}.flatten
179
+ # => ["analyzer", "analyser", "cautery", "cauterant", "drafting instrument",
180
+ "extractor", "instrument of execution", "instrument of punishment", "measuring
181
+ instrument", "measuring system", "measuring device", "medical instrument",
182
+ "navigational instrument", "optical instrument", "plotter", "scientific
183
+ instrument", "sonograph", "surveying instrument", "surveyor's instrument",
184
+ "tracer", "weapon", "arm", "weapon system", "whip"]
185
+
186
+ There are many more WordNet methods supported � too many to list here. See the
187
+ documentation for the complete list.
188
+
189
+
190
+ == LinkParser Integration
191
+
192
+ Another new feature in version 0.02 is integration with the Ruby version of the
193
+ CMU Link Grammar Parser by Martin Chase. If you have the LinkParser module
194
+ installed, you can create linkages from English sentences that let you query for
195
+ parts of speech:
196
+
197
+ # Test to see whether or not the link parser is loaded.
198
+ Linguistics::EN.has_link_parser?
199
+ # => true
200
+
201
+ # Diagram the first linkage for a test sentence
202
+ puts "he is a big dog".sentence.linkages.first.to_s
203
+ +---O*---+
204
+ | +--Ds--+
205
+ +Ss+ | +-A-+
206
+ | | | | |
207
+ he is a big dog
208
+
209
+ # Find the verb in the sentence
210
+ "he is a big dog".en.sentence.verb.to_s
211
+ # => "is"
212
+
213
+ # Combined infinitive + LinkParser: Find the infinitive form of the verb of the
214
+ given sentence.
215
+ "he is a big dog".en.sentence.verb.infinitive
216
+ # => "be"
217
+
218
+ # Find the direct object of the sentence
219
+ "he is a big dog".en.sentence.object.to_s
220
+ # => "dog"
221
+
222
+ # Look at the raw LinkParser::Word for the direct object of the sentence.
223
+ "he is a big dog".en.sentence.object
224
+ # => #<LinkParser::Word:0x403da0a0 @definition=[[{@A-}, Ds-, {@M+}, J-], [{@A-},
225
+ Ds-, {@M+}, Os-], [{@A-}, Ds-, {@M+}, Ss+, {@CO-}, {C-}], [{@A-}, Ds-, {@M+},
226
+ Ss+, R-], [{@A-}, Ds-, {@M+}, SIs-], [{@A-}, Ds-, {R+}, {Bs+}, J-], [{@A-}, Ds-,
227
+ {R+}, {Bs+}, Os-], [{@A-}, Ds-, {R+}, {Bs+}, Ss+, {@CO-}, {C-}], [{@A-}, Ds-,
228
+ {R+}, {Bs+}, Ss+, R-], [{@A-}, Ds-, {R+}, {Bs+}, SIs-]], @right=[], @suffix="",
229
+ @left=[#<LinkParser::Connection:0x403da028 @rword=#<LinkParser::Word:0x403da0a0
230
+ ...>, @lword=#<LinkParser::Word:0x403da0b4 @definition=[[Ss-, O+, {@MV+}], [Ss-,
231
+ B-, {@MV+}], [Ss-, P+], [Ss-, AF-], [RS-, Bs-, O+, {@MV+}], [RS-, Bs-, B-,
232
+ {@MV+}], [RS-, Bs-, P+], [RS-, Bs-, AF-], [{Q-}, SIs+, O+, {@MV+}], [{Q-}, SIs+,
233
+ B-, {@MV+}], [{Q-}, SIs+, P+], [{Q-}, SIs+, AF-]],
234
+ @right=[#<LinkParser::Connection:0x403da028 ...>], @suffix="", @left=[],
235
+ @name="is", @position=1>, @subName="*", @name="O", @length=3>], @name="dog",
236
+ @position=4>
237
+
238
+ # Combine WordNet + LinkParser to find the definition of the direct object of
239
+ # the sentence
240
+ "he is a big dog".en.sentence.object.gloss
241
+ # => "a member of the genus Canis (probably descended from the common wolf) that
242
+ has been domesticated by man since prehistoric times; occurs in many breeds;
243
+ \"the dog barked all night\""
244
+
245
+
data/TODO ADDED
@@ -0,0 +1,17 @@
1
+
2
+ = Linguistics Module To-Do List
3
+
4
+ * Add missing Lingua::EN::Inflect features:
5
+ * Number-insensitive Equality methods, e.g., +PL_eq()+, +PL_N_eq()+, etc.
6
+ * String iterpolation methods? This can already be done via things like +"The
7
+ #{'cat'.en.no(catCount)} in the hat."+, but it might be nice to have some
8
+ more convenient notation and an #interpolate method.
9
+ * User-defined inflections
10
+
11
+ * Ask the stemmable.rb authors if they'd let me put it into the en.rb module.
12
+
13
+ * Port more Perl modules:
14
+ * Lingua::Phonology?
15
+ * Others?
16
+
17
+
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/ruby
2
+
3
+ BEGIN {
4
+ $LOAD_PATH.unshift File::dirname(File::dirname( __FILE__ )) + "/lib"
5
+ require 'linguistics'
6
+ }
7
+
8
+ Linguistics::use( :en )
9
+
10
+ # Just a fun little demo of the conjunction (junction, what's your) function.
11
+
12
+ MinObjects = 5
13
+ MaxObjects = 35
14
+ Objects = %w[
15
+ butcher baker candlestick-maker
16
+ mouse clock
17
+ cat fiddle cow moon dog sport dish spoon
18
+ tisket tasket
19
+ jack jill hill pail crown
20
+ ]
21
+
22
+ def randobjlist
23
+ objs = []
24
+ 0.upto( rand(MaxObjects - MinObjects) + MinObjects ) do
25
+ objs << Objects[ rand(Objects.nitems) - 1 ]
26
+ end
27
+
28
+ return objs
29
+ end
30
+
31
+
32
+ puts "Random object list:\n\t" +
33
+ randobjlist().en.conjunction
34
+
data/install.rb ADDED
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Linguistics Module Install Script
4
+ # $Id: install.rb,v 1.3 2003/10/09 13:23:09 deveiant Exp $
5
+ #
6
+ # Thanks to Masatoshi SEKI for ideas found in his install.rb.
7
+ #
8
+ # Copyright (c) 2001-2004 The FaerieMUD Consortium.
9
+ #
10
+ # This is free software. You may use, modify, and/or redistribute this
11
+ # software under the terms of the Perl Artistic License. (See
12
+ # http://language.perl.com/misc/Artistic.html)
13
+ #
14
+
15
+ require './utils.rb'
16
+ include UtilityFunctions
17
+
18
+ require 'rbconfig'
19
+ include Config
20
+
21
+ require 'find'
22
+ require 'ftools'
23
+
24
+
25
+ $version = %q$Revision: 1.3 $
26
+ $rcsId = %q$Id: install.rb,v 1.3 2003/10/09 13:23:09 deveiant Exp $
27
+
28
+ # Define required libraries
29
+ RequiredLibraries = [
30
+ # libraryname, nice name, RAA URL, Download URL
31
+ # [ 'hashslice', "Ruby-Hashslice",
32
+ # 'http://www.ruby-lang.org/en/raa-list.rhtml?name=Ruby-HashSlice',
33
+ # 'http://www.devEiate.org/code/Ruby-HashSlice-1.03.tar.gz' ],
34
+ ]
35
+
36
+ class Installer
37
+
38
+ @@PrunePatterns = [
39
+ /CVS/,
40
+ /~$/,
41
+ %r:(^|/)\.:,
42
+ /\.tpl$/,
43
+ ]
44
+
45
+ def initialize( testing=false )
46
+ @ftools = (testing) ? self : File
47
+ end
48
+
49
+ ### Make the specified dirs (which can be a String or an Array of Strings)
50
+ ### with the specified mode.
51
+ def makedirs( dirs, mode=0755, verbose=false )
52
+ dirs = [ dirs ] unless dirs.is_a? Array
53
+
54
+ oldumask = File::umask
55
+ File::umask( 0777 - mode )
56
+
57
+ for dir in dirs
58
+ if @ftools == File
59
+ File::mkpath( dir, $verbose )
60
+ else
61
+ $stderr.puts "Make path %s with mode %o" % [ dir, mode ]
62
+ end
63
+ end
64
+
65
+ File::umask( oldumask )
66
+ end
67
+
68
+ def install( srcfile, dstfile, mode=nil, verbose=false )
69
+ dstfile = File.catname(srcfile, dstfile)
70
+ unless FileTest.exist? dstfile and File.cmp srcfile, dstfile
71
+ $stderr.puts " install #{srcfile} -> #{dstfile}"
72
+ else
73
+ $stderr.puts " skipping #{dstfile}: unchanged"
74
+ end
75
+ end
76
+
77
+ public
78
+
79
+ def installFiles( src, dstDir, mode=0444, verbose=false )
80
+ directories = []
81
+ files = []
82
+
83
+ if File.directory?( src )
84
+ Find.find( src ) {|f|
85
+ Find.prune if @@PrunePatterns.find {|pat| f =~ pat}
86
+ next if f == src
87
+
88
+ if FileTest.directory?( f )
89
+ directories << f.gsub( /^#{src}#{File::Separator}/, '' )
90
+ next
91
+
92
+ elsif FileTest.file?( f )
93
+ files << f.gsub( /^#{src}#{File::Separator}/, '' )
94
+
95
+ else
96
+ Find.prune
97
+ end
98
+ }
99
+ else
100
+ files << File.basename( src )
101
+ src = File.dirname( src )
102
+ end
103
+
104
+ dirs = [ dstDir ]
105
+ dirs |= directories.collect {|d| File.join(dstDir,d)}
106
+ makedirs( dirs, 0755, verbose )
107
+ files.each {|f|
108
+ srcfile = File.join(src,f)
109
+ dstfile = File.dirname(File.join( dstDir,f ))
110
+
111
+ if verbose
112
+ if mode
113
+ $stderr.puts "Install #{srcfile} -> #{dstfile} (mode %o)" % mode
114
+ else
115
+ $stderr.puts "Install #{srcfile} -> #{dstfile}"
116
+ end
117
+ end
118
+
119
+ @ftools.install( srcfile, dstfile, mode, verbose )
120
+ }
121
+ end
122
+
123
+ end
124
+
125
+ if $0 == __FILE__
126
+ header "Linguistics Installer #$version"
127
+
128
+ for lib in RequiredLibraries
129
+ testForRequiredLibrary( *lib )
130
+ end
131
+
132
+ viewOnly = ARGV.include? '-n'
133
+ verbose = ARGV.include? '-v'
134
+
135
+ # "Compatibility" with Aoki-san's install.rb
136
+ if ARGV.include?( 'config' ) || ARGV.include?( 'setup' )
137
+ print "Ok."
138
+ exit
139
+ end
140
+
141
+ debugMsg "Sitelibdir = '#{CONFIG['sitelibdir']}'"
142
+ sitelibdir = CONFIG['sitelibdir']
143
+ debugMsg "Sitearchdir = '#{CONFIG['sitearchdir']}'"
144
+ sitearchdir = CONFIG['sitearchdir']
145
+
146
+ message "Installing\n"
147
+ i = Installer.new( viewOnly )
148
+ i.installFiles( "redist", sitelibdir, 0444, verbose )
149
+ i.installFiles( "lib", sitelibdir, 0444, verbose )
150
+ end
151
+
152
+
153
+
154
+