March 2008
Intermediate to advanced
112 pages
3h 7m
English
The next step is to parse the options. None of this code is really relevant to our study of Ferret right now. It is simply an example of using the getoptlong and ostruct standard libraries. For the sake of completeness, though, we’ll show the whole of ferretfind here. If you are interested, the option parsing code is from 49 to 114:
0#!/usr/bin/env ruby1require'rubygems'2require'ferret'3require'optparse'4require'ostruct'5require'dbm'67moduleFerretFind8classReader9@@subclasses=[]10@@readers={}1112defReader.inherited(subclass)13@@subclasses<<subclass14end1516defReader.load_readers(field_infos)17@@subclasses.eachdo|subclass|18reader=subclass.new(field_infos)19subclass::EXTENSIONS.eachdo|ext|20@@readers[ext.downcase]=reader21end22end23end2425defReader.get_reader(path)26@@readers[(File.extname(path)[/[^.]+/]||"").downcase]27end2829defReader.read(path)30document={31:path=>path,32:accessed=>File.atime(path).strftime("%Y%m%d"),33:modified=>File.mtime(path).strftime("%Y%m%d")34}35ifFile.readable?(path)andreader=Reader.get_reader(path)36document.merge!(reader.read(path))37end38returndocument39end4041protected42definitialize(field_infos);end43defread(path);{}end44defadd_field(field_infos,field,options)45field_infos.add_field(field,options)unlessfield_infos[field]46end47end48end
Read now
Unlock full access