Sha256: 943bd5e4a221eae5cbdce3737efab66360d8c006e9858946d872d9340d072950
Contents?: true
Size: 1.7 KB
Versions: 2
Compression:
Stored size: 1.7 KB
Contents
module Schofield module Generators class Levels class << self; attr_reader :all, :hierarchy, :sortables end @all = [] @names = {} @sortables = {} def self.models= models @model_names = models.map{ |m| m.name.underscore } 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 def self.exists? name @model_names.include?(name.to_s) 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
schofield-0.3.1 | lib/generators/schofield/levels.rb |
schofield-0.3.0 | lib/generators/schofield/levels.rb |