Sha256: f580c4fb699df72b041f25244bfbcdc2f369cc68bc402cdfadcc942cc59e40c2

Contents?: true

Size: 628 Bytes

Versions: 3

Compression:

Stored size: 628 Bytes

Contents

require 'parser/factory'

module Rubrowser
  class Data
    def initialize(files)
      @files = files
      @parsed = false
      parse
    end

    def definitions
      @_constants ||= parsers.map(&:definitions).reduce(:+).to_a
    end

    def relations
      @_relations ||= parsers.map(&:relations).reduce(:+).to_a
    end

    private

    def parse
      return if parsed?
      parsers.each(&:parse)
      @parsed = true
    end

    attr_reader :files, :parsed
    alias parsed? parsed

    def parsers
      @_parsers ||= files.map do |file|
        Rubrowser::Parser::Factory.build(file)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rubrowser-0.2.2 lib/data.rb
rubrowser-0.2.1 lib/data.rb
rubrowser-0.2.0 lib/data.rb