| Class | Bio::FlatFileIndex::Indexer::Parser::TemplateParser |
| In: |
lib/bio/io/flatfile/indexer.rb
|
| Parent: | Object |
| NAMESTYLE | = | NameSpaces.new |
| dbclass | [W] | |
| dbclass | [R] | |
| errorlog | [R] | |
| fileid | [R] | |
| format | [R] | |
| format | [W] | |
| primary | [R] | |
| secondary | [R] |
# File lib/bio/io/flatfile/indexer.rb, line 79
79: def initialize
80: @namestyle = self.class::NAMESTYLE
81: @secondary = NameSpaces.new
82: @errorlog = []
83: end
# File lib/bio/io/flatfile/indexer.rb, line 98
98: def add_secondary_namespaces(*names)
99: DEBUG.print "add_secondary_namespaces: #{names.inspect}\n"
100: names.each do |x|
101: unless x.is_a?(NameSpace) then
102: y = @namestyle[x]
103: raise 'unknown secondary namespace' unless y
104: @secondary << y
105: end
106: end
107: true
108: end
# File lib/bio/io/flatfile/indexer.rb, line 164
164: def close_flatfile
165: DEBUG.print "close flatfile #{@flatfilename.inspect}\n"
166: @flatfile.close
167: end
# File lib/bio/io/flatfile/indexer.rb, line 122
122: def each
123: @flatfile.each do |x|
124: @entry = x
125: pos = @flatfile.entry_start_pos
126: len = @flatfile.entry_ended_pos - @flatfile.entry_start_pos
127: begin
128: yield pos, len
129: rescue RuntimeError, NameError => evar
130: DEBUG.print "Caught error: #{evar.inspect}\n"
131: DEBUG.print "in #{@flatfilename.inspect} position #{pos}\n"
132: DEBUG.print "===begin===\n"
133: DEBUG.print @flatfile.entry_raw.to_s.chomp
134: DEBUG.print "\n===end===\n"
135: @errorlog << [ evar, @flatfilename, pos ]
136: if @fatal then
137: DEBUG.print "Fatal error occurred, stop creating index...\n"
138: raise evar
139: else
140: DEBUG.print "This entry shall be incorrectly indexed.\n"
141: end
142: end #rescue
143: end
144: end
administration of a single flatfile
# File lib/bio/io/flatfile/indexer.rb, line 111
111: def open_flatfile(fileid, file)
112: @fileid = fileid
113: @flatfilename = file
114: DEBUG.print "fileid=#{fileid} file=#{@flatfilename.inspect}\n"
115: @flatfile = Bio::FlatFile.open(@dbclass, file, 'rb')
116: @flatfile.raw = nil
117: @flatfile.entry_pos_flag = true
118: @entry = nil
119: end
# File lib/bio/io/flatfile/indexer.rb, line 146
146: def parse_primary
147: r = self.primary.proc.call(@entry)
148: unless r.is_a?(String) and r.length > 0
149: #@fatal = true
150: raise 'primary id must be a non-void string (skipped this entry)'
151: end
152: r
153: end
# File lib/bio/io/flatfile/indexer.rb, line 155
155: def parse_secondary
156: self.secondary.each do |x|
157: p = x.proc.call(@entry)
158: p.each do |y|
159: yield x.name, y if y.length > 0
160: end
161: end
162: end
# File lib/bio/io/flatfile/indexer.rb, line 87
87: def set_primary_namespace(name)
88: DEBUG.print "set_primary_namespace: #{name.inspect}\n"
89: if name.is_a?(NameSpace) then
90: @primary = name
91: else
92: @primary = @namestyle[name]
93: end
94: raise 'unknown primary namespace' unless @primary
95: @primary
96: end