class MongoMapperDiagram::Generator

Public Class Methods

new(documents = nil, gviz = nil) click to toggle source
# File lib/mongo_mapper_diagram/generator.rb, line 6
def initialize(documents = nil, gviz = nil)
  @documents = documents
  @gviz = gviz
end

Public Instance Methods

generate(filename, extension = :png) click to toggle source
# File lib/mongo_mapper_diagram/generator.rb, line 11
def generate(filename, extension = :png)
  @documents ||= MongoMapperDiagram::Document.all
  @gviz ||= Gviz.new(:G, :digraph)

  @documents.each do |doc|
    @gviz.node symbolize(doc), label: make_label(doc), shape: 'Mrecord'
  end

  @documents.each do |doc|
    doc.associations.each do |k, association|
      if association.instance_of? MongoMapper::Plugins::Associations::BelongsToAssociation
        @gviz.route symbolize(doc) => symbolize(association.class_name)
      end
    end
  end

  @gviz.save(filename, extension)
end

Private Instance Methods

humanize(document) click to toggle source
# File lib/mongo_mapper_diagram/generator.rb, line 35
def humanize(document)
  document.to_s
end
make_label(document) click to toggle source
# File lib/mongo_mapper_diagram/generator.rb, line 39
def make_label(document)
  label =  "{#{humanize(document)}| "
  label += document.keys.map {|name, key|
    name + " : " + key.type.to_s
  }.join('\l')
  label += "\\l}"
  label
end
symbolize(document) click to toggle source
# File lib/mongo_mapper_diagram/generator.rb, line 31
def symbolize(document)
  document.to_s.gsub(/::/, '').to_sym
end