mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Deep diffing
This commit is contained in:
		
							
								
								
									
										9
									
								
								Rakefile
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								Rakefile
									
									
									
									
									
								
							| @@ -26,6 +26,8 @@ end | |||||||
| namespace :benchmark do | namespace :benchmark do | ||||||
|   require 'git' |   require 'git' | ||||||
|   require 'linguist/language' |   require 'linguist/language' | ||||||
|  |   require 'linguist/diff' | ||||||
|  |   require 'json' | ||||||
|  |  | ||||||
|   git = Git.open('.') |   git = Git.open('.') | ||||||
|  |  | ||||||
| @@ -65,6 +67,11 @@ namespace :benchmark do | |||||||
|     git.branch("tmp_#{compare}").delete |     git.branch("tmp_#{compare}").delete | ||||||
|  |  | ||||||
|     # DO COMPARISON... |     # DO COMPARISON... | ||||||
|  |     reference_classifications = JSON.parse(File.read("benchmark/results/#{reference}_output.json")) | ||||||
|  |  | ||||||
|  |     compare_classifications = JSON.parse(File.read("benchmark/results/#{compare}_output.json")) | ||||||
|  |  | ||||||
|  |     puts reference_classifications.deep_diff(compare_classifications) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   desc "Build benchmark index" |   desc "Build benchmark index" | ||||||
| @@ -73,9 +80,11 @@ namespace :benchmark do | |||||||
|     languages = Dir.glob('benchmark/samples/*') |     languages = Dir.glob('benchmark/samples/*') | ||||||
|  |  | ||||||
|     languages.each do |lang| |     languages.each do |lang| | ||||||
|  |       puts "Starting with #{lang}" | ||||||
|       results[lang] = {} |       results[lang] = {} | ||||||
|       files = Dir.glob("#{lang}/*") |       files = Dir.glob("#{lang}/*") | ||||||
|       files.each do |file| |       files.each do |file| | ||||||
|  |         puts file | ||||||
|         result = IO::popen("bundle exec linguist #{file} --simple").read |         result = IO::popen("bundle exec linguist #{file} --simple").read | ||||||
|         filename = File.basename(file) |         filename = File.basename(file) | ||||||
|         if result.chomp.empty? # No results |         if result.chomp.empty? # No results | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								lib/linguist/diff.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								lib/linguist/diff.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | class Hash | ||||||
|  |   def deep_diff(b) | ||||||
|  |     a = self | ||||||
|  |     (a.keys | b.keys).inject({}) do |diff, k| | ||||||
|  |       if a[k] != b[k] | ||||||
|  |         if a[k].respond_to?(:deep_diff) && b[k].respond_to?(:deep_diff) | ||||||
|  |           diff[k] = a[k].deep_diff(b[k]) | ||||||
|  |         else | ||||||
|  |           diff[k] = [a[k], b[k]] | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |       diff | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user