Method: DataMetaDom::Record#parse

Defined in:
lib/dataMetaDom/record.rb

#parse(model, source) ⇒ Object

Parse the Record from the given source into this instance.

  • Parameter:

    • source - an instance of SourceFile to parse from



351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
# File 'lib/dataMetaDom/record.rb', line 351

def parse(model, source)
    while (line = source.nextLine)
        next if docConsumed?(source)
        case line
            when /^\s*#{END_KW}\s*$/
                if source.docs
                    self.docs = source.docs.clone
                    source.docs.clear
                end
                self.ver = source.ver unless self.ver
                raise "Version missing for the Record #{name}" unless self.ver
                return self
            when ''
                next
            else
                isTokenConsumed = false
                RECORD_LEVEL_TOKENS.each { |t|
                    isTokenConsumed = t.consumed? source, self
                    break if isTokenConsumed
                }
                unless isTokenConsumed
                    raise ArgumentError, "Record #{@name}: all field declarations must precede identity" if @identity
                    Field.consume(model, source, self)
                end
                resetEntity
        end # case line
    end # while line
    self # for call chaining
end