From 9a5f9a5e9b207122ed36b4148f6eb82352091ad2 Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Sat, 2 Mar 2013 13:15:42 +0800 Subject: [PATCH] Use space rate to distinguish minified files. Minified JS files usually contain less than 2% spaces, while minified CSS files may contain about 4% spaces. However, an unminified CSS file may also have as low as 6% spaces, especially when it includes some resources inline. Consequently, the division might not be appreciate for CSS files. Even though, it will only mis-recognize a normal file as minified for a few special cases. --- lib/linguist/generated.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/linguist/generated.rb b/lib/linguist/generated.rb index ebf24a9f..b7c2d4d6 100644 --- a/lib/linguist/generated.rb +++ b/lib/linguist/generated.rb @@ -72,15 +72,14 @@ module Linguist # Internal: Is the blob minified files? # - # Consider a file minified if the average line length is - # greater then 100c. Currently only JS and CSS files are - # detected by this method. + # Consider a file minified if it contains more than 5% spaces. + # Currently, only JS and CSS files are detected by this method. # # Returns true or false. def minified_files? return unless ['.js', '.css'].include? extname - if lines.any? - (lines.inject(0) { |n, l| n += l.length } / lines.length) > 100 + if data && data.length > 200 + (data.each_char.count{ |c| c <= ' ' } / data.length.to_f) < 0.05 else false end