lib/compass/stats.rb in compass-sourcemaps-0.12.3.sourcemaps.a4836f1 vs lib/compass/stats.rb in compass-sourcemaps-0.12.4.sourcemaps.a4836f1

- old
+ new

@@ -1,99 +1,99 @@ -module Compass - module Stats - class StatsVisitor - attr_accessor :rule_count, :prop_count, :mixin_def_count, :mixin_count - def initialize - self.rule_count = 0 - self.prop_count = 0 - self.mixin_def_count = 0 - self.mixin_count = 0 - end - def visit(node) - self.prop_count += 1 if node.is_a?(Sass::Tree::PropNode) && !node.children.any? - if node.is_a?(Sass::Tree::RuleNode) - self.rule_count += node.rule.reject{|r| r.is_a?(Sass::Script::Node)}.map{|r| r.split(/,/)}.flatten.compact.size - end - self.mixin_def_count += 1 if node.is_a?(Sass::Tree::MixinDefNode) - self.mixin_count += 1 if node.is_a?(Sass::Tree::MixinNode) - end - def up(node) - end - def down(node) - end - def import?(node) - return false - full_filename = node.send(:import) - full_filename != Compass.deprojectize(full_filename) - end - end - class CssFile - attr_accessor :path, :css - attr_accessor :selector_count, :prop_count - attr_accessor :file_size - def initialize(path) - require 'css_parser' - self.path = path - self.css = CssParser::Parser.new - self.css.add_block!(contents) - self.selector_count = 0 - self.prop_count = 0 - end - def contents - @contents ||= File.read(path) - end - def lines - contents.inject(0){|m,c| m + 1 } - end - def analyze! - self.file_size = File.size(path) - css.each_selector do |selector, declarations, specificity| - sels = selector.split(/,/).size - props = declarations.split(/;/).size - self.selector_count += sels - self.prop_count += props - end - end - end - class SassFile - attr_accessor :path - attr_reader :visitor - attr_accessor :file_size - - def initialize(path) - self.path = path - end - def contents - @contents ||= File.read(path) - end - def tree - opts = Compass.configuration.to_sass_engine_options - opts[:syntax] = path[-4..-1].to_sym - @tree = Sass::Engine.new(contents, opts).to_tree - end - def visit_tree! - @visitor = StatsVisitor.new - tree.visit_depth_first(@visitor) - @visitor - end - def analyze! - self.file_size = File.size(path) - visit_tree! - end - def lines - contents.inject(0){|m,c| m + 1 } - end - def rule_count - visitor.rule_count - end - def prop_count - visitor.prop_count - end - def mixin_def_count - visitor.mixin_def_count - end - def mixin_count - visitor.mixin_count - end - end - end -end +module Compass + module Stats + class StatsVisitor + attr_accessor :rule_count, :prop_count, :mixin_def_count, :mixin_count + def initialize + self.rule_count = 0 + self.prop_count = 0 + self.mixin_def_count = 0 + self.mixin_count = 0 + end + def visit(node) + self.prop_count += 1 if node.is_a?(Sass::Tree::PropNode) && !node.children.any? + if node.is_a?(Sass::Tree::RuleNode) + self.rule_count += node.rule.reject{|r| r.is_a?(Sass::Script::Node)}.map{|r| r.split(/,/)}.flatten.compact.size + end + self.mixin_def_count += 1 if node.is_a?(Sass::Tree::MixinDefNode) + self.mixin_count += 1 if node.is_a?(Sass::Tree::MixinNode) + end + def up(node) + end + def down(node) + end + def import?(node) + return false + full_filename = node.send(:import) + full_filename != Compass.deprojectize(full_filename) + end + end + class CssFile + attr_accessor :path, :css + attr_accessor :selector_count, :prop_count + attr_accessor :file_size + def initialize(path) + require 'css_parser' + self.path = path + self.css = CssParser::Parser.new + self.css.add_block!(contents) + self.selector_count = 0 + self.prop_count = 0 + end + def contents + @contents ||= File.read(path) + end + def lines + contents.inject(0){|m,c| m + 1 } + end + def analyze! + self.file_size = File.size(path) + css.each_selector do |selector, declarations, specificity| + sels = selector.split(/,/).size + props = declarations.split(/;/).size + self.selector_count += sels + self.prop_count += props + end + end + end + class SassFile + attr_accessor :path + attr_reader :visitor + attr_accessor :file_size + + def initialize(path) + self.path = path + end + def contents + @contents ||= File.read(path) + end + def tree + opts = Compass.configuration.to_sass_engine_options + opts[:syntax] = path[-4..-1].to_sym + @tree = Sass::Engine.new(contents, opts).to_tree + end + def visit_tree! + @visitor = StatsVisitor.new + tree.visit_depth_first(@visitor) + @visitor + end + def analyze! + self.file_size = File.size(path) + visit_tree! + end + def lines + contents.inject(0){|m,c| m + 1 } + end + def rule_count + visitor.rule_count + end + def prop_count + visitor.prop_count + end + def mixin_def_count + visitor.mixin_def_count + end + def mixin_count + visitor.mixin_count + end + end + end +end