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