Sha256: f3508e16f28a55092bb626e4a9b087b8f00ddffc4fd8cc612d6cb35c806a73bb
Contents?: true
Size: 1.66 KB
Versions: 3
Compression:
Stored size: 1.66 KB
Contents
module Schofield module Generators class Levels class << self; attr_reader :all, :hierarchy, :sortables end @all = [] @names = {} @sortables = {} def self.models= models models.each do |model| if polymorphic_model?(model) superclass = add_level(model) subclasses(model).each do |subclass| add_level(subclass, superclass) superclass.subclasses << subclass end else add_level(model) end end end def self.sortables @sortables.keys end def self.sortable=sortable @sortables[sortable] = true end def self.find name @all[@names[name]] end private def self.polymorphic_model? model model.columns.find { |c| c.name == 'type' }.present? end def self.subclasses model begin answer = Responses.get "Which models extend #{model.name}?" subclasses = answer.split(/[^\w]+/).map{ |a| a.camelize.constantize } raise StandardError if subclasses.blank? rescue NameError => error Responses.say "Could not find models: #{error}" retry rescue StandardError Responses.say "You must answer!" retry end subclasses end def self.add_level model, superclass=nil level = Level.new(model, superclass) @all << level @names[model.name.underscore] = @all.length - 1 level end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
schofield-0.2.2 | lib/generators/schofield/levels.rb |
schofield-0.2.1 | lib/generators/schofield/levels.rb |
schofield-0.2.0 | lib/generators/schofield/levels.rb |