Class RDoc::Options
In: options.rb
doc-tmp/rdoc/options.rb
Parent: Object

Methods

Public Instance methods

Check that the right version of ‘dot’ is available. Unfortunately this doesn‘t work correctly under Windows NT, so we‘ll bypass the test under Windows.

[Source]

     # File options.rb, line 645
645:   def check_diagram
646:     return if RUBY_PLATFORM =~ /mswin|cygwin|mingw|bccwin/
647: 
648:     ok = false
649:     ver = nil
650: 
651:     IO.popen "dot -V 2>&1" do |io|
652:       ver = io.read
653:       if ver =~ /dot.+version(?:\s+gviz)?\s+(\d+)\.(\d+)/ then
654:         ok = ($1.to_i > 1) || ($1.to_i == 1 && $2.to_i >= 8)
655:       end
656:     end
657: 
658:     unless ok then
659:       if ver =~ /^dot.+version/ then
660:         $stderr.puts "Warning: You may need dot V1.8.6 or later to use\n",
661:           "the --diagram option correctly. You have:\n\n   ",
662:           ver,
663:           "\nDiagrams might have strange background colors.\n\n"
664:       else
665:         $stderr.puts "You need the 'dot' program to produce diagrams.",
666:           "(see http://www.research.att.com/sw/tools/graphviz/)\n\n"
667:         exit
668:       end
669:     end
670:   end

Check that the right version of ‘dot’ is available. Unfortunately this doesn‘t work correctly under Windows NT, so we‘ll bypass the test under Windows.

[Source]

     # File doc-tmp/rdoc/options.rb, line 645
645:   def check_diagram
646:     return if RUBY_PLATFORM =~ /mswin|cygwin|mingw|bccwin/
647: 
648:     ok = false
649:     ver = nil
650: 
651:     IO.popen "dot -V 2>&1" do |io|
652:       ver = io.read
653:       if ver =~ /dot.+version(?:\s+gviz)?\s+(\d+)\.(\d+)/ then
654:         ok = ($1.to_i > 1) || ($1.to_i == 1 && $2.to_i >= 8)
655:       end
656:     end
657: 
658:     unless ok then
659:       if ver =~ /^dot.+version/ then
660:         $stderr.puts "Warning: You may need dot V1.8.6 or later to use\n",
661:           "the --diagram option correctly. You have:\n\n   ",
662:           ver,
663:           "\nDiagrams might have strange background colors.\n\n"
664:       else
665:         $stderr.puts "You need the 'dot' program to produce diagrams.",
666:           "(see http://www.research.att.com/sw/tools/graphviz/)\n\n"
667:         exit
668:       end
669:     end
670:   end

Check that the files on the command line exist

[Source]

     # File options.rb, line 741
741:   def check_files
742:     @files.each do |f|
743:       stat = File.stat f
744:       raise RDoc::Error, "file '#{f}' not readable" unless stat.readable?
745:     end
746:   end

Check that the files on the command line exist

[Source]

     # File doc-tmp/rdoc/options.rb, line 741
741:   def check_files
742:     @files.each do |f|
743:       stat = File.stat f
744:       raise RDoc::Error, "file '#{f}' not readable" unless stat.readable?
745:     end
746:   end

Check that the right version of ‘mathml.rb’ is available.

[Source]

     # File options.rb, line 675
675:   def check_mathml
676:     not_found = true
677:     fpath = ""
678:     $LOAD_PATH.each{ |lpath|
679:       ["mathml.rb", "math_ml.rb"].each { |ml|
680:         fpath = File.join(lpath, ml)
681:         if File.exist?(fpath)
682:           not_found = false
683:           break
684:         end
685:       }
686:       break unless not_found
687:     }
688: 
689:     if not_found
690:       $stderr.puts "You need the 'mathml.rb' to convert TeX to MathML.\n(see http://www.hinet.mydns.jp/~hiraku/hiki/, but only JAPANESE.\nYou can download 'mathml.rb' directly from\nhttp://www.hinet.mydns.jp/files/math_ml-0.8.0.tar.gz)\n\n"
691:       exit
692:     end
693: 
694:     contents = File.open(fpath, "r") {|f| f.read}
695:     num = 1
696:     if !(contents =~ /^\s*module\s+MathML/) ||
697:         !(contents =~ /^\s*module\s+LaTeX/) ||
698:         !(contents =~ /^\s*class\s+Parser/) ||
699:         !(contents =~ /^\s*def\s+parse/)
700:       $stderr.puts "You need the 'mathml.rb' V0.8 or later to use.\n(see http://www.hinet.mydns.jp/~hiraku/hiki/, but only JAPANESE.\nYou can download 'mathml.rb' directly from\nhttp://www.hinet.mydns.jp/files/math_ml-0.8.0.tar.gz)\n\n"
701: 
702:       exit
703:     end
704:   end

Check that the right version of ‘mathml.rb’ is available.

[Source]

     # File doc-tmp/rdoc/options.rb, line 675
675:   def check_mathml
676:     not_found = true
677:     fpath = ""
678:     $LOAD_PATH.each{ |lpath|
679:       ["mathml.rb", "math_ml.rb"].each { |ml|
680:         fpath = File.join(lpath, ml)
681:         if File.exist?(fpath)
682:           not_found = false
683:           break
684:         end
685:       }
686:       break unless not_found
687:     }
688: 
689:     if not_found
690:       $stderr.puts "You need the 'mathml.rb' to convert TeX to MathML.\n(see http://www.hinet.mydns.jp/~hiraku/hiki/, but only JAPANESE.\nYou can download 'mathml.rb' directly from\nhttp://www.hinet.mydns.jp/files/math_ml-0.8.0.tar.gz)\n\n"
691:       exit
692:     end
693: 
694:     contents = File.open(fpath, "r") {|f| f.read}
695:     num = 1
696:     if !(contents =~ /^\s*module\s+MathML/) ||
697:         !(contents =~ /^\s*module\s+LaTeX/) ||
698:         !(contents =~ /^\s*class\s+Parser/) ||
699:         !(contents =~ /^\s*def\s+parse/)
700:       $stderr.puts "You need the 'mathml.rb' V0.8 or later to use.\n(see http://www.hinet.mydns.jp/~hiraku/hiki/, but only JAPANESE.\nYou can download 'mathml.rb' directly from\nhttp://www.hinet.mydns.jp/files/math_ml-0.8.0.tar.gz)\n\n"
701: 
702:       exit
703:     end
704:   end

Parse command line options.

[Source]

     # File doc-tmp/rdoc/options.rb, line 205
205:   def parse(argv)
206:     accessors = []
207: 
208:     opts = OptionParser.new do |opt|
209:       opt.program_name = File.basename $0
210:       opt.version = RDoc::VERSION
211:       opt.release = nil
212:       opt.summary_indent = ' ' * 4
213:       opt.banner = "Usage: \#{opt.program_name} [options] [names...]\n\nFiles are parsed, and the information they contain collected, before any\noutput is produced. This allows cross references between all files to be\nresolved. If a name is a directory, it is traversed. If no names are\nspecified, all Ruby files in the current directory (and subdirectories) are\nprocessed.\n\nHow RDoc generates output depends on the output formatter being used, and on\nthe options you give.\n\n- HTML output is normally produced into a number of separate files\n(one per class, module, and file, along with various indices).\nThese files will appear in the directory given by the --op\noption (doc/ by default).\n\n- XHTML output is the same as HTML.\n\n- XML output by default is written to standard output. If a\n--opname option is given, the output will instead be written\nto a file with that name in the output directory.\n\n- .chm files (Windows help files) are written in the --op directory.\nIf an --opname parameter is present, that name is used, otherwise\nthe file will be called rdoc.chm.\n"
214: 
215: #      opt.separator nil  # 1.8.2 doesn't work
216:       opt.separator "Options:"
217: #      opt.separator nil  # 1.8.2 doesn't work
218: 
219:       opt.on("--accessor=ACCESSORS", "-A", Array,
220:              "A comma separated list of additional class",
221:              "methods that should be treated like",
222:              "'attr_reader' and friends.",
223:              " ",
224:              "Option may be repeated.",
225:              " ",
226:              "Each accessorname may have '=text'",
227:              "appended, in which case that text appears",
228:              "where the r/w/rw appears for normal.",
229:              "accessors") do |value|
230:         value.each do |accessor|
231:           if accessor =~ /^(\w+)(=(.*))?$/
232:             accessors << $1
233:             @extra_accessor_flags[$1] = $3
234:           end
235:         end
236:       end
237: 
238: #      opt.separator nil  # 1.8.2 doesn't work
239: 
240:       opt.on("--all", "-a",
241:              "Include all methods (not just public) in",
242:              "the output.") do |value|
243:         @show_all = value
244:       end
245: 
246: #      opt.separator nil  # 1.8.2 doesn't work
247: 
248:       opt.on("--charset=CHARSET", "-c",
249:              "Specifies the output HTML character-set.") do |value|
250:         @charset = value
251:       end
252: 
253: #      opt.separator nil  # 1.8.2 doesn't work
254: 
255:       opt.on("--debug", "-D",
256:              "Displays lots on internal stuff.") do |value|
257:         $DEBUG_RDOC = value
258:       end
259: 
260: #      opt.separator nil  # 1.8.2 doesn't work
261: 
262:       opt.on("--diagram", "-d",
263:              "Generate diagrams showing modules and",
264:              "classes. You need dot V1.8.6 or later to",
265:              "use the --diagram option correctly. Dot is",
266:              "available from http://graphviz.org") do |value|
267:         check_diagram
268:         @diagram = true
269:       end
270: 
271: #      opt.separator nil  # 1.8.2 doesn't work
272: 
273:       opt.on("--exclude=PATTERN", "-x", Regexp,
274:              "Do not process files or directories",
275:              "matching PATTERN.") do |value|
276:         @exclude << value
277:       end
278: 
279: #      opt.separator nil  # 1.8.2 doesn't work
280: 
281:       opt.on("--extension=NEW=OLD", "-E",
282:              "Treat files ending with .new as if they",
283:              "ended with .old. Using '-E cgi=rb' will",
284:              "cause xxx.cgi to be parsed as a Ruby file.") do |value|
285:         new, old = value.split(/=/, 2)
286: 
287:         unless new and old then
288:           raise OptionParser::InvalidArgument, "Invalid parameter to '-E'"
289:         end
290: 
291:         unless RDoc::ParserFactory.alias_extension old, new then
292:           raise OptionParser::InvalidArgument, "Unknown extension .#{old} to -E"
293:         end
294:       end
295: 
296: #      opt.separator nil  # 1.8.2 doesn't work
297: 
298:       opt.on("--fileboxes", "-F",
299:              "Classes are put in boxes which represents",
300:              "files, where these classes reside. Classes",
301:              "shared between more than one file are",
302:              "shown with list of files that are sharing",
303:              "them. Silently discarded if --diagram is",
304:              "not given.") do |value|
305:         @fileboxes = value
306:       end
307: 
308: #      opt.separator nil  # 1.8.2 doesn't work
309: 
310:       opt.on("--force-update", "-U",
311:              "Forces rdoc to scan all sources even if",
312:              "newer than the flag file.") do |value|
313:         @force_update = value
314:       end
315: 
316: #      opt.separator nil  # 1.8.2 doesn't work
317: 
318:       opt.on("--fmt=FORMAT", "--format=FORMAT", "-f", @generators.keys,
319:              "Set the output formatter.") do |value|
320:         @generator_name = value.downcase
321:         setup_generator
322:       end
323: 
324: #      opt.separator nil  # 1.8.2 doesn't work
325: 
326:       image_formats = %w[gif png jpg jpeg]
327:       opt.on("--image-format=FORMAT", "-I", image_formats,
328:              "Sets output image format for diagrams. Can",
329:              "be #{image_formats.join ', '}. If this option",
330:              "is omitted, png is used. Requires",
331:              "diagrams.") do |value|
332:         @image_format = value
333:       end
334: 
335: #      opt.separator nil  # 1.8.2 doesn't work
336: 
337:       opt.on("--include=DIRECTORIES", "-i", Array,
338:              "set (or add to) the list of directories to",
339:              "be searched when satisfying :include:",
340:              "requests. Can be used more than once.") do |value|
341:         @rdoc_include.concat value.map { |dir| dir.strip }
342:       end
343: 
344: #      opt.separator nil  # 1.8.2 doesn't work
345: 
346:       opt.on("--inline-source", "-S",
347:              "Show method source code inline, rather than",
348:              "via a popup link.") do |value|
349:         @inline_source = value
350:       end
351: 
352: #      opt.separator nil  # 1.8.2 doesn't work
353: 
354:       opt.on("--line-numbers", "-N",
355:              "Include line numbers in the source code.") do |value|
356:         @include_line_numbers = value
357:       end
358: 
359: #      opt.separator nil  # 1.8.2 doesn't work
360: 
361:       opt.on("--main=NAME", "-m",
362:              "NAME will be the initial page displayed.") do |value|
363:         @main_page = value
364:       end
365: 
366: #      opt.separator nil  # 1.8.2 doesn't work
367: 
368:       opt.on("--merge", "-M",
369:              "When creating ri output, merge previously",
370:              "processed classes into previously",
371:              "documented classes of the same name.") do |value|
372:         @merge = value
373:       end
374: 
375: #      opt.separator nil  # 1.8.2 doesn't work
376: 
377:       opt.on("--one-file", "-1",
378:              "Put all the output into a single file.") do |value|
379:         @all_one_file = value
380:         @inline_source = value if value
381:         @template = 'one_page_html'
382:       end
383: 
384: #      opt.separator nil  # 1.8.2 doesn't work
385: 
386:       opt.on("--op=DIR", "-o",
387:              "Set the output directory.") do |value|
388:         if @css && ! (%r{^(https?:/)?/} =~ @css)
389:           @css = relative_str(File.join(value, "."),
390:                               relative_str(File.join(@op_dir.split("/").fill(".."), ".."), @css))
391:         end
392:         @op_dir = value
393:       end
394: 
395: #      opt.separator nil  # 1.8.2 doesn't work
396: 
397:       opt.on("--opname=NAME", "-n",
398:              "Set the NAME of the output. Has no effect",
399:              "for HTML.") do |value|
400:         @op_name = value
401:       end
402: 
403: #      opt.separator nil  # 1.8.2 doesn't work
404: 
405:       opt.on("--promiscuous", "-p",
406:              "When documenting a file that contains a",
407:              "module or class also defined in other",
408:              "files, show all stuff for that module or",
409:              "class in each files page. By default, only",
410:              "show stuff defined in that particular file.") do |value|
411:         @promiscuous = value
412:       end
413: 
414: #      opt.separator nil  # 1.8.2 doesn't work
415: 
416:       opt.on("--quiet", "-q",
417:              "Don't show progress as we parse.") do |value|
418:         @verbosity = 0
419:       end
420: 
421:       opt.on("--verbose", "-v",
422:              "Display extra progress as we parse.") do |value|
423:         @verbosity = 2
424:       end
425: 
426: 
427: #      opt.separator nil  # 1.8.2 doesn't work
428: 
429:       opt.on("--ri", "-r",
430:              "Generate output for use by `ri`. The files",
431:              "are stored in the '.rdoc' directory under",
432:              "your home directory unless overridden by a",
433:              "subsequent --op parameter, so no special",
434:              "privileges are needed.") do |value|
435:         @generator_name = "ri"
436:         @op_dir = RDoc::RI::Paths::HOMEDIR
437:         setup_generator
438:       end
439: 
440: #      opt.separator nil  # 1.8.2 doesn't work
441: 
442:       opt.on("--ri-site", "-R",
443:              "Generate output for use by `ri`. The files",
444:              "are stored in a site-wide directory,",
445:              "making them accessible to others, so",
446:              "special privileges are needed.") do |value|
447:         @generator_name = "ri"
448:         @op_dir = RDoc::RI::Paths::SITEDIR
449:         setup_generator
450:       end
451: 
452: #      opt.separator nil  # 1.8.2 doesn't work
453: 
454:       opt.on("--ri-system", "-Y",
455:              "Generate output for use by `ri`. The files",
456:              "are stored in a site-wide directory,",
457:              "making them accessible to others, so",
458:              "special privileges are needed.  This",
459:              "option is intended to be used during Ruby",
460:              "installation.") do |value|
461:         @generator_name = "ri"
462:         @op_dir = RDoc::RI::Paths::SYSDIR
463:         setup_generator
464:       end
465: 
466: #      opt.separator nil  # 1.8.2 doesn't work
467: 
468:       opt.on("--show-hash", "-H",
469:              "A name of the form #name in a comment is a",
470:              "possible hyperlink to an instance method",
471:              "name. When displayed, the '#' is removed",
472:              "unless this option is specified.") do |value|
473:         @show_hash = value
474:       end
475: 
476: #      opt.separator nil  # 1.8.2 doesn't work
477: 
478:       opt.on("--style=URL", "-s",
479:              "Specifies the URL of a separate stylesheet.") do |value|
480:         if %r{^(https?:/)?/} =~ value
481:           @css = value
482:         else
483:           @css = relative_str(File.join(@op_dir, "."), value)
484:         end
485:       end
486: 
487: #      opt.separator nil  # 1.8.2 doesn't work
488: 
489:       opt.on("--tab-width=WIDTH", "-w", OptionParser::DecimalInteger,
490:              "Set the width of tab characters.") do |value|
491:         @tab_width = value
492:       end
493: 
494: #      opt.separator nil  # 1.8.2 doesn't work
495: 
496:       opt.on("--template=NAME", "-T",
497:              "Set the template used when generating",
498:              "output.") do |value|
499:         @template = value
500:       end
501: 
502: #      opt.separator nil  # 1.8.2 doesn't work
503: 
504:       opt.on("--title=TITLE", "-t",
505:              "Set TITLE as the title for HTML output.") do |value|
506:         @title = value
507:       end
508: 
509: #      opt.separator nil  # 1.8.2 doesn't work
510: 
511:       opt.on("--webcvs=URL", "-W",
512:              "Specify a URL for linking to a web frontend",
513:              "to CVS. If the URL contains a '\%s', the",
514:              "name of the current file will be",
515:              "substituted; if the URL doesn't contain a",
516:              "'\%s', the filename will be appended to it.") do |value|
517:         @webcvs = value
518:       end
519: 
520: #      opt.separator nil  # 1.8.2 doesn't work
521: 
522:       opt.on("--mathml", "-l",
523:              "TeX formatted formula is converted to MathML.", 
524:              "You need mathml.rb V0.8 or later to use the --mathml", 
525:              "option correctly. mathml.rb V0.8 is available from", 
526:              "http://www.hinet.mydns.jp/files/math_ml-0.8.0.tar.gz") do |value|
527:         check_mathml
528:         @mathml = true
529:         @generator_name = 'xhtml'
530:         @template = @generator_name
531:         setup_generator
532:       end
533: 
534: #      opt.separator nil  # 1.8.2 doesn't work
535: 
536:       opt.on("--ignore-case", "-C",
537:              "The case of names of classes or modules", 
538:              "or methods are ignored.") do |value|
539:         @ignore_case = true
540:       end
541:     end
542: 
543:     argv.insert(0, *ENV['RDOCOPT'].split) if ENV['RDOCOPT']
544: 
545:     opts.parse! argv
546: 
547:     @files = argv.dup
548: 
549:     @rdoc_include << "." if @rdoc_include.empty?
550: 
551:     if @exclude.empty? then
552:       @exclude = nil
553:     else
554:       @exclude = Regexp.new(@exclude.join("|"))
555:     end
556: 
557:     check_files
558: 
559:     # If no template was specified, use the default template for the output
560:     # formatter
561: 
562:     @template ||= @generator_name
563: 
564:     # Generate a regexp from the accessors
565:     unless accessors.empty? then
566:       re = '^(' + accessors.map { |a| Regexp.quote a }.join('|') + ')$'
567:       @extra_accessors = Regexp.new re
568:     end
569: 
570:   rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
571:     puts opts
572:     puts
573:     puts e
574:     exit 1
575:   end

Parse command line options.

[Source]

     # File options.rb, line 205
205:   def parse(argv)
206:     accessors = []
207: 
208:     opts = OptionParser.new do |opt|
209:       opt.program_name = File.basename $0
210:       opt.version = RDoc::VERSION
211:       opt.release = nil
212:       opt.summary_indent = ' ' * 4
213:       opt.banner = "Usage: \#{opt.program_name} [options] [names...]\n\nFiles are parsed, and the information they contain collected, before any\noutput is produced. This allows cross references between all files to be\nresolved. If a name is a directory, it is traversed. If no names are\nspecified, all Ruby files in the current directory (and subdirectories) are\nprocessed.\n\nHow RDoc generates output depends on the output formatter being used, and on\nthe options you give.\n\n- HTML output is normally produced into a number of separate files\n(one per class, module, and file, along with various indices).\nThese files will appear in the directory given by the --op\noption (doc/ by default).\n\n- XHTML output is the same as HTML.\n\n- XML output by default is written to standard output. If a\n--opname option is given, the output will instead be written\nto a file with that name in the output directory.\n\n- .chm files (Windows help files) are written in the --op directory.\nIf an --opname parameter is present, that name is used, otherwise\nthe file will be called rdoc.chm.\n"
214: 
215: #      opt.separator nil  # 1.8.2 doesn't work
216:       opt.separator "Options:"
217: #      opt.separator nil  # 1.8.2 doesn't work
218: 
219:       opt.on("--accessor=ACCESSORS", "-A", Array,
220:              "A comma separated list of additional class",
221:              "methods that should be treated like",
222:              "'attr_reader' and friends.",
223:              " ",
224:              "Option may be repeated.",
225:              " ",
226:              "Each accessorname may have '=text'",
227:              "appended, in which case that text appears",
228:              "where the r/w/rw appears for normal.",
229:              "accessors") do |value|
230:         value.each do |accessor|
231:           if accessor =~ /^(\w+)(=(.*))?$/
232:             accessors << $1
233:             @extra_accessor_flags[$1] = $3
234:           end
235:         end
236:       end
237: 
238: #      opt.separator nil  # 1.8.2 doesn't work
239: 
240:       opt.on("--all", "-a",
241:              "Include all methods (not just public) in",
242:              "the output.") do |value|
243:         @show_all = value
244:       end
245: 
246: #      opt.separator nil  # 1.8.2 doesn't work
247: 
248:       opt.on("--charset=CHARSET", "-c",
249:              "Specifies the output HTML character-set.") do |value|
250:         @charset = value
251:       end
252: 
253: #      opt.separator nil  # 1.8.2 doesn't work
254: 
255:       opt.on("--debug", "-D",
256:              "Displays lots on internal stuff.") do |value|
257:         $DEBUG_RDOC = value
258:       end
259: 
260: #      opt.separator nil  # 1.8.2 doesn't work
261: 
262:       opt.on("--diagram", "-d",
263:              "Generate diagrams showing modules and",
264:              "classes. You need dot V1.8.6 or later to",
265:              "use the --diagram option correctly. Dot is",
266:              "available from http://graphviz.org") do |value|
267:         check_diagram
268:         @diagram = true
269:       end
270: 
271: #      opt.separator nil  # 1.8.2 doesn't work
272: 
273:       opt.on("--exclude=PATTERN", "-x", Regexp,
274:              "Do not process files or directories",
275:              "matching PATTERN.") do |value|
276:         @exclude << value
277:       end
278: 
279: #      opt.separator nil  # 1.8.2 doesn't work
280: 
281:       opt.on("--extension=NEW=OLD", "-E",
282:              "Treat files ending with .new as if they",
283:              "ended with .old. Using '-E cgi=rb' will",
284:              "cause xxx.cgi to be parsed as a Ruby file.") do |value|
285:         new, old = value.split(/=/, 2)
286: 
287:         unless new and old then
288:           raise OptionParser::InvalidArgument, "Invalid parameter to '-E'"
289:         end
290: 
291:         unless RDoc::ParserFactory.alias_extension old, new then
292:           raise OptionParser::InvalidArgument, "Unknown extension .#{old} to -E"
293:         end
294:       end
295: 
296: #      opt.separator nil  # 1.8.2 doesn't work
297: 
298:       opt.on("--fileboxes", "-F",
299:              "Classes are put in boxes which represents",
300:              "files, where these classes reside. Classes",
301:              "shared between more than one file are",
302:              "shown with list of files that are sharing",
303:              "them. Silently discarded if --diagram is",
304:              "not given.") do |value|
305:         @fileboxes = value
306:       end
307: 
308: #      opt.separator nil  # 1.8.2 doesn't work
309: 
310:       opt.on("--force-update", "-U",
311:              "Forces rdoc to scan all sources even if",
312:              "newer than the flag file.") do |value|
313:         @force_update = value
314:       end
315: 
316: #      opt.separator nil  # 1.8.2 doesn't work
317: 
318:       opt.on("--fmt=FORMAT", "--format=FORMAT", "-f", @generators.keys,
319:              "Set the output formatter.") do |value|
320:         @generator_name = value.downcase
321:         setup_generator
322:       end
323: 
324: #      opt.separator nil  # 1.8.2 doesn't work
325: 
326:       image_formats = %w[gif png jpg jpeg]
327:       opt.on("--image-format=FORMAT", "-I", image_formats,
328:              "Sets output image format for diagrams. Can",
329:              "be #{image_formats.join ', '}. If this option",
330:              "is omitted, png is used. Requires",
331:              "diagrams.") do |value|
332:         @image_format = value
333:       end
334: 
335: #      opt.separator nil  # 1.8.2 doesn't work
336: 
337:       opt.on("--include=DIRECTORIES", "-i", Array,
338:              "set (or add to) the list of directories to",
339:              "be searched when satisfying :include:",
340:              "requests. Can be used more than once.") do |value|
341:         @rdoc_include.concat value.map { |dir| dir.strip }
342:       end
343: 
344: #      opt.separator nil  # 1.8.2 doesn't work
345: 
346:       opt.on("--inline-source", "-S",
347:              "Show method source code inline, rather than",
348:              "via a popup link.") do |value|
349:         @inline_source = value
350:       end
351: 
352: #      opt.separator nil  # 1.8.2 doesn't work
353: 
354:       opt.on("--line-numbers", "-N",
355:              "Include line numbers in the source code.") do |value|
356:         @include_line_numbers = value
357:       end
358: 
359: #      opt.separator nil  # 1.8.2 doesn't work
360: 
361:       opt.on("--main=NAME", "-m",
362:              "NAME will be the initial page displayed.") do |value|
363:         @main_page = value
364:       end
365: 
366: #      opt.separator nil  # 1.8.2 doesn't work
367: 
368:       opt.on("--merge", "-M",
369:              "When creating ri output, merge previously",
370:              "processed classes into previously",
371:              "documented classes of the same name.") do |value|
372:         @merge = value
373:       end
374: 
375: #      opt.separator nil  # 1.8.2 doesn't work
376: 
377:       opt.on("--one-file", "-1",
378:              "Put all the output into a single file.") do |value|
379:         @all_one_file = value
380:         @inline_source = value if value
381:         @template = 'one_page_html'
382:       end
383: 
384: #      opt.separator nil  # 1.8.2 doesn't work
385: 
386:       opt.on("--op=DIR", "-o",
387:              "Set the output directory.") do |value|
388:         if @css && ! (%r{^(https?:/)?/} =~ @css)
389:           @css = relative_str(File.join(value, "."),
390:                               relative_str(File.join(@op_dir.split("/").fill(".."), ".."), @css))
391:         end
392:         @op_dir = value
393:       end
394: 
395: #      opt.separator nil  # 1.8.2 doesn't work
396: 
397:       opt.on("--opname=NAME", "-n",
398:              "Set the NAME of the output. Has no effect",
399:              "for HTML.") do |value|
400:         @op_name = value
401:       end
402: 
403: #      opt.separator nil  # 1.8.2 doesn't work
404: 
405:       opt.on("--promiscuous", "-p",
406:              "When documenting a file that contains a",
407:              "module or class also defined in other",
408:              "files, show all stuff for that module or",
409:              "class in each files page. By default, only",
410:              "show stuff defined in that particular file.") do |value|
411:         @promiscuous = value
412:       end
413: 
414: #      opt.separator nil  # 1.8.2 doesn't work
415: 
416:       opt.on("--quiet", "-q",
417:              "Don't show progress as we parse.") do |value|
418:         @verbosity = 0
419:       end
420: 
421:       opt.on("--verbose", "-v",
422:              "Display extra progress as we parse.") do |value|
423:         @verbosity = 2
424:       end
425: 
426: 
427: #      opt.separator nil  # 1.8.2 doesn't work
428: 
429:       opt.on("--ri", "-r",
430:              "Generate output for use by `ri`. The files",
431:              "are stored in the '.rdoc' directory under",
432:              "your home directory unless overridden by a",
433:              "subsequent --op parameter, so no special",
434:              "privileges are needed.") do |value|
435:         @generator_name = "ri"
436:         @op_dir = RDoc::RI::Paths::HOMEDIR
437:         setup_generator
438:       end
439: 
440: #      opt.separator nil  # 1.8.2 doesn't work
441: 
442:       opt.on("--ri-site", "-R",
443:              "Generate output for use by `ri`. The files",
444:              "are stored in a site-wide directory,",
445:              "making them accessible to others, so",
446:              "special privileges are needed.") do |value|
447:         @generator_name = "ri"
448:         @op_dir = RDoc::RI::Paths::SITEDIR
449:         setup_generator
450:       end
451: 
452: #      opt.separator nil  # 1.8.2 doesn't work
453: 
454:       opt.on("--ri-system", "-Y",
455:              "Generate output for use by `ri`. The files",
456:              "are stored in a site-wide directory,",
457:              "making them accessible to others, so",
458:              "special privileges are needed.  This",
459:              "option is intended to be used during Ruby",
460:              "installation.") do |value|
461:         @generator_name = "ri"
462:         @op_dir = RDoc::RI::Paths::SYSDIR
463:         setup_generator
464:       end
465: 
466: #      opt.separator nil  # 1.8.2 doesn't work
467: 
468:       opt.on("--show-hash", "-H",
469:              "A name of the form #name in a comment is a",
470:              "possible hyperlink to an instance method",
471:              "name. When displayed, the '#' is removed",
472:              "unless this option is specified.") do |value|
473:         @show_hash = value
474:       end
475: 
476: #      opt.separator nil  # 1.8.2 doesn't work
477: 
478:       opt.on("--style=URL", "-s",
479:              "Specifies the URL of a separate stylesheet.") do |value|
480:         if %r{^(https?:/)?/} =~ value
481:           @css = value
482:         else
483:           @css = relative_str(File.join(@op_dir, "."), value)
484:         end
485:       end
486: 
487: #      opt.separator nil  # 1.8.2 doesn't work
488: 
489:       opt.on("--tab-width=WIDTH", "-w", OptionParser::DecimalInteger,
490:              "Set the width of tab characters.") do |value|
491:         @tab_width = value
492:       end
493: 
494: #      opt.separator nil  # 1.8.2 doesn't work
495: 
496:       opt.on("--template=NAME", "-T",
497:              "Set the template used when generating",
498:              "output.") do |value|
499:         @template = value
500:       end
501: 
502: #      opt.separator nil  # 1.8.2 doesn't work
503: 
504:       opt.on("--title=TITLE", "-t",
505:              "Set TITLE as the title for HTML output.") do |value|
506:         @title = value
507:       end
508: 
509: #      opt.separator nil  # 1.8.2 doesn't work
510: 
511:       opt.on("--webcvs=URL", "-W",
512:              "Specify a URL for linking to a web frontend",
513:              "to CVS. If the URL contains a '\%s', the",
514:              "name of the current file will be",
515:              "substituted; if the URL doesn't contain a",
516:              "'\%s', the filename will be appended to it.") do |value|
517:         @webcvs = value
518:       end
519: 
520: #      opt.separator nil  # 1.8.2 doesn't work
521: 
522:       opt.on("--mathml", "-l",
523:              "TeX formatted formula is converted to MathML.", 
524:              "You need mathml.rb V0.8 or later to use the --mathml", 
525:              "option correctly. mathml.rb V0.8 is available from", 
526:              "http://www.hinet.mydns.jp/files/math_ml-0.8.0.tar.gz") do |value|
527:         check_mathml
528:         @mathml = true
529:         @generator_name = 'xhtml'
530:         @template = @generator_name
531:         setup_generator
532:       end
533: 
534: #      opt.separator nil  # 1.8.2 doesn't work
535: 
536:       opt.on("--ignore-case", "-C",
537:              "The case of names of classes or modules", 
538:              "or methods are ignored.") do |value|
539:         @ignore_case = true
540:       end
541:     end
542: 
543:     argv.insert(0, *ENV['RDOCOPT'].split) if ENV['RDOCOPT']
544: 
545:     opts.parse! argv
546: 
547:     @files = argv.dup
548: 
549:     @rdoc_include << "." if @rdoc_include.empty?
550: 
551:     if @exclude.empty? then
552:       @exclude = nil
553:     else
554:       @exclude = Regexp.new(@exclude.join("|"))
555:     end
556: 
557:     check_files
558: 
559:     # If no template was specified, use the default template for the output
560:     # formatter
561: 
562:     @template ||= @generator_name
563: 
564:     # Generate a regexp from the accessors
565:     unless accessors.empty? then
566:       re = '^(' + accessors.map { |a| Regexp.quote a }.join('|') + ')$'
567:       @extra_accessors = Regexp.new re
568:     end
569: 
570:   rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
571:     puts opts
572:     puts
573:     puts e
574:     exit 1
575:   end

Don‘t display progress as we process the files

[Source]

     # File options.rb, line 615
615:   def quiet
616:     @verbosity.zero?
617:   end

Don‘t display progress as we process the files

[Source]

     # File doc-tmp/rdoc/options.rb, line 615
615:   def quiet
616:     @verbosity.zero?
617:   end

[Source]

     # File options.rb, line 619
619:   def quiet=(bool)
620:     @verbosity = bool ? 0 : 1
621:   end

[Source]

     # File doc-tmp/rdoc/options.rb, line 619
619:   def quiet=(bool)
620:     @verbosity = bool ? 0 : 1
621:   end

Return relative path

[Source]

     # File options.rb, line 723
723:   def relative_str(from, target)
724:     from_dir     = File.dirname(from)
725:     target_dir   = File.dirname(target)
726:     target_base  = File.basename(target)
727: 
728:     from_ab_path   = Pathname.new(File.expand_path(from_dir))
729:     target_ab_path = Pathname.new(File.expand_path(target_dir))
730: 
731:     target_re_path = target_ab_path.relative_path_from(from_ab_path)
732: 
733:     result = target_re_path.to_s + "/" + target_base
734: 
735:     return result
736:   end

Return relative path

[Source]

     # File doc-tmp/rdoc/options.rb, line 723
723:   def relative_str(from, target)
724:     from_dir     = File.dirname(from)
725:     target_dir   = File.dirname(target)
726:     target_base  = File.basename(target)
727: 
728:     from_ab_path   = Pathname.new(File.expand_path(from_dir))
729:     target_ab_path = Pathname.new(File.expand_path(target_dir))
730: 
731:     target_re_path = target_ab_path.relative_path_from(from_ab_path)
732: 
733:     result = target_re_path.to_s + "/" + target_base
734: 
735:     return result
736:   end

Set up an output generator for the format in @generator_name

[Source]

     # File doc-tmp/rdoc/options.rb, line 628
628:   def setup_generator
629:     @generator = @generators[@generator_name]
630: 
631:     unless @generator then
632:       raise OptionParser::InvalidArgument, "Invalid output formatter"
633:     end
634: 
635:     if @generator_name == "xml" then
636:       @all_one_file = true
637:       @inline_source = true
638:     end
639:   end

Set up an output generator for the format in @generator_name

[Source]

     # File options.rb, line 628
628:   def setup_generator
629:     @generator = @generators[@generator_name]
630: 
631:     unless @generator then
632:       raise OptionParser::InvalidArgument, "Invalid output formatter"
633:     end
634: 
635:     if @generator_name == "xml" then
636:       @all_one_file = true
637:       @inline_source = true
638:     end
639:   end

Set the title, but only if not already set. This means that a title set from the command line trumps one set in a source file

[Source]

     # File options.rb, line 608
608:   def title=(string)
609:     @title ||= string
610:   end

Set the title, but only if not already set. This means that a title set from the command line trumps one set in a source file

[Source]

     # File doc-tmp/rdoc/options.rb, line 608
608:   def title=(string)
609:     @title ||= string
610:   end

[Validate]