dylansm-wirble 0.1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (9) hide show
  1. data/COPYING +20 -0
  2. data/ChangeLog +29 -0
  3. data/README +452 -0
  4. data/Rakefile +115 -0
  5. data/_irbrc +27 -0
  6. data/dylansm-wirble.gemspec +40 -0
  7. data/lib/wirble.rb +536 -0
  8. data/setup.rb +1596 -0
  9. metadata +70 -0
data/COPYING ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (C) 2006-2009 Paul Duncan <pabs@pablotron.org>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a
4
+ copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included
12
+ in all copies or substantial portions of the of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ DEALINGS IN THE SOFTWARE.
data/ChangeLog ADDED
@@ -0,0 +1,29 @@
1
+
2
+ * Wed Sep 06 00:01:21 2006, pabs <pabs@pablotron.org>
3
+ * initial import
4
+
5
+ * Wed Sep 06 00:10:13 2006, pabs <pabs@pablotron.org>
6
+ * wirble.rb: remove symbol hackery to prevent
7
+ ri/rdoc from barfing
8
+
9
+ * Wed Sep 6 02:49:02 EDT 2006, Paul Duncan <pabs@pablotron.org>
10
+ * wirble.rb: fix typo
11
+ * re-release 0.1.0
12
+
13
+ * Fri Sep 8 04:01:40 EDT 2006, Paul Duncan <pabs@pablotron.org>
14
+ * README: updated version to 0.1.1
15
+ * wirble.gemspec: ditto
16
+ * wirble.rb: ditto
17
+ * wirble.rb: wrap colorize in an exception (just in case)
18
+
19
+ * Fri Sep 08 13:11:05 2006, pabs <pabs@pablotron.org>
20
+ * increment version to 0.1.2
21
+ * wirble.gemspec: remove rubilicious dependency
22
+
23
+ * Fri Sep 8 13:17:29 EDT 2006, Paul Duncan <pabs@pablotron.org>
24
+ * README: increment version to 0.1.2
25
+ * wirble.gemspec: ditto
26
+ * wirble.rb: ditto
27
+
28
+ * Fri Sep 08 13:18:15 2006, pabs <pabs@pablotron.org>
29
+ * releasing 0.1.2
data/README ADDED
@@ -0,0 +1,452 @@
1
+ Wirble 0.1.3 README
2
+ ===================
3
+
4
+ This document was last updated on 2009-05-30. See the file COPYING for
5
+ licensing and warranty information. The latest version of this software
6
+ is available at the following URL:
7
+
8
+ http://pablotron.org/software/wirble/
9
+
10
+ Table of Contents
11
+ =================
12
+ * Introduction to Wirble
13
+ * Installing Wirble
14
+ o Via RubyGems
15
+ o Via a Tarball
16
+ o As a User
17
+ * Using Wirble
18
+ o Editing Your ~/.irbrc
19
+ o Enabling Color
20
+ * Configuring Wirble
21
+ * Color Settings
22
+ o Color Keys
23
+ o Color Values
24
+ o Default Color Map
25
+ * Frequently Asked Questions (FAQ)
26
+ * Reporting Bugs
27
+ * About the Author
28
+
29
+
30
+ Introduction to Wirble
31
+ ======================
32
+ Wirble is a set of enhancements to Irb all included together in one
33
+ easy-to-use package. Specifically, Wirble adds a saved history, a
34
+ couple of useful shortcuts, and color to Irb. Wirble also enables a
35
+ Irb's built-in tab-completion and a simpler prompt.
36
+
37
+ Before we begin, I should mention that several of Wirble's features were
38
+ shamelessly inspired (read: borrowed with extreme prejudice) from the
39
+ "Irb Tips and Tricks" page of the Ruby Garden Wiki, which you can find
40
+ at the following URL:
41
+
42
+ http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks
43
+
44
+ In particular, the Irb history and ri features bear a striking
45
+ resemblence to their Ruby Garden counterparts.
46
+
47
+
48
+ Installing Wirble
49
+ =================
50
+ The easiest way to install Wirble is via RubyGems
51
+ (http://rubygems.org/). If you've already got RubyGems installed,
52
+ simply do the following, then skip to the "Using Wirble" section below:
53
+
54
+ # install wirble via RubyGems
55
+ sudo gem install wirble
56
+
57
+ If you don't have RubyGems, you can also install the Wirble using
58
+ setup.rb:
59
+
60
+ # install wirble using setup.rb
61
+ ruby ./setup.rb config && ruby ./setup.rb setup
62
+ sudo ruby ./setup.rb install
63
+
64
+ Or, install Wirble by hand using sudo:
65
+
66
+ # install wirble to library directory
67
+ sudo cp -v wirble.rb $(ruby -e 'puts $LOAD_PATH[0]')
68
+
69
+ Or, if you don't use sudo, you can do the same thing with su, like so:
70
+
71
+ # install wirble to library directory
72
+ su -c "cp -v wirble.rb $(ruby -e 'puts $LOAD_PATH[0]')"
73
+
74
+ Finally, if you don't have an administrator account, you can still
75
+ install Wirble in your local home directory like so:
76
+
77
+ # create local ruby library directory
78
+ mkdir ~/.ruby && chmod 700 ~/.ruby
79
+ cp -v wirble.rb ~/.ruby
80
+
81
+ Then add the following line at the _top_ of your ~/.irbrc file:
82
+
83
+ # add ~/.ruby to the library search path
84
+ $LOAD_PATH << File.expand_path('~/.ruby')
85
+
86
+
87
+ Using Wirble
88
+ ============
89
+ A sample ~/.irbrc is available in the file "_irbrc". If you just want
90
+ to get Wirble up quickly, copy that to your home directory and be done
91
+ with it. Otherwise. read on:
92
+
93
+ Using Wirble is easy: just add the following lines to your ~/.irbrc
94
+ file:
95
+
96
+ begin
97
+ require 'wirble'
98
+
99
+ # init wirble
100
+ Wirble.init
101
+ rescue LoadError => err
102
+ $stderr.puts "Couldn't load Wirble: #{err}"
103
+ end
104
+
105
+ A lot of people really don't like colors, so I've kept the color
106
+ disabled by default. To enable it, add the following bit to your
107
+ ~/.irbrc file immediately after the call to "Wirble.init":
108
+
109
+ # enable color
110
+ Wirble.colorize
111
+
112
+ If you want to terrify your grandmother and impress your buddies, your
113
+ entire ~/.irbrc can also be written like so:
114
+
115
+ %w{rubygems wirble}.each do |lib|
116
+ begin
117
+ require lib
118
+ rescue LoadError => err
119
+ $stderr.puts "Couldn't load #{lib}: #{err}"
120
+ end
121
+ end
122
+
123
+ %w{init colorize}.each { |str| Wirble.send(str) }
124
+
125
+ Configuring Wirble
126
+ ==================
127
+ You can pass a hash of options to Wirble.init in order to adjust the
128
+ behavior of Wirble. Here's a full list of options and a brief
129
+ description of each one:
130
+
131
+ * :skip_internals
132
+
133
+ Don't load the internal Irb features. Equivalent to setting both
134
+ :skip_libraries and :skip_prompt (see below).
135
+
136
+ * :skip_libraries
137
+
138
+ Don't load any libraries. At the moment, Wirble attempts to load
139
+ the following libraries: "pp", "irb/completion", and "rubygems".
140
+
141
+ * :skip_prompt
142
+
143
+ Down't load the simple prompt. Shouldn't ever be necessary, but
144
+ I've included it for the sake of completeness. Wirble's default
145
+ behavior is to the prompt setting before making any changes. If the
146
+ prompt is anything other than :DEFAULT, Wirble won't override it.
147
+
148
+ * :skip_history
149
+
150
+ Don't load the Irb history. There are a few additional history
151
+ options as well; see :history_path, :history_size, and
152
+ :history_perms below.
153
+
154
+ * :history_path
155
+
156
+ Set the path to the Irb history file. Defaults to "~/.irb_history".
157
+ If an environment variable named IRB_HISTORY_FILE is set, Wirble
158
+ will use that instead of the default value.
159
+
160
+ * :history_size
161
+
162
+ Set the size (in lines) of the Irb history file. Defaults to 1000
163
+ lines. If an environment variable named IRB_HISTORY_SIZE is set,
164
+ Wirble will use that instead of the default value.
165
+
166
+ * :history_perms
167
+
168
+ Set the permissions of the Irb history file. Defaults to
169
+ File::WRONLY.
170
+
171
+ * :skip_shortcuts
172
+
173
+ Don't load any shortcut methods. at the moment there are three
174
+ shortcut methods: "ri", "po", and "poc". The first calls the "ri"
175
+ command on the specified value -- you"ll need to use proper quoting
176
+ to pass the name properly. As for "po" and "poc": the former lists
177
+ an object's instance methods (excluding methods that belong to
178
+ Object), sorted by name, and the latter lists an object's constants,
179
+ sorted by name.
180
+
181
+ * :init_colors
182
+
183
+ Enable colors. Equivalent to calling Wirble.colorize directly.
184
+
185
+ * :colors
186
+
187
+ A hash of colors. Only makes sense in conjunction with the
188
+ :init_colors option. See below for additional information on
189
+ customizing color settings.
190
+
191
+ Here's an example of passing a list of options to Wirble.init():
192
+
193
+ wirble_opts = {
194
+ # skip shortcuts
195
+ :skip_shortcuts => true,
196
+
197
+ # don't set the prompt
198
+ :skip_prompt => true,
199
+
200
+ # override some of the default colors
201
+ :colors => {
202
+ :open_hash => :green.
203
+ :close_hash => :green.
204
+ :string => :blue,
205
+ },
206
+
207
+ # enable color
208
+ :init_color => true,
209
+ }
210
+
211
+ # initialize wirble with options above
212
+ Wirble.init(wirble_opts)
213
+
214
+ For a full description of the color options, see the next section.
215
+
216
+
217
+ Color Settings
218
+ ==============
219
+ You can set colors in Wirble by passing a hash of color options via
220
+ Wirble.init (see the :color option for Wirble.init above), or by setting
221
+ Wirble::Colorize.color directly. For example:
222
+
223
+ # get the default colors and add in your own
224
+ colors = Wirble::Colorize.colors.merge({
225
+ # set the comma color to blue
226
+ :comma => :blue,
227
+ })
228
+
229
+ # set the colors used by Wirble
230
+ Wirble::Colorize.colors = colors
231
+
232
+ Below is a list of all the recognized color keys.
233
+
234
+ * :comma (',')
235
+
236
+ A comma character. The element delimiter in arrays and hashes.
237
+
238
+ * :refers ('=>')
239
+
240
+ The hash reference operator. The key/value delimiter in hashes.
241
+
242
+ * :open_hash ('{')
243
+
244
+ The opening curly brace for a hash.
245
+
246
+ * :close_hash ('}')
247
+
248
+ The opening curly brace for a hash.
249
+
250
+ * :open_array ('[')
251
+
252
+ The opening brace for a array.
253
+
254
+ * :close_array (']')
255
+
256
+ The opening brace for a array.
257
+
258
+ * :open_object ('#<')
259
+
260
+ The opening delimiter for an object.
261
+
262
+ * :close_object ('>')
263
+
264
+ The closing delimiter for an object inspection.
265
+
266
+ * :object_class
267
+
268
+ The class attribute of an object inspection. For example, in the
269
+ string "#<Proc:0xb7be4968@(irb):8>", the string "Proc" is the class
270
+ attribute.
271
+
272
+ * :object_addr_prefix (':')
273
+
274
+ The colon prefixing the address attribute of an object inspection.
275
+ For example, in the string "#<Proc:0xb7be4968@(irb):8>", the string
276
+ "0xb7be4968" is the memory address attribute, so the ':' is the
277
+ address prefix.
278
+
279
+ * :object_addr
280
+
281
+ The memory address attribute of an object inspection. For example,
282
+ in the string "#<Proc:0xb7be4968@(irb):8>", the string "0xb7be4968"
283
+ is the memory address attribute.
284
+
285
+ * :object_addr_prefix ('@')
286
+
287
+ The at symbol prefixing the line attribute of an object inspection.
288
+ For example, in the string "#<Proc:0xb7be4968@(irb):8>", the string
289
+ "(irb):8" is the line attribute, so the '@' is the line attribute
290
+ prefix.
291
+
292
+ * :object_line
293
+
294
+ The line number attribute of an object inspection. For example,
295
+ in the string "#<Proc:0xb7be4968@(irb):8>", the string "(irb):8"
296
+ is the line number attribute.
297
+
298
+ * :symbol_prefix (':')
299
+
300
+ The colon prefix for a symbol object.
301
+
302
+ * :symbol
303
+
304
+ The string of a symbol object.
305
+
306
+ * :open_string ('"')
307
+
308
+ The opening quote of a string object.
309
+
310
+ * :close_string ('"')
311
+
312
+ The closing quote of a string object.
313
+
314
+ * :number
315
+
316
+ A number (integer or float).
317
+
318
+ * :range ('..')
319
+
320
+ The delimeter of a range object.
321
+
322
+ * :keyword
323
+
324
+ A built-in Ruby keyword. This includes values like "true", "false",
325
+ and "nil".
326
+
327
+ * :class
328
+
329
+ A class. This includes strings like "Class" and "Object".
330
+
331
+ * :whitespace
332
+
333
+ Whitespace character (i.e. space, newline, tab, etc).
334
+
335
+ The highlighting is implemented with a simple hand-rolled state-based
336
+ tokenizer (wow, that was a mouthful). This should be adequate most of
337
+ the time, but since it's not a actual LALR parser, Wirble can get
338
+ confused in a few specific instances. If you find a serious
339
+ highlighting problem, please let me know. Oh yeah, before I forget,
340
+ here's a list of the valid color codes:
341
+
342
+ :nothing :green :light_purple
343
+ :black :light_blue :purple
344
+ :blue :light_cyan :red
345
+ :brown :light_gray :white
346
+ :cyan :light_green :yellow
347
+ :dark_gray :light_red
348
+
349
+ Note that I'm not a designer, and I also use a terminal with a dark
350
+ background. I've also been accused of having a Vim color scheme that
351
+ looks like "a beat up clown". With those caveats in mind, here's the
352
+ default color scheme for Wirble:
353
+
354
+ #
355
+ # Default Wirble color scheme.
356
+ #
357
+ DEFAULT_COLORS = {
358
+ # delimiter colors
359
+ :comma => :blue,
360
+ :refers => :blue,
361
+
362
+ # container colors (hash and array)
363
+ :open_hash => :green,
364
+ :close_hash => :green,
365
+ :open_array => :green,
366
+ :close_array => :green,
367
+
368
+ # object colors
369
+ :open_object => :light_red,
370
+ :object_class => :white,
371
+ :object_addr_prefix => :blue,
372
+ :object_line_prefix => :blue,
373
+ :close_object => :light_red,
374
+
375
+ # symbol colors
376
+ :symbol => :yellow,
377
+ :symbol_prefix => :yellow,
378
+
379
+ # string colors
380
+ :open_string => :red,
381
+ :string => :cyan,
382
+ :close_string => :red,
383
+
384
+ # misc colors
385
+ :number => :cyan,
386
+ :keyword => :green,
387
+ :class => :light_green,
388
+ :range => :red,
389
+ }
390
+
391
+ This map is also available via programmatically via
392
+ Wirble::Colorize::DEFAULT_COLORS.
393
+
394
+
395
+ Frequently Asked Questions (FAQ)
396
+ ================================
397
+ Q. Where did the name come from?
398
+ A. Beats me. It's the only thing I could find in the dictionary, and
399
+ the only name I came up with that I could pronounce.
400
+
401
+ Q. How do I use color in my Irb prompts?
402
+ A. You can use standard color escape codes in the format string used by
403
+ Irb. For example, to set the user prompt to cyan, you could do
404
+ something like this:
405
+
406
+ ctx = IRB.CurrentContext
407
+ ctx.prompt_i = Wirble::Colorize.colorize_string(ctx.prompt_i, :cyan)
408
+
409
+ Q. How can I do syntax highlighting as I type?
410
+ A. I don't know. If there is an answer, I suspect it's not very
411
+ portable and probably requires some modification to Irb. There's a
412
+ sneaky hack called eval.rb that seems to do a little bit of
413
+ highlight, but it doesn't use Irb, and it doesn't really do what
414
+ you're asking. That said, you can find it here:
415
+
416
+ http://www.rubyist.net/~slagell/ruby/eval.txt
417
+
418
+ Incidentally, part of the problem is that there's no real easy way
419
+ to do the following:
420
+
421
+ 1. Access to the token stream or parser state incrementally.
422
+ 2. Process partial strings in readline.
423
+
424
+ A bit more about #1: both Irb and the internal Ruby lexer kind of
425
+ muddle the traditionally separate concepts of lexer and parser, so
426
+ it's difficult to, say, parse a string into components and do syntax
427
+ highlighting on them. Vim and Emacs both handle this with sneaky
428
+ regular expressions, and a simple Ruby parser, respectively. Wirble
429
+ and Irb both roll their own (albeit limited) Ruby lexers.
430
+
431
+
432
+ Reporting Bugs
433
+ ==============
434
+ Have a bug to report or a feature you'd like me to add to Wirble?
435
+ Feel free to email me at the address below. Alternatively, you can
436
+ submit your feature request or bug directly to my bug-tracking web
437
+ interface at the following URL:
438
+
439
+ http://redmine.pablotron.org/projects/show/wirble
440
+
441
+ Note: you'll need to create an account in order to submit a feature
442
+ request or a bug report via the web interface. Also, I'm a busy guy! I
443
+ make every effort to respond quickly to bug reports, but detailed
444
+ descriptions and or patches really do make my life a whole lot easier.
445
+
446
+
447
+ About the Author
448
+ ================
449
+ Paul Duncan <pabs@pablotron.org>
450
+ http://pablotron.org/
451
+
452
+ And of course, all the fine folks from the Ruby Garden Wiki. :)
data/Rakefile ADDED
@@ -0,0 +1,115 @@
1
+
2
+ # load libraries
3
+
4
+ require 'rake/rdoctask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'lib/wirble.rb'
8
+
9
+ def package_info
10
+ require 'ostruct'
11
+ require 'rubygems'
12
+
13
+ # create package
14
+ ret = OpenStruct.new
15
+
16
+ # set package information
17
+ ret.name = 'Wirble'
18
+ ret.blurb = 'Handful of common Irb features, made easy.'
19
+ ret.description = <<-EOF
20
+ A handful of useful Irb features, including colorized results,
21
+ tab-completion, history, a simple prompt, and several helper
22
+ methods, all rolled into one easy to use package.
23
+ EOF
24
+ ret.version = Wirble::VERSION
25
+ ret.platform = Gem::Platform::RUBY
26
+ ret.url = 'http://pablotron.org/software/wirble/'
27
+
28
+ # author information
29
+ ret.author_name = 'Paul Duncan'
30
+ ret.author_email = 'pabs@pablotron.org'
31
+
32
+ # requirements and files
33
+ ret.reqs = ['none']
34
+ ret.include_files = Dir['**/*'].delete_if { |path|
35
+ %w{CVS .svn .hg}.any? { |chunk| path.include?(chunk) }
36
+ }
37
+
38
+ # rdoc info
39
+ ret.rdoc_title = "#{ret.name} #{ret.version} API Documentation"
40
+ ret.rdoc_options = %w{--webcvs http://hg.pablotron.org/wirble}
41
+ ret.rdoc_dir = 'doc'
42
+ ret.rdoc_files = %w{lib/**/*.rb README}
43
+
44
+ # runtime info
45
+ ret.auto_require = 'wirble'
46
+ ret.require_path = 'lib'
47
+ ret.package_name = 'wirble'
48
+
49
+ # package release dir
50
+ if path = ENV['RAKE_PACKAGE_DIR']
51
+ ret.pkg_dir = File.join(File.expand_path(path), ret.package_name)
52
+ end
53
+
54
+ if files = ret.rdoc_files
55
+ ret.rdoc_files = files.map { |e| Dir.glob(e) }.flatten.compact
56
+ end
57
+
58
+ # return package
59
+ ret
60
+ end
61
+
62
+ pkg = package_info
63
+
64
+ gem_spec = Gem::Specification.new do |s|
65
+ # package information
66
+ s.name = 'dylansm-' + pkg.name.downcase
67
+ s.platform = pkg.platform
68
+ s.version = pkg.version
69
+ s.summary = s.description = pkg.blurb
70
+ s.rubyforge_project = 'pablotron'
71
+
72
+ # files
73
+ pkg.reqs.each { |req| s.requirements << req }
74
+ s.files = pkg.include_files
75
+
76
+ # runtime info
77
+ s.executables = pkg.executables
78
+ s.require_path = pkg.require_path
79
+ s.autorequire = pkg.auto_require
80
+
81
+ # dependencies
82
+ # pkg.dependencies.each { |dep| s.add_dependency(dep) }
83
+
84
+ # rdoc info
85
+ s.has_rdoc = true
86
+ s.rdoc_options = ['--title', pkg.rdoc_title] + pkg.rdoc_options + pkg.rdoc_files
87
+
88
+ # author and project details
89
+ s.author = pkg.author_name
90
+ s.email = pkg.author_email
91
+ s.homepage = pkg.url
92
+
93
+ # gem crypto stuff
94
+ if pkg.signing_key && pkg.signing_chain
95
+ s.signing_key = pkg.signing_key
96
+ s.signing_chain = pkg.signing_chain
97
+ end
98
+ end
99
+
100
+ Rake::GemPackageTask.new(gem_spec) do |p|
101
+ p.need_tar_gz = true
102
+ # p.need_pgp_signature = true
103
+ p.package_dir = pkg.pkg_dir if pkg.pkg_dir
104
+ end
105
+
106
+
107
+ Rake::RDocTask.new do |rd|
108
+ rd.title = pkg.rdoc_title
109
+ rd.rdoc_dir = pkg.rdoc_dir
110
+ rd.rdoc_files.include(*pkg.rdoc_files)
111
+ rd.options.concat(pkg.rdoc_options)
112
+ end
113
+
114
+ task :clean => [:clobber]
115
+ task :release => [:clean, :package]
data/_irbrc ADDED
@@ -0,0 +1,27 @@
1
+ ######################################################################
2
+ # _irbrc - Sample .irbrc file to enable Wirble. #
3
+ ######################################################################
4
+
5
+ #
6
+ # Uncomment the block below if you want to load RubyGems in Irb.
7
+ #
8
+
9
+ # begin
10
+ # require 'rubygems'
11
+ # rescue LoadError => err
12
+ # warn "Couldn't load RubyGems: #{err}"
13
+ # end
14
+
15
+ begin
16
+ # load and initialize wirble
17
+ require 'wirble'
18
+ Wirble.init
19
+
20
+ #
21
+ # Uncomment the line below to enable Wirble colors.
22
+ #
23
+
24
+ # Wirble.colorize
25
+ rescue LoadError => err
26
+ warn "Couldn't load Wirble: #{err}"
27
+ end
@@ -0,0 +1,40 @@
1
+ require 'rubygems'
2
+
3
+ spec = Gem::Specification.new do |s|
4
+
5
+ #### Basic information.
6
+
7
+ s.name = 'dylansm-wirble'
8
+ s.version = '0.1.3.1'
9
+ s.summary = <<-EOF
10
+ Handful of common Irb features, made easy.
11
+ EOF
12
+ s.description = <<-EOF
13
+ A handful of useful Irb features, including colorized results,
14
+ tab-completion, history, a simple prompt, and several helper
15
+ methods, all rolled into one easy to use package.
16
+ EOF
17
+
18
+ s.requirements << 'Ruby, version 1.8.0 (or newer)'
19
+
20
+ # Which files are to be included in this gem? Everything! (Except .hg directories.)
21
+ s.files = Dir.glob("**/*").delete_if { |item| item.include?(".hg") }
22
+
23
+ # C code extensions.
24
+
25
+ s.require_path = '.' # is this correct?
26
+
27
+ # Load-time details: library and application (you will need one or both).
28
+ s.autorequire = 'wirble'
29
+ s.has_rdoc = true
30
+ s.rdoc_options = ['--webcvs',
31
+ 'http://hg.pablotron.org/wirble', '--title',
32
+ 'Wirble API Documentation', 'wirble.rb', 'README', 'ChangeLog',
33
+ 'COPYING']
34
+
35
+ # Author and project details.
36
+ s.author = 'Paul Duncan'
37
+ s.email = 'pabs@pablotron.org'
38
+ s.homepage = 'http://pablotron.org/software/wirble/'
39
+ s.rubyforge_project = 'wirble'
40
+ end