From 26e2dbddaa2ca78944bf4499de6766858a161b1d Mon Sep 17 00:00:00 2001 From: joshbronson Date: Tue, 5 Nov 2013 14:21:54 -0600 Subject: fixing for Diff::LCS::Change.from_a flatten should only go one level deep to avoid problems when diffing arrays of arrays, e.g.: Diff::LCS.sdiff([[1,2]], []) RuntimeError: Invalid change array format provided. from /Users/joshbronson/homebase/jbro-homebase/bundle/ruby/1.9.1/gems/diff-lcs-1.2.4/lib/diff/lcs/change.rb:50:in `from_a' from /Users/joshbronson/homebase/jbro-homebase/bundle/ruby/1.9.1/gems/diff-lcs-1.2.4/lib/diff/lcs/change.rb:137:in `from_a' from /Users/joshbronson/homebase/jbro-homebase/bundle/ruby/1.9.1/gems/diff-lcs-1.2.4/lib/diff/lcs/change.rb:158:in `simplify' from /Users/joshbronson/homebase/jbro-homebase/bundle/ruby/1.9.1/gems/diff-lcs-1.2.4/lib/diff/lcs/callbacks.rb:312:in `discard_a' from /Users/joshbronson/homebase/jbro-homebase/bundle/ruby/1.9.1/gems/diff-lcs-1.2.4/lib/diff/lcs.rb:633:in `traverse_balanced' from /Users/joshbronson/homebase/jbro-homebase/bundle/ruby/1.9.1/gems/diff-lcs-1.2.4/lib/diff/lcs/internals.rb:10:in `diff_traversal' from /Users/joshbronson/homebase/jbro-homebase/bundle/ruby/1.9.1/gems/diff-lcs-1.2.4/lib/diff/lcs.rb:266:in `sdiff' --- lib/diff/lcs/change.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/diff/lcs/change.rb b/lib/diff/lcs/change.rb index 079d734..4077095 100644 --- a/lib/diff/lcs/change.rb +++ b/lib/diff/lcs/change.rb @@ -40,7 +40,7 @@ class Diff::LCS::Change end def self.from_a(arr) - arr = arr.flatten + arr = arr.flatten(1) case arr.size when 5 Diff::LCS::ContextChange.new(*(arr[0...5])) -- cgit v1.2.1