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