class DBCode::Graph

Attributes

files[R]

Public Class Methods

new(files) click to toggle source
# File lib/dbcode/graph.rb, line 8
def initialize(files)
  @files = (files.map {|f| { f.name => f } }.reduce(:merge) || {}).freeze
end

Public Instance Methods

compile() click to toggle source
# File lib/dbcode/graph.rb, line 16
def compile
  tsort.map(&:to_sql).join(";\n")
end
digest() click to toggle source
# File lib/dbcode/graph.rb, line 12
def digest
  Digest::MD5.base64digest to_sql
end
to_sql() click to toggle source
# File lib/dbcode/graph.rb, line 20
def to_sql
  @to_sql ||= compile
end

Private Instance Methods

tsort_each_child(file, &block) click to toggle source
# File lib/dbcode/graph.rb, line 28
def tsort_each_child(file, &block)
  file.dependency_names.each do |name|
    dependency = files.fetch name do
      raise LoadError, %Q{cannot load file -- #{name}}
    end

    block.call dependency
  end
end
tsort_each_node(&b) click to toggle source
# File lib/dbcode/graph.rb, line 38
def tsort_each_node(&b)
  files.values.each(&b)
end