Sha256: 80397de78bf891eaac19b77250ff3faf0a2daaf8b3e82e0e14f2797b2ecd514f

Contents?: true

Size: 1.13 KB

Versions: 5

Compression:

Stored size: 1.13 KB

Contents

class Ld::Controllers

  attr_accessor :headings, :rows

  def initialize root, models
    @root = root
    @models = models
    parse
  end

  def parse
    @rows = @root.find('app/controllers').search_regexp(/_controller.rb$/).map { |c|
      model_name = c.name.split('_controller')[0].singularize
      model_name = @models.models.include?(model_name) ? model_name : nil
      lines = c.lines
      actions = lines.map{|l| l.split('def ')[1] if l.match(/def /)}.compact
      [model_name, c.name,actions.size, lines.size, c.path,actions.join(',')]
    }.sort{|a,b| b[2] <=> a[2]}
    @headings = ['所属模型名称', '控制器名','action个数', '文件行数','path', '所有action']
  end

  def parse_by_model_name model_name
    controller = find_controller model_name.pluralize
    if controller
      controller_lines = controller.lines
      controller_methods = controller_lines.map{|l| l.split('def ')[1].chomp if l.match(/def /)}.compact
    end
    controller
  end

  def find_controller model_name
    @controllers.each do |c|
      if c.name.split('_controller.rb')[0] == model_name
        return c
      end
    end
    nil
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ld-0.4.5 lib/ld/project/controllers.rb
ld-0.4.4 lib/ld/project/controllers.rb
ld-0.4.3 lib/ld/project/controllers.rb
ld-0.4.2 lib/ld/project/controllers.rb
ld-0.4.1 lib/ld/project/controllers.rb