diff options
author | joshbronson <josh@infochimps.com> | 2013-11-05 14:21:54 -0600 |
---|---|---|
committer | joshbronson <josh@infochimps.com> | 2013-11-05 14:21:54 -0600 |
commit | 26e2dbddaa2ca78944bf4499de6766858a161b1d (patch) | |
tree | 83b7a27601865707690530f6b3d128dc8877ed5e | |
parent | 549048a7c802fa0587810588fba1a351a669505f (diff) | |
download | diff-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.rb | 2 |
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])) |