summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoshbronson <josh@infochimps.com>2013-11-05 14:21:54 -0600
committerjoshbronson <josh@infochimps.com>2013-11-05 14:21:54 -0600
commit26e2dbddaa2ca78944bf4499de6766858a161b1d (patch)
tree83b7a27601865707690530f6b3d128dc8877ed5e
parent549048a7c802fa0587810588fba1a351a669505f (diff)
downloaddiff-lcs-26e2dbddaa2ca78944bf4499de6766858a161b1d.tar.gz
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'
-rw-r--r--lib/diff/lcs/change.rb2
1 files changed, 1 insertions, 1 deletions
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]))