class Compass::Commands::ProjectStats

Public Class Methods

description(command) click to toggle source
# File lib/compass/commands/project_structure.rb, line 68
def description(command)
  "Report statistics about your stylesheets"
end
new(working_path, options) click to toggle source
# File lib/compass/commands/project_structure.rb, line 24
def initialize(working_path, options)
  super
  assert_project_directory_exists!
end
option_parser(arguments) click to toggle source
# File lib/compass/commands/project_structure.rb, line 57
def option_parser(arguments)
  parser = Compass::Exec::CommandOptionParser.new(arguments)
  parser.extend(Compass::Exec::GlobalOptionsParser)
  parser.extend(Compass::Exec::ProjectOptionsParser)
  parser.extend(StructureOptionsParser)
end
parse!(arguments) click to toggle source
# File lib/compass/commands/project_structure.rb, line 74
def parse!(arguments)
  parser = option_parser(arguments)
  parser.parse!
  parse_arguments!(parser, arguments)
  parser.options
end
parse_arguments!(parser, arguments) click to toggle source
# File lib/compass/commands/project_structure.rb, line 81
def parse_arguments!(parser, arguments)
  if arguments.size > 0
    parser.options[:project_name] = arguments.shift if File.directory?(arguments.first)
    parser.options[:sass_files] = arguments
  end
end
primary() click to toggle source
# File lib/compass/commands/project_structure.rb, line 72
def primary; false; end
usage() click to toggle source
# File lib/compass/commands/project_structure.rb, line 64
def usage
  option_parser([]).to_s
end

Public Instance Methods

css_columns(css_file) click to toggle source
# File lib/compass/commands/project_stats.rb, line 123
def css_columns(css_file)
  if File.exists?(css_file)
    cf = Compass::Stats::CssFile.new(css_file)
    cf.analyze!
    %w(selector_count prop_count file_size).map do |t|
      cf.send(t).to_s
    end
  else
    return [ '--', '--' , '--']
  end
rescue LoadError
  @missing_css_parser = true
  return [ 'DISABLED', 'DISABLED' ]
end
filename_columns(sass_file) click to toggle source
# File lib/compass/commands/project_stats.rb, line 110
def filename_columns(sass_file)
  filename = Compass.deprojectize(sass_file, working_path)
  [filename]
end
format_kb(v) click to toggle source
# File lib/compass/commands/project_stats.rb, line 87
def format_kb(v)
  return v unless v =~ %r^\d+$/
  v = Integer(v)
  if v < 1024
    "#{v} B"
  else
    v = v / 1024.0
    "#{v.ceil} KB"
  end
end
pad(c, max, options = {}) click to toggle source
# File lib/compass/commands/project_stats.rb, line 73
def pad(c, max, options = {})
  options[:align] ||= :left
  if c == :-
    filler = '-'
    c = ''
  else
    filler = ' '
  end
  c = send(:"format_#{options[:formatter]}", c) if options[:formatter]
  spaces = max - c.size
  filled = filler * [spaces,0].max
  "#{options[:left]}#{filled if options[:align] == :right}#{c}#{filled if options[:align] == :left}#{options[:right]}"
end
perform() click to toggle source
# File lib/compass/commands/project_structure.rb, line 29
def perform
  @compiler = new_compiler_instance
  (options[:sass_files] || sorted_sass_files).each do |sass_file|
    print_tree(Compass.projectize(sass_file))
  end
end
print_tree(file, depth = 0, importer = @compiler.importer) click to toggle source
sass_columns(sass_file) click to toggle source
# File lib/compass/commands/project_stats.rb, line 115
def sass_columns(sass_file)
  sf = Compass::Stats::SassFile.new(sass_file)
  sf.analyze!
  %w(rule_count prop_count mixin_def_count mixin_count file_size).map do |t|
    sf.send(t).to_s
  end
end
sorted_sass_files() click to toggle source
# File lib/compass/commands/project_structure.rb, line 43
def sorted_sass_files
  sass_files = @compiler.sass_files
  sass_files.map! do |s| 
    filename = Compass.deprojectize(s, File.join(Compass.configuration.project_path, Compass.configuration.sass_dir))
    [s, File.dirname(filename), File.basename(filename)]
  end
  sass_files = sass_files.sort_by do |s,d,f|
    File.join(d, f[0] == __ ? f[1..-1] : f)
  end
  sass_files.map!{|s,d,f| s}
end