summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Ziegler <austin@zieglers.ca>2022-07-05 15:43:30 -0400
committerGitHub <noreply@github.com>2022-07-05 15:43:30 -0400
commitcab33a91e2894558b962b4b2236a213c6d63c54e (patch)
treefc14bc4c8a44e20026e1252a8cd435907d412ee1
parent3062997fbbe19cb6099a65a5dbcd0aba7b9b17c7 (diff)
parent0270cb87e09dd444ad6822a777bb7999fd6f6e85 (diff)
downloaddiff-lcs-main.tar.gz
Merge pull request #81 from halostatue/switch-to-standardrb-formattingHEADmain
Switch to standardrb formatting
-rw-r--r--.fasterer.yml5
-rw-r--r--.github/workflows/codeql-analysis.yml58
-rw-r--r--.standard.yml6
-rw-r--r--Gemfile24
-rw-r--r--History.md2
-rw-r--r--Rakefile60
-rwxr-xr-xbin/htmldiff8
-rw-r--r--lib/diff-lcs.rb2
-rw-r--r--lib/diff/lcs.rb112
-rw-r--r--lib/diff/lcs/array.rb2
-rw-r--r--lib/diff/lcs/backports.rb4
-rw-r--r--lib/diff/lcs/block.rb8
-rw-r--r--lib/diff/lcs/callbacks.rb16
-rw-r--r--lib/diff/lcs/change.rb38
-rw-r--r--lib/diff/lcs/htmldiff.rb40
-rw-r--r--lib/diff/lcs/hunk.rb57
-rw-r--r--lib/diff/lcs/internals.rb34
-rw-r--r--lib/diff/lcs/ldiff.rb68
-rw-r--r--spec/change_spec.rb100
-rw-r--r--spec/diff_spec.rb28
-rw-r--r--spec/hunk_spec.rb38
-rw-r--r--spec/issues_spec.rb88
-rw-r--r--spec/lcs_spec.rb22
-rw-r--r--spec/ldiff_spec.rb24
-rw-r--r--spec/patch_spec.rb168
-rw-r--r--spec/sdiff_spec.rb220
-rw-r--r--spec/spec_helper.rb150
-rw-r--r--spec/traverse_balanced_spec.rb380
-rw-r--r--spec/traverse_sequences_spec.rb62
29 files changed, 937 insertions, 887 deletions
diff --git a/.fasterer.yml b/.fasterer.yml
index 821e02d..eef484f 100644
--- a/.fasterer.yml
+++ b/.fasterer.yml
@@ -1,4 +1,3 @@
exclude_paths:
- - lib/diff/lcs.rb # sort_vs_sort_by on priority_compare
- - Rakefile # each_with_index vs while
- - spec/spec_helper.rb
+ - research/**/*
+ - pkg/**/*
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 2fe2010..a1548a1 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -9,14 +9,14 @@
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
-name: "CodeQL"
+name: 'CodeQL'
on:
push:
- branches: [ master, main ]
+ branches: [main]
pull_request:
# The branches below must be a subset of the branches above
- branches: [ master, main ]
+ branches: [main]
schedule:
- cron: '28 4 * * 2'
@@ -32,39 +32,39 @@ jobs:
strategy:
fail-fast: false
matrix:
- language: [ 'ruby' ]
+ language: ['ruby']
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- - name: Checkout repository
- uses: actions/checkout@v2
+ - name: Checkout repository
+ uses: actions/checkout@v2
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v1
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
- # ℹī¸ Command-line programs to run using the OS shell.
- # 📚 https://git.io/JvXDl
+ # ℹī¸ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
- # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
+ # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
- #- run: |
- # make bootstrap
- # make release
+ #- run: |
+ # make bootstrap
+ # make release
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/.standard.yml b/.standard.yml
new file mode 100644
index 0000000..227fe7b
--- /dev/null
+++ b/.standard.yml
@@ -0,0 +1,6 @@
+parallel: true
+ruby_version: 2.0
+ignore:
+ - 'diff-lcs.gemspec'
+ - 'research/**/*'
+ - 'pkg/**/*'
diff --git a/Gemfile b/Gemfile
index 7b9f817..2840096 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,19 +3,23 @@
# NOTE: This file is present to keep Travis CI happy. Edits to it will not
# be accepted.
-source 'https://rubygems.org/'
+source "https://rubygems.org/"
-if RUBY_VERSION < '1.9'
- gem 'hoe', '~> 3.20'
- gem 'rake', '< 11'
- gem 'rdoc', '< 4'
+if RUBY_VERSION < "1.9"
+ gem "hoe", "~> 3.20"
+ gem "rake", "< 11"
+ gem "rdoc", "< 4"
- gem 'ruby-debug'
-elsif RUBY_VERSION >= '2.0'
- if RUBY_ENGINE == 'ruby'
- gem 'simplecov', '~> 0.18'
+ gem "ruby-debug"
+end
+
+if RUBY_VERSION >= "2.0"
+ gem "standardrb"
+ gem "fasterer"
- gem 'byebug'
+ if RUBY_ENGINE == "ruby"
+ gem "simplecov", "~> 0.18"
+ gem "byebug"
end
end
diff --git a/History.md b/History.md
index a168d7e..a108b9f 100644
--- a/History.md
+++ b/History.md
@@ -4,6 +4,8 @@
- Updated the CI configuration, resolving [#82][].
+- Switched to standard ruby formatting.
+
## 1.5.0 / 2021-12-23
- Updated the CI configuration and monkey-patch Hoe.
diff --git a/Rakefile b/Rakefile
index fd7ee31..8179e81 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,9 +1,9 @@
# frozen_string_literal: true
-require 'rubygems'
-require 'rspec'
-require 'rspec/core/rake_task'
-require 'hoe'
+require "rubygems"
+require "rspec"
+require "rspec/core/rake_task"
+require "hoe"
# This is required until https://github.com/seattlerb/hoe/issues/112 is fixed
class Hoe
@@ -45,66 +45,71 @@ Hoe.plugin :doofus
Hoe.plugin :gemspec2
Hoe.plugin :git
-if RUBY_VERSION < '1.9'
- class Array #:nodoc:
+if RUBY_VERSION < "1.9"
+ class Array # :nodoc:
def to_h
Hash[*flatten(1)]
end
end
- class Gem::Specification #:nodoc:
- def metadata=(*); end
+ class Gem::Specification # :nodoc:
+ def metadata=(*)
+ end
- def default_value(*); end
+ def default_value(*)
+ end
end
- class Object #:nodoc:
+ class Object # :nodoc:
def caller_locations(*)
[]
end
end
end
-_spec = Hoe.spec 'diff-lcs' do
- developer('Austin Ziegler', 'halostatue@gmail.com')
+_spec = Hoe.spec "diff-lcs" do
+ developer("Austin Ziegler", "halostatue@gmail.com")
- require_ruby_version '>= 1.8'
+ require_ruby_version ">= 1.8"
- self.history_file = 'History.md'
- self.readme_file = 'README.rdoc'
- self.licenses = ['MIT', 'Artistic-2.0', 'GPL-2.0+']
+ self.history_file = "History.md"
+ self.readme_file = "README.rdoc"
+ self.licenses = ["MIT", "Artistic-2.0", "GPL-2.0+"]
- extra_dev_deps << ['hoe-doofus', '~> 1.0']
- extra_dev_deps << ['hoe-gemspec2', '~> 1.1']
- extra_dev_deps << ['hoe-git', '~> 1.6']
- extra_dev_deps << ['hoe-rubygems', '~> 1.0']
- extra_dev_deps << ['rspec', '>= 2.0', '< 4']
- extra_dev_deps << ['rake', '>= 10.0', '< 14']
- extra_dev_deps << ['rdoc', '>= 6.3.1', '< 7']
+ extra_dev_deps << ["hoe-doofus", "~> 1.0"]
+ extra_dev_deps << ["hoe-gemspec2", "~> 1.1"]
+ extra_dev_deps << ["hoe-git", "~> 1.6"]
+ extra_dev_deps << ["hoe-rubygems", "~> 1.0"]
+ extra_dev_deps << ["rspec", ">= 2.0", "< 4"]
+ extra_dev_deps << ["rake", ">= 10.0", "< 14"]
+ extra_dev_deps << ["rdoc", ">= 6.3.1", "< 7"]
end
desc "Run all specifications"
RSpec::Core::RakeTask.new(:spec) do |t|
- rspec_dirs = %w(spec lib).join(":")
+ rspec_dirs = %w[spec lib].join(":")
t.rspec_opts = ["-I#{rspec_dirs}"]
end
Rake::Task["spec"].actions.uniq! { |a| a.source_location }
+# standard:disable Style/HashSyntax
task :default => :spec unless Rake::Task["default"].prereqs.include?("spec")
task :test => :spec unless Rake::Task["test"].prereqs.include?("spec")
+# standard:enable Style/HashSyntax
-if RUBY_VERSION >= '2.0' && RUBY_ENGINE == 'ruby'
+if RUBY_VERSION >= "2.0" && RUBY_ENGINE == "ruby"
namespace :spec do
desc "Runs test coverage. Only works Ruby 2.0+ and assumes 'simplecov' is installed."
task :coverage do
- ENV['COVERAGE'] = 'yes'
- Rake::Task['spec'].execute
+ ENV["COVERAGE"] = "yes"
+ Rake::Task["spec"].execute
end
end
end
task :ruby18 do
+ # standard:disable Layout/HeredocIndentation
puts <<-MESSAGE
You are starting a barebones Ruby 1.8 docker environment. You will need to
do the following:
@@ -117,5 +122,6 @@ do the following:
Don't forget to restore your Gemfile.lock after testing.
MESSAGE
+ # standard:enable Layout/HeredocIndentation
sh "docker run -it --rm -v #{Dir.pwd}:/root/diff-lcs bellbind/docker-ruby18-rails2 bash -l"
end
diff --git a/bin/htmldiff b/bin/htmldiff
index 14114a7..bcd89d2 100755
--- a/bin/htmldiff
+++ b/bin/htmldiff
@@ -1,11 +1,11 @@
#! /usr/bin/env ruby -w
# frozen_string_literal: true
-require 'diff/lcs'
-require 'diff/lcs/htmldiff'
+require "diff/lcs"
+require "diff/lcs/htmldiff"
begin
- require 'text/format'
+ require "text/format"
rescue LoadError
Diff::LCS::HTMLDiff.can_expand_tabs = false
end
@@ -24,7 +24,7 @@ options = { :title => "diff #{ARGV[0]} #{ARGV[1]}" }
htmldiff = Diff::LCS::HTMLDiff.new(left, right, options)
if ARGV[2]
- File.open(ARGV[2], 'w') do |f|
+ File.open(ARGV[2], "w") do |f|
htmldiff.options[:output] = f
htmldiff.run
end
diff --git a/lib/diff-lcs.rb b/lib/diff-lcs.rb
index 250392f..bc07bf9 100644
--- a/lib/diff-lcs.rb
+++ b/lib/diff-lcs.rb
@@ -1,3 +1,3 @@
# frozen_string_literal: true
-require 'diff/lcs'
+require "diff/lcs"
diff --git a/lib/diff/lcs.rb b/lib/diff/lcs.rb
index 288cfc2..54ef893 100644
--- a/lib/diff/lcs.rb
+++ b/lib/diff/lcs.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module Diff; end unless defined? Diff # rubocop:disable Style/Documentation
+module Diff; end unless defined? Diff
# == How Diff Works (by Mark-Jason Dominus)
#
@@ -49,13 +49,13 @@ module Diff; end unless defined? Diff # rubocop:disable Style/Documentation
# a x b y c z p d q
# a b c a x b y c z
module Diff::LCS
- VERSION = '1.5.0'
+ VERSION = "1.5.0"
end
-require 'diff/lcs/callbacks'
-require 'diff/lcs/internals'
+require "diff/lcs/callbacks"
+require "diff/lcs/internals"
-module Diff::LCS # rubocop:disable Style/Documentation
+module Diff::LCS
# Returns an Array containing the longest common subsequence(s) between
# +self+ and +other+. See Diff::LCS#lcs.
#
@@ -67,7 +67,7 @@ module Diff::LCS # rubocop:disable Style/Documentation
# identically for key purposes. That is:
#
# O.new('a').eql?(O.new('a')) == true
- def lcs(other, &block) #:yields self[i] if there are matched subsequences:
+ def lcs(other, &block) # :yields: self[i] if there are matched subsequences
Diff::LCS.lcs(self, other, &block)
end
@@ -101,7 +101,7 @@ module Diff::LCS # rubocop:disable Style/Documentation
def patch(patchset)
Diff::LCS.patch(self, patchset)
end
- alias unpatch patch
+ alias_method :unpatch, :patch
# Attempts to patch +self+ with the provided +patchset+. A new sequence based
# on +self+ and the +patchset+ will be created. See Diff::LCS#patch. Does no
@@ -141,11 +141,11 @@ module Diff::LCS # rubocop:disable Style/Documentation
end
class << Diff::LCS
- def lcs(seq1, seq2, &block) #:yields seq1[i] for each matched:
+ def lcs(seq1, seq2, &block) # :yields: seq1[i] for each matched
matches = Diff::LCS::Internals.lcs(seq1, seq2)
ret = []
- string = seq1.kind_of? String
- matches.each_with_index do |_e, i|
+ string = seq1.is_a? String
+ matches.each_index do |i|
next if matches[i].nil?
v = string ? seq1[i, 1] : seq1[i]
@@ -154,7 +154,7 @@ class << Diff::LCS
end
ret
end
- alias LCS lcs
+ alias_method :LCS, :lcs
# #diff computes the smallest set of additions and deletions necessary to
# turn the first sequence into the second, and returns a description of these
@@ -165,7 +165,7 @@ class << Diff::LCS
# Class argument is provided for +callbacks+, #diff will attempt to
# initialise it. If the +callbacks+ object (possibly initialised) responds to
# #finish, it will be called.
- def diff(seq1, seq2, callbacks = nil, &block) # :yields diff changes:
+ def diff(seq1, seq2, callbacks = nil, &block) # :yields: diff changes
diff_traversal(:diff, seq1, seq2, callbacks || Diff::LCS::DiffCallbacks, &block)
end
@@ -197,7 +197,7 @@ class << Diff::LCS
# # insert
# end
# end
- def sdiff(seq1, seq2, callbacks = nil, &block) #:yields diff changes:
+ def sdiff(seq1, seq2, callbacks = nil, &block) # :yields: diff changes
diff_traversal(:sdiff, seq1, seq2, callbacks || Diff::LCS::SDiffCallbacks, &block)
end
@@ -282,12 +282,12 @@ class << Diff::LCS
# <tt>callbacks#discard_b</tt> will be called after the end of the sequence
# is reached, if +a+ has not yet reached the end of +A+ or +b+ has not yet
# reached the end of +B+.
- def traverse_sequences(seq1, seq2, callbacks = Diff::LCS::SequenceCallbacks) #:yields change events:
+ def traverse_sequences(seq1, seq2, callbacks = Diff::LCS::SequenceCallbacks) # :yields: change events
callbacks ||= Diff::LCS::SequenceCallbacks
matches = Diff::LCS::Internals.lcs(seq1, seq2)
run_finished_a = run_finished_b = false
- string = seq1.kind_of?(String)
+ string = seq1.is_a?(String)
a_size = seq1.size
b_size = seq2.size
@@ -299,7 +299,7 @@ class << Diff::LCS
ax = string ? seq1[ai, 1] : seq1[ai]
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("-", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_a(event)
end
@@ -310,13 +310,13 @@ class << Diff::LCS
break unless bj < b_line
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("+", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_b(event)
bj += 1
end
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('=', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("=", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.match(event)
bj += 1
@@ -326,13 +326,13 @@ class << Diff::LCS
# The last entry (if any) processed was a match. +ai+ and +bj+ point just
# past the last matching lines in their sequences.
- while (ai < a_size) or (bj < b_size)
+ while (ai < a_size) || (bj < b_size)
# last A?
- if ai == a_size and bj < b_size
- if callbacks.respond_to?(:finished_a) and !run_finished_a
+ if ai == a_size && bj < b_size
+ if callbacks.respond_to?(:finished_a) && !run_finished_a
ax = string ? seq1[-1, 1] : seq1[-1]
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('>', (a_size - 1), ax, bj, bx)
+ event = Diff::LCS::ContextChange.new(">", (a_size - 1), ax, bj, bx)
event = yield event if block_given?
callbacks.finished_a(event)
run_finished_a = true
@@ -340,7 +340,7 @@ class << Diff::LCS
ax = string ? seq1[ai, 1] : seq1[ai]
loop do
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("+", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_b(event)
bj += 1
@@ -350,11 +350,11 @@ class << Diff::LCS
end
# last B?
- if bj == b_size and ai < a_size
- if callbacks.respond_to?(:finished_b) and !run_finished_b
+ if bj == b_size && ai < a_size
+ if callbacks.respond_to?(:finished_b) && !run_finished_b
ax = string ? seq1[ai, 1] : seq1[ai]
bx = string ? seq2[-1, 1] : seq2[-1]
- event = Diff::LCS::ContextChange.new('<', ai, ax, (b_size - 1), bx)
+ event = Diff::LCS::ContextChange.new("<", ai, ax, (b_size - 1), bx)
event = yield event if block_given?
callbacks.finished_b(event)
run_finished_b = true
@@ -362,7 +362,7 @@ class << Diff::LCS
bx = string ? seq2[bj, 1] : seq2[bj]
loop do
ax = string ? seq1[ai, 1] : seq1[ai]
- event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("-", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_a(event)
ai += 1
@@ -374,7 +374,7 @@ class << Diff::LCS
if ai < a_size
ax = string ? seq1[ai, 1] : seq1[ai]
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("-", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_a(event)
ai += 1
@@ -383,7 +383,7 @@ class << Diff::LCS
if bj < b_size
ax = string ? seq1[ai, 1] : seq1[ai]
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("+", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_b(event)
bj += 1
@@ -478,14 +478,14 @@ class << Diff::LCS
b_size = seq2.size
ai = bj = mb = 0
ma = -1
- string = seq1.kind_of?(String)
+ string = seq1.is_a?(String)
# Process all the lines in the match vector.
loop do
# Find next match indices +ma+ and +mb+
loop do
ma += 1
- break unless ma < matches.size and matches[ma].nil?
+ break unless ma < matches.size && matches[ma].nil?
end
break if ma >= matches.size # end of matches?
@@ -493,36 +493,36 @@ class << Diff::LCS
mb = matches[ma]
# Change(seq2)
- while (ai < ma) or (bj < mb)
+ while (ai < ma) || (bj < mb)
ax = string ? seq1[ai, 1] : seq1[ai]
bx = string ? seq2[bj, 1] : seq2[bj]
case [(ai < ma), (bj < mb)]
when [true, true]
if callbacks.respond_to?(:change)
- event = Diff::LCS::ContextChange.new('!', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("!", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.change(event)
ai += 1
else
- event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("-", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_a(event)
ai += 1
ax = string ? seq1[ai, 1] : seq1[ai]
- event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("+", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_b(event)
end
bj += 1
when [true, false]
- event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("-", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_a(event)
ai += 1
when [false, true]
- event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("+", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_b(event)
bj += 1
@@ -532,43 +532,43 @@ class << Diff::LCS
# Match
ax = string ? seq1[ai, 1] : seq1[ai]
bx = string ? seq2[bj, 1] : seq2[bj]
- event = Diff::LCS::ContextChange.new('=', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("=", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.match(event)
ai += 1
bj += 1
end
- while (ai < a_size) or (bj < b_size)
+ while (ai < a_size) || (bj < b_size)
ax = string ? seq1[ai, 1] : seq1[ai]
bx = string ? seq2[bj, 1] : seq2[bj]
case [(ai < a_size), (bj < b_size)]
when [true, true]
if callbacks.respond_to?(:change)
- event = Diff::LCS::ContextChange.new('!', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("!", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.change(event)
ai += 1
else
- event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("-", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_a(event)
ai += 1
ax = string ? seq1[ai, 1] : seq1[ai]
- event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("+", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_b(event)
end
bj += 1
when [true, false]
- event = Diff::LCS::ContextChange.new('-', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("-", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_a(event)
ai += 1
when [false, true]
- event = Diff::LCS::ContextChange.new('+', ai, ax, bj, bx)
+ event = Diff::LCS::ContextChange.new("+", ai, ax, bj, bx)
event = yield event if block_given?
callbacks.discard_b(event)
bj += 1
@@ -576,10 +576,12 @@ class << Diff::LCS
end
end
- PATCH_MAP = { #:nodoc:
- :patch => { '+' => '+', '-' => '-', '!' => '!', '=' => '=' }.freeze,
- :unpatch => { '+' => '-', '-' => '+', '!' => '!', '=' => '=' }.freeze
+ # standard:disable Style/HashSyntax
+ PATCH_MAP = { # :nodoc:
+ :patch => {"+" => "+", "-" => "-", "!" => "!", "=" => "="}.freeze,
+ :unpatch => {"+" => "-", "-" => "+", "!" => "!", "=" => "="}.freeze
}.freeze
+ # standard:enable Style/HashSyntax
# Applies a +patchset+ to the sequence +src+ according to the +direction+
# (<tt>:patch</tt> or <tt>:unpatch</tt>), producing a new sequence.
@@ -627,7 +629,7 @@ class << Diff::LCS
return src.respond_to?(:dup) ? src.dup : src unless has_changes
- string = src.kind_of?(String)
+ string = src.is_a?(String)
# Start with a new empty type of the source's class
res = src.class.new
@@ -655,14 +657,14 @@ class << Diff::LCS
end
case action
- when '-' # Remove details from the old string
+ when "-" # Remove details from the old string
while ai < op
res << (string ? src[ai, 1] : src[ai])
ai += 1
bj += 1
end
ai += 1
- when '+'
+ when "+"
while bj < np
res << (string ? src[ai, 1] : src[ai])
ai += 1
@@ -671,7 +673,7 @@ class << Diff::LCS
res << el
bj += 1
- when '='
+ when "="
# This only appears in sdiff output with the SDiff callback.
# Therefore, we only need to worry about dealing with a single
# element.
@@ -679,7 +681,7 @@ class << Diff::LCS
ai += 1
bj += 1
- when '!'
+ when "!"
while ai < op
res << (string ? src[ai, 1] : src[ai])
ai += 1
@@ -693,14 +695,14 @@ class << Diff::LCS
end
when Diff::LCS::Change
case action
- when '-'
+ when "-"
while ai < change.position
res << (string ? src[ai, 1] : src[ai])
ai += 1
bj += 1
end
ai += 1
- when '+'
+ when "+"
while bj < change.position
res << (string ? src[ai, 1] : src[ai])
ai += 1
@@ -736,4 +738,4 @@ class << Diff::LCS
end
end
-require 'diff/lcs/backports'
+require "diff/lcs/backports"
diff --git a/lib/diff/lcs/array.rb b/lib/diff/lcs/array.rb
index 5c250f6..663918a 100644
--- a/lib/diff/lcs/array.rb
+++ b/lib/diff/lcs/array.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-require 'diff/lcs'
+require "diff/lcs"
class Array
include Diff::LCS
diff --git a/lib/diff/lcs/backports.rb b/lib/diff/lcs/backports.rb
index 642fc9c..3d2a768 100644
--- a/lib/diff/lcs/backports.rb
+++ b/lib/diff/lcs/backports.rb
@@ -1,9 +1,9 @@
# frozen_string_literal: true
unless 0.respond_to?(:positive?)
- class Fixnum # rubocop:disable Lint/UnifiedInteger, Style/Documentation
+ class Fixnum # standard:disable Lint/UnifiedInteger
def positive?
- self > 0 # rubocop:disable Style/NumericPredicate
+ self > 0
end
end
end
diff --git a/lib/diff/lcs/block.rb b/lib/diff/lcs/block.rb
index 430702d..226ed6f 100644
--- a/lib/diff/lcs/block.rb
+++ b/lib/diff/lcs/block.rb
@@ -25,13 +25,13 @@ class Diff::LCS::Block
def op
case [@remove.empty?, @insert.empty?]
when [false, false]
- '!'
+ "!"
when [false, true]
- '-'
+ "-"
when [true, false]
- '+'
+ "+"
else # [true, true]
- '^'
+ "^"
end
end
end
diff --git a/lib/diff/lcs/callbacks.rb b/lib/diff/lcs/callbacks.rb
index 2a7665b..2c5a779 100644
--- a/lib/diff/lcs/callbacks.rb
+++ b/lib/diff/lcs/callbacks.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
-require 'diff/lcs/change'
+require "diff/lcs/change"
-module Diff::LCS # rubocop:disable Style/Documentation
+module Diff::LCS
# This callback object implements the default set of callback events,
# which only returns the event itself. Note that #finished_a and
# #finished_b are not implemented -- I haven't yet figured out where they
@@ -50,7 +50,9 @@ module Diff::LCS # rubocop:disable Style/Documentation
BalancedCallbacks = DefaultCallbacks
def self.callbacks_for(callbacks)
- callbacks.new rescue callbacks
+ callbacks.new
+ rescue
+ callbacks
end
end
@@ -107,7 +109,7 @@ class Diff::LCS::DiffCallbacks
# Returns the difference set collected during the diff process.
attr_reader :diffs
- def initialize # :yields self:
+ def initialize # :yields: self
@hunk = []
@diffs = []
@@ -131,11 +133,11 @@ class Diff::LCS::DiffCallbacks
end
def discard_a(event)
- @hunk << Diff::LCS::Change.new('-', event.old_position, event.old_element)
+ @hunk << Diff::LCS::Change.new("-", event.old_position, event.old_element)
end
def discard_b(event)
- @hunk << Diff::LCS::Change.new('+', event.new_position, event.new_element)
+ @hunk << Diff::LCS::Change.new("+", event.new_position, event.new_element)
end
def finish_hunk
@@ -302,7 +304,7 @@ class Diff::LCS::SDiffCallbacks
# Returns the difference set collected during the diff process.
attr_reader :diffs
- def initialize #:yields self:
+ def initialize # :yields: self
@diffs = []
yield self if block_given?
end
diff --git a/lib/diff/lcs/change.rb b/lib/diff/lcs/change.rb
index 76faf83..c86f102 100644
--- a/lib/diff/lcs/change.rb
+++ b/lib/diff/lcs/change.rb
@@ -10,7 +10,7 @@ class Diff::LCS::Change
# (no change), '!' (changed), '<' (tail changes from first sequence), or
# '>' (tail changes from second sequence). The last two ('<>') are only
# found with Diff::LCS::diff and Diff::LCS::sdiff.
- VALID_ACTIONS = %w(+ - = ! > <).freeze
+ VALID_ACTIONS = %w[+ - = ! > <].freeze
def self.valid_action?(action)
VALID_ACTIONS.include? action
@@ -28,7 +28,7 @@ class Diff::LCS::Change
@action, @position, @element = *args
fail "Invalid Change Action '#{@action}'" unless Diff::LCS::Change.valid_action?(@action)
- fail 'Invalid Position Type' unless @position.kind_of? IntClass
+ fail "Invalid Position Type" unless @position.is_a? IntClass
end
def inspect(*_args)
@@ -39,7 +39,7 @@ class Diff::LCS::Change
[@action, @position, @element]
end
- alias to_ary to_a
+ alias_method :to_ary, :to_a
def self.from_a(arr)
arr = arr.flatten(1)
@@ -49,7 +49,7 @@ class Diff::LCS::Change
when 3
Diff::LCS::Change.new(*(arr[0...3]))
else
- fail 'Invalid change array format provided.'
+ fail "Invalid change array format provided."
end
end
@@ -70,27 +70,27 @@ class Diff::LCS::Change
end
def adding?
- @action == '+'
+ @action == "+"
end
def deleting?
- @action == '-'
+ @action == "-"
end
def unchanged?
- @action == '='
+ @action == "="
end
def changed?
- @action == '!'
+ @action == "!"
end
def finished_a?
- @action == '>'
+ @action == ">"
end
def finished_b?
- @action == '<'
+ @action == "<"
end
end
@@ -115,8 +115,8 @@ class Diff::LCS::ContextChange < Diff::LCS::Change
@action, @old_position, @old_element, @new_position, @new_element = *args
fail "Invalid Change Action '#{@action}'" unless Diff::LCS::Change.valid_action?(@action)
- fail 'Invalid (Old) Position Type' unless @old_position.nil? or @old_position.kind_of? IntClass
- fail 'Invalid (New) Position Type' unless @new_position.nil? or @new_position.kind_of? IntClass
+ fail "Invalid (Old) Position Type" unless @old_position.nil? || @old_position.is_a?(IntClass)
+ fail "Invalid (New) Position Type" unless @new_position.nil? || @new_position.is_a?(IntClass)
end
def to_a
@@ -127,7 +127,7 @@ class Diff::LCS::ContextChange < Diff::LCS::Change
]
end
- alias to_ary to_a
+ alias_method :to_ary, :to_a
def self.from_a(arr)
Diff::LCS::Change.from_a(arr)
@@ -139,15 +139,15 @@ class Diff::LCS::ContextChange < Diff::LCS::Change
ea = event.to_a
case ea[0]
- when '-'
+ when "-"
ea[2][1] = nil
- when '<'
- ea[0] = '-'
+ when "<"
+ ea[0] = "-"
ea[2][1] = nil
- when '+'
+ when "+"
ea[1][1] = nil
- when '>'
- ea[0] = '+'
+ when ">"
+ ea[0] = "+"
ea[1][1] = nil
end
diff --git a/lib/diff/lcs/htmldiff.rb b/lib/diff/lcs/htmldiff.rb
index f12220b..54adc2a 100644
--- a/lib/diff/lcs/htmldiff.rb
+++ b/lib/diff/lcs/htmldiff.rb
@@ -1,15 +1,15 @@
# frozen_string_literal: true
-require 'cgi'
+require "cgi"
# Produce a simple HTML diff view.
class Diff::LCS::HTMLDiff
class << self
- attr_accessor :can_expand_tabs #:nodoc:
+ attr_accessor :can_expand_tabs # :nodoc:
end
self.can_expand_tabs = true
- class Callbacks #:nodoc:
+ class Callbacks # :nodoc:
attr_accessor :output
attr_accessor :match_class
attr_accessor :only_a_class
@@ -19,14 +19,14 @@ class Diff::LCS::HTMLDiff
@output = output
options ||= {}
- @match_class = options[:match_class] || 'match'
- @only_a_class = options[:only_a_class] || 'only_a'
- @only_b_class = options[:only_b_class] || 'only_b'
+ @match_class = options[:match_class] || "match"
+ @only_a_class = options[:only_a_class] || "only_a"
+ @only_b_class = options[:only_b_class] || "only_b"
end
def htmlize(element, css_class)
- element = '&nbsp;' if element.empty?
- %Q(<pre class="#{__send__(css_class)}">#{element}</pre>\n)
+ element = "&nbsp;" if element.empty?
+ %(<pre class="#{__send__(css_class)}">#{element}</pre>\n)
end
private :htmlize
@@ -46,13 +46,16 @@ class Diff::LCS::HTMLDiff
end
end
+ # standard:disable Style/HashSyntax
DEFAULT_OPTIONS = {
:expand_tabs => nil,
:output => nil,
:css => nil,
:title => nil
}.freeze
+ # standard:enable Style/HashSyntax
+ # standard:disable Layout/HeredocIndentation
DEFAULT_CSS = <<-CSS
body { margin: 0; }
.diff
@@ -86,11 +89,12 @@ pre
}
h1 { margin-left: 2em; }
CSS
+ # standard:enable Layout/HeredocIndentation
def initialize(left, right, options = nil)
- @left = left
- @right = right
- @options = options
+ @left = left
+ @right = right
+ @options = options
@options = DEFAULT_OPTIONS.dup if @options.nil?
end
@@ -103,7 +107,7 @@ h1 { margin-left: 2em; }
@options[:css] ||= DEFAULT_CSS.dup
- @options[:title] ||= 'diff'
+ @options[:title] ||= "diff"
end
private :verify_options
@@ -116,13 +120,14 @@ h1 { margin-left: 2em; }
formatter = Text::Format.new
formatter.tabstop = @options[:expand_tabs]
- @left.map! do |line| formatter.expand(line.chomp) end
- @right.map! do |line| formatter.expand(line.chomp) end
+ @left.map! { |line| formatter.expand(line.chomp) }
+ @right.map! { |line| formatter.expand(line.chomp) }
end
- @left.map! do |line| CGI.escapeHTML(line.chomp) end
- @right.map! do |line| CGI.escapeHTML(line.chomp) end
+ @left.map! { |line| CGI.escapeHTML(line.chomp) }
+ @right.map! { |line| CGI.escapeHTML(line.chomp) }
+ # standard:disable Layout/HeredocIndentation
@options[:output] << <<-OUTPUT
<html>
<head>
@@ -137,14 +142,17 @@ h1 { margin-left: 2em; }
<span class="only_b">Only in New</span></p>
<div class="diff">
OUTPUT
+ # standard:enable Layout/HeredocIndentation
callbacks = Callbacks.new(@options[:output])
Diff::LCS.traverse_sequences(@left, @right, callbacks)
+ # standard:disable Layout/HeredocIndentation
@options[:output] << <<-OUTPUT
</div>
</body>
</html>
OUTPUT
+ # standard:enable Layout/HeredocIndentation
end
end
diff --git a/lib/diff/lcs/hunk.rb b/lib/diff/lcs/hunk.rb
index 49b520e..2cef5ed 100644
--- a/lib/diff/lcs/hunk.rb
+++ b/lib/diff/lcs/hunk.rb
@@ -1,13 +1,13 @@
# frozen_string_literal: true
-require 'diff/lcs/block'
+require "diff/lcs/block"
# A Hunk is a group of Blocks which overlap because of the context surrounding
# each block. (So if we're not using context, every hunk will contain one
# block.) Used in the diff program (bin/ldiff).
class Diff::LCS::Hunk
- OLD_DIFF_OP_ACTION = { '+' => 'a', '-' => 'd', '!' => 'c' }.freeze #:nodoc:
- ED_DIFF_OP_ACTION = { '+' => 'a', '-' => 'd', '!' => 'c' }.freeze #:nodoc:
+ OLD_DIFF_OP_ACTION = {"+" => "a", "-" => "d", "!" => "c"}.freeze # :nodoc:
+ ED_DIFF_OP_ACTION = {"+" => "a", "-" => "d", "!" => "c"}.freeze # :nodoc:
private_constant :OLD_DIFF_OP_ACTION, :ED_DIFF_OP_ACTION if respond_to?(:private_constant)
@@ -22,7 +22,7 @@ class Diff::LCS::Hunk
end
if String.method_defined?(:encoding)
- @preferred_data_encoding = data_old.fetch(0, data_new.fetch(0, '')).encoding
+ @preferred_data_encoding = data_old.fetch(0) { data_new.fetch(0, "") }.encoding
end
@data_old = data_old
@@ -33,7 +33,6 @@ class Diff::LCS::Hunk
@file_length_difference = after # The caller must get this manually
@max_diff_size = @blocks.map { |e| e.diff_size.abs }.max
-
# Save the start & end of each array. If the array doesn't exist (e.g.,
# we're only adding items in this block), then figure out the line number
# based on the line number of the other file and the current difference in
@@ -54,8 +53,8 @@ class Diff::LCS::Hunk
@start_old = a1 || (b1 - before)
@start_new = b1 || (a1 + before)
- @end_old = a2 || (b2 - after)
- @end_new = b2 || (a2 + after)
+ @end_old = a2 || (b2 - after)
+ @end_new = b2 || (a2 + after)
self.flag_context = flag_context
end
@@ -67,10 +66,10 @@ class Diff::LCS::Hunk
# Change the "start" and "end" fields to note that context should be added
# to this hunk.
- attr_accessor :flag_context # rubocop:disable Layout/EmptyLinesAroundAttributeAccessor
+ attr_accessor :flag_context
undef :flag_context=
- def flag_context=(context) #:nodoc: # rubocop:disable Lint/DuplicateMethods
- return if context.nil? or context.zero?
+ def flag_context=(context) # :nodoc: # standard:disable Lint/DuplicateMethods
+ return if context.nil? || context.zero?
add_start = context > @start_old ? @start_old : context
@@ -102,7 +101,7 @@ class Diff::LCS::Hunk
@start_new = hunk.start_new
blocks.unshift(*hunk.blocks)
end
- alias unshift merge
+ alias_method :unshift, :merge
# Determines whether there is an overlap between this hunk and the
# provided hunk. This will be true if the difference between the two hunks
@@ -133,24 +132,24 @@ class Diff::LCS::Hunk
# Note that an old diff can't have any context. Therefore, we know that
# there's only one block in the hunk.
def old_diff(_last = false)
- warn 'Expecting only one block in an old diff hunk!' if @blocks.size > 1
+ warn "Expecting only one block in an old diff hunk!" if @blocks.size > 1
block = @blocks[0]
# Calculate item number range. Old diff range is just like a context
# diff range, except the ranges are on one line with the action between
# them.
- s = encode("#{context_range(:old, ',')}#{OLD_DIFF_OP_ACTION[block.op]}#{context_range(:new, ',')}\n")
+ s = encode("#{context_range(:old, ",")}#{OLD_DIFF_OP_ACTION[block.op]}#{context_range(:new, ",")}\n")
# If removing anything, just print out all the remove lines in the hunk
# which is just all the remove lines in the block.
unless block.remove.empty?
- @data_old[@start_old..@end_old].each { |e| s << encode('< ') + e.chomp + encode("\n") }
+ @data_old[@start_old..@end_old].each { |e| s << encode("< ") + e.chomp + encode("\n") }
end
- s << encode("---\n") if block.op == '!'
+ s << encode("---\n") if block.op == "!"
unless block.insert.empty?
- @data_new[@start_new..@end_new].each { |e| s << encode('> ') + e.chomp + encode("\n") }
+ @data_new[@start_new..@end_new].each { |e| s << encode("> ") + e.chomp + encode("\n") }
end
s
@@ -172,7 +171,9 @@ class Diff::LCS::Hunk
# file -- don't take removed items into account.
lo, hi, num_added, num_removed = @start_old, @end_old, 0, 0
- outlist = @data_old[lo..hi].map { |e| String.new("#{encode(' ')}#{e.chomp}") }
+ # standard:disable Performance/UnfreezeString
+ outlist = @data_old[lo..hi].map { |e| String.new("#{encode(" ")}#{e.chomp}") }
+ # standard:enable Performance/UnfreezeString
last_block = blocks[-1]
@@ -183,7 +184,7 @@ class Diff::LCS::Hunk
@blocks.each do |block|
block.remove.each do |item|
- op = item.action.to_s # -
+ op = item.action.to_s # -
offset = item.position - lo + num_added
outlist[offset][0, 1] = encode(op)
num_removed += 1
@@ -195,7 +196,7 @@ class Diff::LCS::Hunk
end
block.insert.each do |item|
- op = item.action.to_s # +
+ op = item.action.to_s # +
offset = item.position - @start_new + num_removed
outlist[offset, 0] = encode(op) + @data_new[item.position].chomp
num_added += 1
@@ -212,8 +213,8 @@ class Diff::LCS::Hunk
def context_diff(last = false)
s = encode("***************\n")
- s << encode("*** #{context_range(:old, ',', last)} ****\n")
- r = context_range(:new, ',', last)
+ s << encode("*** #{context_range(:old, ",", last)} ****\n")
+ r = context_range(:new, ",", last)
if last
old_missing_newline = missing_last_newline?(@data_old)
@@ -226,7 +227,9 @@ class Diff::LCS::Hunk
removes = @blocks.reject { |e| e.remove.empty? }
unless removes.empty?
- outlist = @data_old[lo..hi].map { |e| String.new("#{encode(' ')}#{e.chomp}") }
+ # standard:disable Performance/UnfreezeString
+ outlist = @data_old[lo..hi].map { |e| String.new("#{encode(" ")}#{e.chomp}") }
+ # standard:enable Performance/UnfreezeString
last_block = removes[-1]
@@ -248,7 +251,9 @@ class Diff::LCS::Hunk
inserts = @blocks.reject { |e| e.insert.empty? }
unless inserts.empty?
- outlist = @data_new[lo..hi].map { |e| String.new("#{encode(' ')}#{e.chomp}") }
+ # standard:disable Performance/UnfreezeString
+ outlist = @data_new[lo..hi].map { |e| String.new("#{encode(" ")}#{e.chomp}") }
+ # standard:enable Performance/UnfreezeString
last_block = inserts[-1]
@@ -269,13 +274,13 @@ class Diff::LCS::Hunk
private :context_diff
def ed_diff(format, _last = false)
- warn 'Expecting only one block in an old diff hunk!' if @blocks.size > 1
+ warn "Expecting only one block in an old diff hunk!" if @blocks.size > 1
s =
if format == :reverse_ed
- encode("#{ED_DIFF_OP_ACTION[@blocks[0].op]}#{context_range(:old, ',')}\n")
+ encode("#{ED_DIFF_OP_ACTION[@blocks[0].op]}#{context_range(:old, ",")}\n")
else
- encode("#{context_range(:old, ' ')}#{ED_DIFF_OP_ACTION[@blocks[0].op]}\n")
+ encode("#{context_range(:old, " ")}#{ED_DIFF_OP_ACTION[@blocks[0].op]}\n")
end
unless @blocks[0].insert.empty?
diff --git a/lib/diff/lcs/internals.rb b/lib/diff/lcs/internals.rb
index ef77667..8a9160a 100644
--- a/lib/diff/lcs/internals.rb
+++ b/lib/diff/lcs/internals.rb
@@ -13,7 +13,7 @@ class << Diff::LCS
if block
callbacks.diffs.map do |hunk|
- if hunk.kind_of? Array
+ if hunk.is_a? Array
hunk.map { |hunk_block| block[hunk_block] }
else
block[hunk]
@@ -45,14 +45,14 @@ class << Diff::LCS::Internals
vector = []
# Collect any common elements at the beginning...
- while (a_start <= a_finish) and (b_start <= b_finish) and (a[a_start] == b[b_start])
+ while (a_start <= a_finish) && (b_start <= b_finish) && (a[a_start] == b[b_start])
vector[a_start] = b_start
a_start += 1
b_start += 1
end
# Now the end...
- while (a_start <= a_finish) and (b_start <= b_finish) and (a[a_finish] == b[b_finish])
+ while (a_start <= a_finish) && (b_start <= b_finish) && (a[a_finish] == b[b_finish])
vector[a_finish] = b_finish
a_finish -= 1
b_finish -= 1
@@ -63,8 +63,8 @@ class << Diff::LCS::Internals
b_matches = position_hash(b, b_start..b_finish)
thresh = []
- links = []
- string = a.kind_of?(String)
+ links = []
+ string = a.is_a?(String)
(a_start..a_finish).each do |i|
ai = string ? a[i, 1] : a[i]
@@ -75,7 +75,7 @@ class << Diff::LCS::Internals
# it may have an optimization purpose
# An attempt to remove it: https://github.com/halostatue/diff-lcs/pull/72
# Why it is reintroduced: https://github.com/halostatue/diff-lcs/issues/78
- if k and (thresh[k] > j) and (thresh[k - 1] < j)
+ if k && (thresh[k] > j) && (thresh[k - 1] < j)
thresh[k] = j
else
k = replace_next_larger(thresh, j, k)
@@ -100,7 +100,7 @@ class << Diff::LCS::Internals
# the object form of same) and detection of whether the patchset represents
# changes to be made.
def analyze_patchset(patchset, depth = 0)
- fail 'Patchset too complex' if depth > 1
+ fail "Patchset too complex" if depth > 1
has_changes = false
new_patchset = []
@@ -145,7 +145,7 @@ class << Diff::LCS::Internals
# Diff::LCS::Change as its source, as an array will cause the creation
# of one of the above.
def intuit_diff_direction(src, patchset, limit = nil)
- string = src.kind_of?(String)
+ string = src.is_a?(String)
count = left_match = left_miss = right_match = right_miss = 0
patchset.each do |change|
@@ -157,22 +157,22 @@ class << Diff::LCS::Internals
re = string ? src[change.new_position, 1] : src[change.new_position]
case change.action
- when '-' # Remove details from the old string
+ when "-" # Remove details from the old string
if le == change.old_element
left_match += 1
else
left_miss += 1
end
- when '+'
+ when "+"
if re == change.new_element
right_match += 1
else
right_miss += 1
end
- when '='
+ when "="
left_miss += 1 if le != change.old_element
right_miss += 1 if re != change.new_element
- when '!'
+ when "!"
if le == change.old_element
left_match += 1
elsif re == change.new_element
@@ -189,19 +189,19 @@ class << Diff::LCS::Internals
element = string ? src[change.position, 1] : src[change.position]
case change.action
- when '-'
+ when "-"
if element == change.element
left_match += 1
else
left_miss += 1
end
- when '+'
+ when "+"
if element == change.element
right_match += 1
else
right_miss += 1
end
- when '='
+ when "="
if element != change.element
left_miss += 1
right_miss += 1
@@ -251,7 +251,7 @@ enumerable as either source or destination value."
# This operation preserves the sort order.
def replace_next_larger(enum, value, last_index = nil)
# Off the end?
- if enum.empty? or (value > enum[-1])
+ if enum.empty? || (value > enum[-1])
enum << value
return enum.size - 1
end
@@ -296,7 +296,7 @@ enumerable as either source or destination value."
# positions it occupies in the Enumerable, optionally restricted to the
# elements specified in the range of indexes specified by +interval+.
def position_hash(enum, interval)
- string = enum.kind_of?(String)
+ string = enum.is_a?(String)
hash = Hash.new { |h, k| h[k] = [] }
interval.each do |i|
k = string ? enum[i, 1] : enum[i]
diff --git a/lib/diff/lcs/ldiff.rb b/lib/diff/lcs/ldiff.rb
index 17b374c..961458c 100644
--- a/lib/diff/lcs/ldiff.rb
+++ b/lib/diff/lcs/ldiff.rb
@@ -1,10 +1,11 @@
# frozen_string_literal: true
-require 'optparse'
-require 'ostruct'
-require 'diff/lcs/hunk'
+require "optparse"
+require "ostruct"
+require "diff/lcs/hunk"
-module Diff::LCS::Ldiff #:nodoc:
+module Diff::LCS::Ldiff # :nodoc:
+ # standard:disable Layout/HeredocIndentation
BANNER = <<-COPYRIGHT
ldiff #{Diff::LCS::VERSION}
Copyright 2004-2019 Austin Ziegler
@@ -16,60 +17,61 @@ ldiff #{Diff::LCS::VERSION}
the terms of the GPL version 2 (or later), the Perl Artistic licence, or the
MIT licence.
COPYRIGHT
+ # standard:enable Layout/HeredocIndentation
end
class << Diff::LCS::Ldiff
- attr_reader :format, :lines #:nodoc:
- attr_reader :file_old, :file_new #:nodoc:
- attr_reader :data_old, :data_new #:nodoc:
+ attr_reader :format, :lines # :nodoc:
+ attr_reader :file_old, :file_new # :nodoc:
+ attr_reader :data_old, :data_new # :nodoc:
- def run(args, _input = $stdin, output = $stdout, error = $stderr) #:nodoc:
+ def run(args, _input = $stdin, output = $stdout, error = $stderr) # :nodoc:
@binary = nil
args.options do |o|
o.banner = "Usage: #{File.basename($0)} [options] oldfile newfile"
- o.separator ''
+ o.separator ""
o.on(
- '-c', '-C', '--context [LINES]', Integer,
- 'Displays a context diff with LINES lines', 'of context. Default 3 lines.'
+ "-c", "-C", "--context [LINES]", Integer,
+ "Displays a context diff with LINES lines", "of context. Default 3 lines."
) do |ctx|
@format = :context
- @lines = ctx || 3
+ @lines = ctx || 3
end
o.on(
- '-u', '-U', '--unified [LINES]', Integer,
- 'Displays a unified diff with LINES lines', 'of context. Default 3 lines.'
+ "-u", "-U", "--unified [LINES]", Integer,
+ "Displays a unified diff with LINES lines", "of context. Default 3 lines."
) do |ctx|
@format = :unified
- @lines = ctx || 3
+ @lines = ctx || 3
end
- o.on('-e', 'Creates an \'ed\' script to change', 'oldfile to newfile.') do |_ctx|
+ o.on("-e", "Creates an 'ed' script to change", "oldfile to newfile.") do |_ctx|
@format = :ed
end
- o.on('-f', 'Creates an \'ed\' script to change', 'oldfile to newfile in reverse order.') do |_ctx|
+ o.on("-f", "Creates an 'ed' script to change", "oldfile to newfile in reverse order.") do |_ctx|
@format = :reverse_ed
end
o.on(
- '-a', '--text',
- 'Treat the files as text and compare them', 'line-by-line, even if they do not seem', 'to be text.'
+ "-a", "--text",
+ "Treat the files as text and compare them", "line-by-line, even if they do not seem", "to be text."
) do |_txt|
@binary = false
end
- o.on('--binary', 'Treats the files as binary.') do |_bin|
+ o.on("--binary", "Treats the files as binary.") do |_bin|
@binary = true
end
- o.on('-q', '--brief', 'Report only whether or not the files', 'differ, not the details.') do |_ctx|
+ o.on("-q", "--brief", "Report only whether or not the files", "differ, not the details.") do |_ctx|
@format = :report
end
- o.on_tail('--help', 'Shows this text.') do
+ o.on_tail("--help", "Shows this text.") do
error << o
return 0
end
- o.on_tail('--version', 'Shows the version of Diff::LCS.') do
+ o.on_tail("--version", "Shows the version of Diff::LCS.") do
error << Diff::LCS::Ldiff::BANNER
return 0
end
- o.on_tail ''
+ o.on_tail ""
o.on_tail 'By default, runs produces an "old-style" diff, with output like UNIX diff.'
o.parse!
end
@@ -81,17 +83,17 @@ class << Diff::LCS::Ldiff
# Defaults are for old-style diff
@format ||= :old
- @lines ||= 0
+ @lines ||= 0
file_old, file_new = *ARGV
case @format
when :context
- char_old = '*' * 3
- char_new = '-' * 3
+ char_old = "*" * 3
+ char_new = "-" * 3
when :unified
- char_old = '-' * 3
- char_new = '+' * 3
+ char_old = "-" * 3
+ char_new = "+" * 3
end
# After we've read up to a certain point in each file, the number of
@@ -128,10 +130,10 @@ class << Diff::LCS::Ldiff
return 1
end
- if (@format == :unified) or (@format == :context)
- ft = File.stat(file_old).mtime.localtime.strftime('%Y-%m-%d %H:%M:%S.000000000 %z')
+ if (@format == :unified) || (@format == :context)
+ ft = File.stat(file_old).mtime.localtime.strftime("%Y-%m-%d %H:%M:%S.000000000 %z")
output << "#{char_old} #{file_old}\t#{ft}\n"
- ft = File.stat(file_new).mtime.localtime.strftime('%Y-%m-%d %H:%M:%S.000000000 %z')
+ ft = File.stat(file_new).mtime.localtime.strftime("%Y-%m-%d %H:%M:%S.000000000 %z")
output << "#{char_new} #{file_new}\t#{ft}\n"
end
@@ -150,7 +152,7 @@ class << Diff::LCS::Ldiff
file_length_difference = hunk.file_length_difference
next unless oldhunk
- next if @lines.positive? and hunk.merge(oldhunk)
+ next if @lines.positive? && hunk.merge(oldhunk)
output << oldhunk.diff(@format)
output << "\n" if @format == :unified
diff --git a/spec/change_spec.rb b/spec/change_spec.rb
index b8d3443..42533ae 100644
--- a/spec/change_spec.rb
+++ b/spec/change_spec.rb
@@ -1,89 +1,89 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
describe Diff::LCS::Change do
- describe 'an add' do
- subject { described_class.new('+', 0, 'element') }
- it { should_not be_deleting }
- it { should be_adding }
- it { should_not be_unchanged }
- it { should_not be_changed }
+ describe "an add" do
+ subject { described_class.new("+", 0, "element") }
+ it { should_not be_deleting }
+ it { should be_adding }
+ it { should_not be_unchanged }
+ it { should_not be_changed }
it { should_not be_finished_a }
it { should_not be_finished_b }
end
- describe 'a delete' do
- subject { described_class.new('-', 0, 'element') }
- it { should be_deleting }
- it { should_not be_adding }
- it { should_not be_unchanged }
- it { should_not be_changed }
+ describe "a delete" do
+ subject { described_class.new("-", 0, "element") }
+ it { should be_deleting }
+ it { should_not be_adding }
+ it { should_not be_unchanged }
+ it { should_not be_changed }
it { should_not be_finished_a }
it { should_not be_finished_b }
end
- describe 'an unchanged' do
- subject { described_class.new('=', 0, 'element') }
- it { should_not be_deleting }
- it { should_not be_adding }
- it { should be_unchanged }
- it { should_not be_changed }
+ describe "an unchanged" do
+ subject { described_class.new("=", 0, "element") }
+ it { should_not be_deleting }
+ it { should_not be_adding }
+ it { should be_unchanged }
+ it { should_not be_changed }
it { should_not be_finished_a }
it { should_not be_finished_b }
end
- describe 'a changed' do
- subject { described_class.new('!', 0, 'element') }
- it { should_not be_deleting }
- it { should_not be_adding }
- it { should_not be_unchanged }
- it { should be_changed }
+ describe "a changed" do
+ subject { described_class.new("!", 0, "element") }
+ it { should_not be_deleting }
+ it { should_not be_adding }
+ it { should_not be_unchanged }
+ it { should be_changed }
it { should_not be_finished_a }
it { should_not be_finished_b }
end
- describe 'a finished_a' do
- subject { described_class.new('>', 0, 'element') }
- it { should_not be_deleting }
- it { should_not be_adding }
- it { should_not be_unchanged }
- it { should_not be_changed }
- it { should be_finished_a }
+ describe "a finished_a" do
+ subject { described_class.new(">", 0, "element") }
+ it { should_not be_deleting }
+ it { should_not be_adding }
+ it { should_not be_unchanged }
+ it { should_not be_changed }
+ it { should be_finished_a }
it { should_not be_finished_b }
end
- describe 'a finished_b' do
- subject { described_class.new('<', 0, 'element') }
- it { should_not be_deleting }
- it { should_not be_adding }
- it { should_not be_unchanged }
- it { should_not be_changed }
+ describe "a finished_b" do
+ subject { described_class.new("<", 0, "element") }
+ it { should_not be_deleting }
+ it { should_not be_adding }
+ it { should_not be_unchanged }
+ it { should_not be_changed }
it { should_not be_finished_a }
- it { should be_finished_b }
+ it { should be_finished_b }
end
- describe 'as array' do
- it 'should be converted' do
- action, position, element = described_class.new('!', 0, 'element')
- expect(action).to eq '!'
+ describe "as array" do
+ it "should be converted" do
+ action, position, element = described_class.new("!", 0, "element")
+ expect(action).to eq "!"
expect(position).to eq 0
- expect(element).to eq 'element'
+ expect(element).to eq "element"
end
end
end
describe Diff::LCS::ContextChange do
- describe 'as array' do
- it 'should be converted' do
+ describe "as array" do
+ it "should be converted" do
action, (old_position, old_element), (new_position, new_element) =
- described_class.new('!', 1, 'old_element', 2, 'new_element')
+ described_class.new("!", 1, "old_element", 2, "new_element")
- expect(action).to eq '!'
+ expect(action).to eq "!"
expect(old_position).to eq 1
- expect(old_element).to eq 'old_element'
+ expect(old_element).to eq "old_element"
expect(new_position).to eq 2
- expect(new_element).to eq 'new_element'
+ expect(new_element).to eq "new_element"
end
end
end
diff --git a/spec/diff_spec.rb b/spec/diff_spec.rb
index e7d632a..869f098 100644
--- a/spec/diff_spec.rb
+++ b/spec/diff_spec.rb
@@ -1,28 +1,28 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
-describe Diff::LCS, '.diff' do
+describe Diff::LCS, ".diff" do
include Diff::LCS::SpecHelper::Matchers
- it 'correctly diffs seq1 to seq2' do
+ it "correctly diffs seq1 to seq2" do
diff_s1_s2 = Diff::LCS.diff(seq1, seq2)
expect(change_diff(correct_forward_diff)).to eq(diff_s1_s2)
end
- it 'correctly diffs seq2 to seq1' do
+ it "correctly diffs seq2 to seq1" do
diff_s2_s1 = Diff::LCS.diff(seq2, seq1)
expect(change_diff(correct_backward_diff)).to eq(diff_s2_s1)
end
- it 'correctly diffs against an empty sequence' do
+ it "correctly diffs against an empty sequence" do
diff = Diff::LCS.diff(word_sequence, [])
correct_diff = [
[
- ['-', 0, 'abcd'],
- ['-', 1, 'efgh'],
- ['-', 2, 'ijkl'],
- ['-', 3, 'mnopqrstuvwxyz']
+ ["-", 0, "abcd"],
+ ["-", 1, "efgh"],
+ ["-", 2, "ijkl"],
+ ["-", 3, "mnopqrstuvwxyz"]
]
]
@@ -30,22 +30,22 @@ describe Diff::LCS, '.diff' do
diff = Diff::LCS.diff([], word_sequence)
correct_diff.each do |hunk|
- hunk.each do |change| change[0] = '+' end
+ hunk.each { |change| change[0] = "+" }
end
expect(change_diff(correct_diff)).to eq(diff)
end
it "correctly diffs 'xx' and 'xaxb'" do
- left = 'xx'
- right = 'xaxb'
+ left = "xx"
+ right = "xaxb"
expect(Diff::LCS.patch(left, Diff::LCS.diff(left, right))).to eq(right)
end
- it 'returns an empty diff with (hello, hello)' do
+ it "returns an empty diff with (hello, hello)" do
expect(Diff::LCS.diff(hello, hello)).to be_empty
end
- it 'returns an empty diff with (hello_ary, hello_ary)' do
+ it "returns an empty diff with (hello_ary, hello_ary)" do
expect(Diff::LCS.diff(hello_ary, hello_ary)).to be_empty
end
end
diff --git a/spec/hunk_spec.rb b/spec/hunk_spec.rb
index b3616bf..c52a6fd 100644
--- a/spec/hunk_spec.rb
+++ b/spec/hunk_spec.rb
@@ -1,18 +1,18 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
if String.method_defined?(:encoding)
- require 'diff/lcs/hunk'
+ require "diff/lcs/hunk"
describe Diff::LCS::Hunk do
- let(:old_data) { ['Tu a un cartÊ avec {count} itÊms'.encode('UTF-16LE')] }
- let(:new_data) { ['Tu a un carte avec {count} items'.encode('UTF-16LE')] }
- let(:pieces) { Diff::LCS.diff old_data, new_data }
- let(:hunk) { Diff::LCS::Hunk.new(old_data, new_data, pieces[0], 3, 0) }
+ let(:old_data) { ["Tu a un cartÊ avec {count} itÊms".encode("UTF-16LE")] }
+ let(:new_data) { ["Tu a un carte avec {count} items".encode("UTF-16LE")] }
+ let(:pieces) { Diff::LCS.diff old_data, new_data }
+ let(:hunk) { Diff::LCS::Hunk.new(old_data, new_data, pieces[0], 3, 0) }
- it 'produces a unified diff from the two pieces' do
- expected = <<-EXPECTED.gsub(/^\s+/, '').encode('UTF-16LE').chomp
+ it "produces a unified diff from the two pieces" do
+ expected = <<-EXPECTED.gsub(/^\s+/, "").encode("UTF-16LE").chomp
@@ -1 +1 @@
-Tu a un cartÊ avec {count} itÊms
+Tu a un carte avec {count} items
@@ -21,8 +21,8 @@ if String.method_defined?(:encoding)
expect(hunk.diff(:unified)).to eq(expected)
end
- it 'produces a unified diff from the two pieces (last entry)' do
- expected = <<-EXPECTED.gsub(/^\s+/, '').encode('UTF-16LE').chomp
+ it "produces a unified diff from the two pieces (last entry)" do
+ expected = <<-EXPECTED.gsub(/^\s+/, "").encode("UTF-16LE").chomp
@@ -1 +1 @@
-Tu a un cartÊ avec {count} itÊms
+Tu a un carte avec {count} items
@@ -32,8 +32,8 @@ if String.method_defined?(:encoding)
expect(hunk.diff(:unified, true)).to eq(expected)
end
- it 'produces a context diff from the two pieces' do
- expected = <<-EXPECTED.gsub(/^\s+/, '').encode('UTF-16LE').chomp
+ it "produces a context diff from the two pieces" do
+ expected = <<-EXPECTED.gsub(/^\s+/, "").encode("UTF-16LE").chomp
***************
*** 1 ****
! Tu a un cartÊ avec {count} itÊms
@@ -44,8 +44,8 @@ if String.method_defined?(:encoding)
expect(hunk.diff(:context)).to eq(expected)
end
- it 'produces an old diff from the two pieces' do
- expected = <<-EXPECTED.gsub(/^ +/, '').encode('UTF-16LE').chomp
+ it "produces an old diff from the two pieces" do
+ expected = <<-EXPECTED.gsub(/^ +/, "").encode("UTF-16LE").chomp
1c1
< Tu a un cartÊ avec {count} itÊms
---
@@ -56,8 +56,8 @@ if String.method_defined?(:encoding)
expect(hunk.diff(:old)).to eq(expected)
end
- it 'produces a reverse ed diff from the two pieces' do
- expected = <<-EXPECTED.gsub(/^ +/, '').encode('UTF-16LE').chomp
+ it "produces a reverse ed diff from the two pieces" do
+ expected = <<-EXPECTED.gsub(/^ +/, "").encode("UTF-16LE").chomp
c1
Tu a un carte avec {count} items
.
@@ -67,11 +67,11 @@ if String.method_defined?(:encoding)
expect(hunk.diff(:reverse_ed)).to eq(expected)
end
- context 'with empty first data set' do
+ context "with empty first data set" do
let(:old_data) { [] }
- it 'produces a unified diff' do
- expected = <<-EXPECTED.gsub(/^\s+/, '').encode('UTF-16LE').chomp
+ it "produces a unified diff" do
+ expected = <<-EXPECTED.gsub(/^\s+/, "").encode("UTF-16LE").chomp
@@ -1 +1,2 @@
+Tu a un carte avec {count} items
EXPECTED
diff --git a/spec/issues_spec.rb b/spec/issues_spec.rb
index ad73123..3451d71 100644
--- a/spec/issues_spec.rb
+++ b/spec/issues_spec.rb
@@ -1,73 +1,76 @@
# frozen_string_literal: true
-require 'spec_helper'
-require 'diff/lcs/hunk'
+require "spec_helper"
+require "diff/lcs/hunk"
-describe 'Diff::LCS Issues' do
+describe "Diff::LCS Issues" do
include Diff::LCS::SpecHelper::Matchers
- describe 'issue #1' do
- shared_examples 'handles simple diffs' do |s1, s2, forward_diff|
+ describe "issue #1" do
+ shared_examples "handles simple diffs" do |s1, s2, forward_diff|
before do
@diff_s1_s2 = Diff::LCS.diff(s1, s2)
end
- it 'creates the correct diff' do
+ it "creates the correct diff" do
expect(change_diff(forward_diff)).to eq(@diff_s1_s2)
end
- it 'creates the correct patch s1->s2' do
+ it "creates the correct patch s1->s2" do
expect(Diff::LCS.patch(s1, @diff_s1_s2)).to eq(s2)
end
- it 'creates the correct patch s2->s1' do
+ it "creates the correct patch s2->s1" do
expect(Diff::LCS.patch(s2, @diff_s1_s2)).to eq(s1)
end
end
- describe 'string' do
- it_has_behavior 'handles simple diffs', 'aX', 'bXaX', [
+ describe "string" do
+ it_has_behavior "handles simple diffs", "aX", "bXaX", [
[
- ['+', 0, 'b'],
- ['+', 1, 'X']
+ ["+", 0, "b"],
+ ["+", 1, "X"]
]
]
- it_has_behavior 'handles simple diffs', 'bXaX', 'aX', [
+ it_has_behavior "handles simple diffs", "bXaX", "aX", [
[
- ['-', 0, 'b'],
- ['-', 1, 'X']
+ ["-", 0, "b"],
+ ["-", 1, "X"]
]
]
end
- describe 'array' do
- it_has_behavior 'handles simple diffs', %w(a X), %w(b X a X), [
+ describe "array" do
+ it_has_behavior "handles simple diffs", %w[a X], %w[b X a X], [
[
- ['+', 0, 'b'],
- ['+', 1, 'X']
+ ["+", 0, "b"],
+ ["+", 1, "X"]
]
]
- it_has_behavior 'handles simple diffs', %w(b X a X), %w(a X), [
+ it_has_behavior "handles simple diffs", %w[b X a X], %w[a X], [
[
- ['-', 0, 'b'],
- ['-', 1, 'X']
+ ["-", 0, "b"],
+ ["-", 1, "X"]
]
]
end
end
- describe 'issue #57' do
- it 'should fail with a correct error' do
+ describe "issue #57" do
+ it "should fail with a correct error" do
+ # standard:disable Style/HashSyntax
expect {
- actual = { :category => 'app.rack.request' }
- expected = { :category => 'rack.middleware', :title => 'Anonymous Middleware' }
+ actual = {:category => "app.rack.request"}
+ expected = {:category => "rack.middleware", :title => "Anonymous Middleware"}
expect(actual).to eq(expected)
}.to raise_error(RSpec::Expectations::ExpectationNotMetError)
+ # standard:enable Style/HashSyntax
end
end
- describe 'issue #60' do
- it 'should produce unified output with correct context' do
+ describe "issue #60" do
+ it "should produce unified output with correct context" do
+ # standard:disable Layout/HeredocIndentation
old_data = <<-DATA_OLD.strip.split("\n").map(&:chomp)
{
"name": "x",
@@ -93,10 +96,11 @@ describe 'Diff::LCS Issues' do
+ "description": "lo"
}
EXPECTED
+ # standard:enable Layout/HeredocIndentation
end
end
- describe 'issue #65' do
+ describe "issue #65" do
def diff_lines(old_lines, new_lines)
file_length_difference = 0
previous_hunk = nil
@@ -115,24 +119,25 @@ describe 'Diff::LCS Issues' do
output.join
end
- it 'should not misplace the new chunk' do
+ it "should not misplace the new chunk" do
old_data = [
- 'recipe[a::default]', 'recipe[b::default]', 'recipe[c::default]',
- 'recipe[d::default]', 'recipe[e::default]', 'recipe[f::default]',
- 'recipe[g::default]', 'recipe[h::default]', 'recipe[i::default]',
- 'recipe[j::default]', 'recipe[k::default]', 'recipe[l::default]',
- 'recipe[m::default]', 'recipe[n::default]'
+ "recipe[a::default]", "recipe[b::default]", "recipe[c::default]",
+ "recipe[d::default]", "recipe[e::default]", "recipe[f::default]",
+ "recipe[g::default]", "recipe[h::default]", "recipe[i::default]",
+ "recipe[j::default]", "recipe[k::default]", "recipe[l::default]",
+ "recipe[m::default]", "recipe[n::default]"
]
new_data = [
- 'recipe[a::default]', 'recipe[c::default]', 'recipe[d::default]',
- 'recipe[e::default]', 'recipe[f::default]', 'recipe[g::default]',
- 'recipe[h::default]', 'recipe[i::default]', 'recipe[j::default]',
- 'recipe[k::default]', 'recipe[l::default]', 'recipe[m::default]',
- 'recipe[n::default]', 'recipe[o::new]', 'recipe[p::new]',
- 'recipe[q::new]', 'recipe[r::new]'
+ "recipe[a::default]", "recipe[c::default]", "recipe[d::default]",
+ "recipe[e::default]", "recipe[f::default]", "recipe[g::default]",
+ "recipe[h::default]", "recipe[i::default]", "recipe[j::default]",
+ "recipe[k::default]", "recipe[l::default]", "recipe[m::default]",
+ "recipe[n::default]", "recipe[o::new]", "recipe[p::new]",
+ "recipe[q::new]", "recipe[r::new]"
]
+ # standard:disable Layout/HeredocIndentation
expect(diff_lines(old_data, new_data)).to eq(<<-EODIFF)
@@ -1,5 +1,4 @@
recipe[a::default]
@@ -149,6 +154,7 @@ describe 'Diff::LCS Issues' do
+recipe[q::new]
+recipe[r::new]
EODIFF
+ # standard:enable Layout/HeredocIndentation
end
end
end
diff --git a/spec/lcs_spec.rb b/spec/lcs_spec.rb
index 94428fd..c17f22f 100644
--- a/spec/lcs_spec.rb
+++ b/spec/lcs_spec.rb
@@ -1,11 +1,11 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
-describe Diff::LCS::Internals, '.lcs' do
+describe Diff::LCS::Internals, ".lcs" do
include Diff::LCS::SpecHelper::Matchers
- it 'returns a meaningful LCS array with (seq1, seq2)' do
+ it "returns a meaningful LCS array with (seq1, seq2)" do
res = Diff::LCS::Internals.lcs(seq1, seq2)
# The result of the LCS (less the +nil+ values) must be as long as the
# correct result.
@@ -20,37 +20,37 @@ describe Diff::LCS::Internals, '.lcs' do
expect(x_seq2).to eq(correct_lcs)
end
- it 'returns all indexes with (hello, hello)' do
+ it "returns all indexes with (hello, hello)" do
expect(Diff::LCS::Internals.lcs(hello, hello)).to \
eq((0...hello.size).to_a)
end
- it 'returns all indexes with (hello_ary, hello_ary)' do
+ it "returns all indexes with (hello_ary, hello_ary)" do
expect(Diff::LCS::Internals.lcs(hello_ary, hello_ary)).to \
eq((0...hello_ary.size).to_a)
end
end
-describe Diff::LCS, '.LCS' do
+describe Diff::LCS, ".LCS" do
include Diff::LCS::SpecHelper::Matchers
- it 'returns the correct compacted values from Diff::LCS.LCS' do
+ it "returns the correct compacted values from Diff::LCS.LCS" do
res = Diff::LCS.LCS(seq1, seq2)
expect(res).to eq(correct_lcs)
expect(res.compact).to eq(res)
end
- it 'is transitive' do
+ it "is transitive" do
res = Diff::LCS.LCS(seq2, seq1)
expect(res).to eq(correct_lcs)
expect(res.compact).to eq(res)
end
- it 'returns %W(h e l l o) with (hello, hello)' do
- expect(Diff::LCS.LCS(hello, hello)).to eq(hello.split(//))
+ it "returns %W(h e l l o) with (hello, hello)" do
+ expect(Diff::LCS.LCS(hello, hello)).to eq(hello.chars)
end
- it 'returns hello_ary with (hello_ary, hello_ary)' do
+ it "returns hello_ary with (hello_ary, hello_ary)" do
expect(Diff::LCS.LCS(hello_ary, hello_ary)).to eq(hello_ary)
end
end
diff --git a/spec/ldiff_spec.rb b/spec/ldiff_spec.rb
index a2468f8..cf89ada 100644
--- a/spec/ldiff_spec.rb
+++ b/spec/ldiff_spec.rb
@@ -1,29 +1,31 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
-RSpec.describe 'bin/ldiff' do
+RSpec.describe "bin/ldiff" do
include CaptureSubprocessIO
+ # standard:disable Style/HashSyntax
fixtures = [
- { :name => 'output.diff', :left => 'aX', :right => 'bXaX' },
- { :name => 'output.diff.chef', :left => 'old-chef', :right => 'new-chef' },
- { :name => 'output.diff.chef2', :left => 'old-chef2', :right => 'new-chef2' }
- ].product([nil, '-e', '-f', '-c', '-u']).map { |(fixture, flag)|
+ {:name => "output.diff", :left => "aX", :right => "bXaX"},
+ {:name => "output.diff.chef", :left => "old-chef", :right => "new-chef"},
+ {:name => "output.diff.chef2", :left => "old-chef2", :right => "new-chef2"}
+ ].product([nil, "-e", "-f", "-c", "-u"]).map { |(fixture, flag)|
fixture = fixture.dup
fixture[:flag] = flag
fixture
}
+ # standard:enable Style/HashSyntax
def self.test_ldiff(fixture)
desc = [
fixture[:flag],
"spec/fixtures/#{fixture[:left]}",
"spec/fixtures/#{fixture[:right]}",
- '#',
- '=>',
+ "#",
+ "=>",
"spec/fixtures/ldiff/#{fixture[:name]}#{fixture[:flag]}"
- ].join(' ')
+ ].join(" ")
it desc do
expect(run_ldiff(fixture)).to eq(read_fixture(fixture))
@@ -45,7 +47,7 @@ RSpec.describe 'bin/ldiff' do
def clean_data(data, flag)
data =
case flag
- when '-c', '-u'
+ when "-c", "-u"
clean_output_timestamp(data)
else
data
@@ -80,7 +82,7 @@ RSpec.describe 'bin/ldiff' do
system("ruby -Ilib bin/ldiff #{flag} spec/fixtures/#{left} spec/fixtures/#{right}")
end
- expect(stderr).to be_empty if RUBY_VERSION >= '1.9'
+ expect(stderr).to be_empty if RUBY_VERSION >= "1.9"
expect(stdout).not_to be_empty
clean_data(stdout, flag)
end
diff --git a/spec/patch_spec.rb b/spec/patch_spec.rb
index 11b0981..6b9bf28 100644
--- a/spec/patch_spec.rb
+++ b/spec/patch_spec.rb
@@ -1,54 +1,54 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
-describe 'Diff::LCS.patch' do
+describe "Diff::LCS.patch" do
include Diff::LCS::SpecHelper::Matchers
- shared_examples 'patch sequences correctly' do
- it 'correctly patches left-to-right (patch autodiscovery)' do
+ shared_examples "patch sequences correctly" do
+ it "correctly patches left-to-right (patch autodiscovery)" do
expect(Diff::LCS.patch(s1, patch_set)).to eq(s2)
end
- it 'correctly patches left-to-right (explicit patch)' do
+ it "correctly patches left-to-right (explicit patch)" do
expect(Diff::LCS.patch(s1, patch_set, :patch)).to eq(s2)
expect(Diff::LCS.patch!(s1, patch_set)).to eq(s2)
end
- it 'correctly patches right-to-left (unpatch autodiscovery)' do
+ it "correctly patches right-to-left (unpatch autodiscovery)" do
expect(Diff::LCS.patch(s2, patch_set)).to eq(s1)
end
- it 'correctly patches right-to-left (explicit unpatch)' do
+ it "correctly patches right-to-left (explicit unpatch)" do
expect(Diff::LCS.patch(s2, patch_set, :unpatch)).to eq(s1)
expect(Diff::LCS.unpatch!(s2, patch_set)).to eq(s1)
end
end
- describe 'using a Diff::LCS.diff patchset' do
- describe 'an empty patchset returns the source' do
- it 'works on a string (hello)' do
+ describe "using a Diff::LCS.diff patchset" do
+ describe "an empty patchset returns the source" do
+ it "works on a string (hello)" do
diff = Diff::LCS.diff(hello, hello)
expect(Diff::LCS.patch(hello, diff)).to eq(hello)
end
- it 'works on an array %W(h e l l o)' do
+ it "works on an array %W(h e l l o)" do
diff = Diff::LCS.diff(hello_ary, hello_ary)
expect(Diff::LCS.patch(hello_ary, diff)).to eq(hello_ary)
end
end
- describe 'with default diff callbacks (DiffCallbacks)' do
- describe 'forward (s1 -> s2)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "with default diff callbacks (DiffCallbacks)" do
+ describe "forward (s1 -> s2)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq1 }
let(:s2) { seq2 }
let(:patch_set) { Diff::LCS.diff(seq1, seq2) }
end
end
- describe 'reverse (s2 -> s1)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "reverse (s2 -> s1)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq2 }
let(:s2) { seq1 }
let(:patch_set) { Diff::LCS.diff(seq2, seq1) }
@@ -56,9 +56,9 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'with context diff callbacks (ContextDiffCallbacks)' do
- describe 'forward (s1 -> s2)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "with context diff callbacks (ContextDiffCallbacks)" do
+ describe "forward (s1 -> s2)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq1 }
let(:s2) { seq2 }
let(:patch_set) {
@@ -67,8 +67,8 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'reverse (s2 -> s1)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "reverse (s2 -> s1)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq2 }
let(:s2) { seq1 }
let(:patch_set) {
@@ -78,9 +78,9 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'with sdiff callbacks (SDiffCallbacks)' do
- describe 'forward (s1 -> s2)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "with sdiff callbacks (SDiffCallbacks)" do
+ describe "forward (s1 -> s2)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq1 }
let(:s2) { seq2 }
let(:patch_set) {
@@ -89,8 +89,8 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'reverse (s2 -> s1)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "reverse (s2 -> s1)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq2 }
let(:s2) { seq1 }
let(:patch_set) {
@@ -101,20 +101,20 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'using a Diff::LCS.sdiff patchset' do
- describe 'an empty patchset returns the source' do
- it 'works on a string (hello)' do
+ describe "using a Diff::LCS.sdiff patchset" do
+ describe "an empty patchset returns the source" do
+ it "works on a string (hello)" do
expect(Diff::LCS.patch(hello, Diff::LCS.sdiff(hello, hello))).to eq(hello)
end
- it 'works on an array %W(h e l l o)' do
+ it "works on an array %W(h e l l o)" do
expect(Diff::LCS.patch(hello_ary, Diff::LCS.sdiff(hello_ary, hello_ary))).to eq(hello_ary)
end
end
- describe 'with default diff callbacks (DiffCallbacks)' do
- describe 'forward (s1 -> s2)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "with default diff callbacks (DiffCallbacks)" do
+ describe "forward (s1 -> s2)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq1 }
let(:s2) { seq2 }
let(:patch_set) {
@@ -123,8 +123,8 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'reverse (s2 -> s1)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "reverse (s2 -> s1)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq2 }
let(:s2) { seq1 }
let(:patch_set) {
@@ -134,9 +134,9 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'with context diff callbacks (DiffCallbacks)' do
- describe 'forward (s1 -> s2)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "with context diff callbacks (DiffCallbacks)" do
+ describe "forward (s1 -> s2)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq1 }
let(:s2) { seq2 }
let(:patch_set) {
@@ -145,8 +145,8 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'reverse (s2 -> s1)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "reverse (s2 -> s1)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq2 }
let(:s2) { seq1 }
let(:patch_set) {
@@ -156,17 +156,17 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'with sdiff callbacks (SDiffCallbacks)' do
- describe 'forward (s1 -> s2)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "with sdiff callbacks (SDiffCallbacks)" do
+ describe "forward (s1 -> s2)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq1 }
let(:s2) { seq2 }
let(:patch_set) { Diff::LCS.sdiff(seq1, seq2) }
end
end
- describe 'reverse (s2 -> s1)' do
- it_has_behavior 'patch sequences correctly' do
+ describe "reverse (s2 -> s1)" do
+ it_has_behavior "patch sequences correctly" do
let(:s1) { seq2 }
let(:s2) { seq1 }
let(:patch_set) { Diff::LCS.sdiff(seq2, seq1) }
@@ -179,43 +179,43 @@ describe 'Diff::LCS.patch' do
# to s2 patches"), this cannot use the "patch sequences correctly" shared
# set. Once the bug in autodiscovery is fixed, this can be converted as
# above.
- describe 'fix bug 891: patchsets do not contain the last equal part' do
+ describe "fix bug 891: patchsets do not contain the last equal part" do
before :each do
- @s1 = %w(a b c d e f g h i j k) # rubocop:disable Layout/SpaceInsideArrayPercentLiteral
- @s2 = %w(a b c d D e f g h i j k)
+ @s1 = %w[a b c d e f g h i j k] # rubocop:disable Layout/SpaceInsideArrayPercentLiteral
+ @s2 = %w[a b c d D e f g h i j k]
end
- describe 'using Diff::LCS.diff with default diff callbacks' do
+ describe "using Diff::LCS.diff with default diff callbacks" do
before :each do
@patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2)
@patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1)
end
- it 'autodiscovers s1 to s2 patches' do
+ it "autodiscovers s1 to s2 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 patches' do
+ it "autodiscovers s2 to s1 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 the left-to-right patches' do
+ it "autodiscovers s2 to s1 the left-to-right patches" do
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
end
- it 'correctly patches left-to-right (explicit patch)' do
+ it "correctly patches left-to-right (explicit patch)" do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
end
- it 'correctly patches right-to-left (explicit unpatch)' do
+ it "correctly patches right-to-left (explicit unpatch)" do
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -223,37 +223,37 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'using Diff::LCS.diff with context diff callbacks' do
+ describe "using Diff::LCS.diff with context diff callbacks" do
before :each do
@patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2, Diff::LCS::ContextDiffCallbacks)
@patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1, Diff::LCS::ContextDiffCallbacks)
end
- it 'autodiscovers s1 to s2 patches' do
+ it "autodiscovers s1 to s2 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 patches' do
+ it "autodiscovers s2 to s1 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 the left-to-right patches' do
+ it "autodiscovers s2 to s1 the left-to-right patches" do
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
end
- it 'correctly patches left-to-right (explicit patch)' do
+ it "correctly patches left-to-right (explicit patch)" do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
end
- it 'correctly patches right-to-left (explicit unpatch)' do
+ it "correctly patches right-to-left (explicit unpatch)" do
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -261,37 +261,37 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'using Diff::LCS.diff with sdiff callbacks' do
+ describe "using Diff::LCS.diff with sdiff callbacks" do
before(:each) do
@patch_set_s1_s2 = Diff::LCS.diff(@s1, @s2, Diff::LCS::SDiffCallbacks)
@patch_set_s2_s1 = Diff::LCS.diff(@s2, @s1, Diff::LCS::SDiffCallbacks)
end
- it 'autodiscovers s1 to s2 patches' do
+ it "autodiscovers s1 to s2 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 patches' do
+ it "autodiscovers s2 to s1 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 the left-to-right patches' do
+ it "autodiscovers s2 to s1 the left-to-right patches" do
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
end
- it 'correctly patches left-to-right (explicit patch)' do
+ it "correctly patches left-to-right (explicit patch)" do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
end
- it 'correctly patches right-to-left (explicit unpatch)' do
+ it "correctly patches right-to-left (explicit unpatch)" do
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -299,37 +299,37 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'using Diff::LCS.sdiff with default sdiff callbacks' do
+ describe "using Diff::LCS.sdiff with default sdiff callbacks" do
before(:each) do
@patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2)
@patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1)
end
- it 'autodiscovers s1 to s2 patches' do
+ it "autodiscovers s1 to s2 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 patches' do
+ it "autodiscovers s2 to s1 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 the left-to-right patches' do
+ it "autodiscovers s2 to s1 the left-to-right patches" do
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
end
- it 'correctly patches left-to-right (explicit patch)' do
+ it "correctly patches left-to-right (explicit patch)" do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
end
- it 'correctly patches right-to-left (explicit unpatch)' do
+ it "correctly patches right-to-left (explicit unpatch)" do
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -337,37 +337,37 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'using Diff::LCS.sdiff with context diff callbacks' do
+ describe "using Diff::LCS.sdiff with context diff callbacks" do
before(:each) do
@patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2, Diff::LCS::ContextDiffCallbacks)
@patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1, Diff::LCS::ContextDiffCallbacks)
end
- it 'autodiscovers s1 to s2 patches' do
+ it "autodiscovers s1 to s2 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 patches' do
+ it "autodiscovers s2 to s1 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 the left-to-right patches' do
+ it "autodiscovers s2 to s1 the left-to-right patches" do
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
end
- it 'correctly patches left-to-right (explicit patch)' do
+ it "correctly patches left-to-right (explicit patch)" do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
end
- it 'correctly patches right-to-left (explicit unpatch)' do
+ it "correctly patches right-to-left (explicit unpatch)" do
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
@@ -375,37 +375,37 @@ describe 'Diff::LCS.patch' do
end
end
- describe 'using Diff::LCS.sdiff with default diff callbacks' do
+ describe "using Diff::LCS.sdiff with default diff callbacks" do
before(:each) do
@patch_set_s1_s2 = Diff::LCS.sdiff(@s1, @s2, Diff::LCS::DiffCallbacks)
@patch_set_s2_s1 = Diff::LCS.sdiff(@s2, @s1, Diff::LCS::DiffCallbacks)
end
- it 'autodiscovers s1 to s2 patches' do
+ it "autodiscovers s1 to s2 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 patches' do
+ it "autodiscovers s2 to s1 patches" do
expect do
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1)).to eq(@s2)
end.to_not raise_error
end
- it 'autodiscovers s2 to s1 the left-to-right patches' do
+ it "autodiscovers s2 to s1 the left-to-right patches" do
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1)).to eq(@s1)
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2)).to eq(@s1)
end
- it 'correctly patches left-to-right (explicit patch)' do
+ it "correctly patches left-to-right (explicit patch)" do
expect(Diff::LCS.patch(@s1, @patch_set_s1_s2, :patch)).to eq(@s2)
expect(Diff::LCS.patch(@s2, @patch_set_s2_s1, :patch)).to eq(@s1)
expect(Diff::LCS.patch!(@s1, @patch_set_s1_s2)).to eq(@s2)
expect(Diff::LCS.patch!(@s2, @patch_set_s2_s1)).to eq(@s1)
end
- it 'correctly patches right-to-left (explicit unpatch)' do
+ it "correctly patches right-to-left (explicit unpatch)" do
expect(Diff::LCS.patch(@s2, @patch_set_s1_s2, :unpatch)).to eq(@s1)
expect(Diff::LCS.patch(@s1, @patch_set_s2_s1, :unpatch)).to eq(@s2)
expect(Diff::LCS.unpatch!(@s2, @patch_set_s1_s2)).to eq(@s1)
diff --git a/spec/sdiff_spec.rb b/spec/sdiff_spec.rb
index 06d39d6..aded301 100644
--- a/spec/sdiff_spec.rb
+++ b/spec/sdiff_spec.rb
@@ -1,214 +1,216 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
-describe 'Diff::LCS.sdiff' do
+describe "Diff::LCS.sdiff" do
include Diff::LCS::SpecHelper::Matchers
- shared_examples 'compare sequences correctly' do
- it 'compares s1 -> s2 correctly' do
+ shared_examples "compare sequences correctly" do
+ it "compares s1 -> s2 correctly" do
expect(Diff::LCS.sdiff(s1, s2)).to eq(context_diff(result))
end
- it 'compares s2 -> s1 correctly' do
+ it "compares s2 -> s1 correctly" do
expect(Diff::LCS.sdiff(s2, s1)).to eq(context_diff(reverse_sdiff(result)))
end
end
- describe 'using seq1 & seq2' do
+ describe "using seq1 & seq2" do
let(:s1) { seq1 }
let(:s2) { seq2 }
let(:result) { correct_forward_sdiff }
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(abc def yyy xxx ghi jkl) & %w(abc dxf xxx ghi jkl)' do
- let(:s1) { %w(abc def yyy xxx ghi jkl) }
- let(:s2) { %w(abc dxf xxx ghi jkl) }
+ describe "using %w(abc def yyy xxx ghi jkl) & %w(abc dxf xxx ghi jkl)" do
+ let(:s1) { %w[abc def yyy xxx ghi jkl] }
+ let(:s2) { %w[abc dxf xxx ghi jkl] }
let(:result) {
+ # standard:disable Layout/ExtraSpacing
[
- ['=', [0, 'abc'], [0, 'abc']],
- ['!', [1, 'def'], [1, 'dxf']],
- ['-', [2, 'yyy'], [2, nil]],
- ['=', [3, 'xxx'], [2, 'xxx']],
- ['=', [4, 'ghi'], [3, 'ghi']],
- ['=', [5, 'jkl'], [4, 'jkl']]
+ ["=", [0, "abc"], [0, "abc"]],
+ ["!", [1, "def"], [1, "dxf"]],
+ ["-", [2, "yyy"], [2, nil]],
+ ["=", [3, "xxx"], [2, "xxx"]],
+ ["=", [4, "ghi"], [3, "ghi"]],
+ ["=", [5, "jkl"], [4, "jkl"]]
]
+ # standard:enable Layout/ExtraSpacing
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(a b c d e) & %w(a e)' do
- let(:s1) { %w(a b c d e) }
- let(:s2) { %w(a e) }
+ describe "using %w(a b c d e) & %w(a e)" do
+ let(:s1) { %w[a b c d e] }
+ let(:s2) { %w[a e] }
let(:result) {
[
- ['=', [0, 'a'], [0, 'a']],
- ['-', [1, 'b'], [1, nil]],
- ['-', [2, 'c'], [1, nil]],
- ['-', [3, 'd'], [1, nil]],
- ['=', [4, 'e'], [1, 'e']]
+ ["=", [0, "a"], [0, "a"]],
+ ["-", [1, "b"], [1, nil]],
+ ["-", [2, "c"], [1, nil]],
+ ["-", [3, "d"], [1, nil]],
+ ["=", [4, "e"], [1, "e"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(a e) & %w(a b c d e)' do
- let(:s1) { %w(a e) }
- let(:s2) { %w(a b c d e) }
+ describe "using %w(a e) & %w(a b c d e)" do
+ let(:s1) { %w[a e] }
+ let(:s2) { %w[a b c d e] }
let(:result) {
[
- ['=', [0, 'a'], [0, 'a']],
- ['+', [1, nil], [1, 'b']],
- ['+', [1, nil], [2, 'c']],
- ['+', [1, nil], [3, 'd']],
- ['=', [1, 'e'], [4, 'e']]
+ ["=", [0, "a"], [0, "a"]],
+ ["+", [1, nil], [1, "b"]],
+ ["+", [1, nil], [2, "c"]],
+ ["+", [1, nil], [3, "d"]],
+ ["=", [1, "e"], [4, "e"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(v x a e) & %w(w y a b c d e)' do
- let(:s1) { %w(v x a e) }
- let(:s2) { %w(w y a b c d e) }
+ describe "using %w(v x a e) & %w(w y a b c d e)" do
+ let(:s1) { %w[v x a e] }
+ let(:s2) { %w[w y a b c d e] }
let(:result) {
[
- ['!', [0, 'v'], [0, 'w']],
- ['!', [1, 'x'], [1, 'y']],
- ['=', [2, 'a'], [2, 'a']],
- ['+', [3, nil], [3, 'b']],
- ['+', [3, nil], [4, 'c']],
- ['+', [3, nil], [5, 'd']],
- ['=', [3, 'e'], [6, 'e']]
+ ["!", [0, "v"], [0, "w"]],
+ ["!", [1, "x"], [1, "y"]],
+ ["=", [2, "a"], [2, "a"]],
+ ["+", [3, nil], [3, "b"]],
+ ["+", [3, nil], [4, "c"]],
+ ["+", [3, nil], [5, "d"]],
+ ["=", [3, "e"], [6, "e"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(x a e) & %w(a b c d e)' do
- let(:s1) { %w(x a e) }
- let(:s2) { %w(a b c d e) }
+ describe "using %w(x a e) & %w(a b c d e)" do
+ let(:s1) { %w[x a e] }
+ let(:s2) { %w[a b c d e] }
let(:result) {
[
- ['-', [0, 'x'], [0, nil]],
- ['=', [1, 'a'], [0, 'a']],
- ['+', [2, nil], [1, 'b']],
- ['+', [2, nil], [2, 'c']],
- ['+', [2, nil], [3, 'd']],
- ['=', [2, 'e'], [4, 'e']]
+ ["-", [0, "x"], [0, nil]],
+ ["=", [1, "a"], [0, "a"]],
+ ["+", [2, nil], [1, "b"]],
+ ["+", [2, nil], [2, "c"]],
+ ["+", [2, nil], [3, "d"]],
+ ["=", [2, "e"], [4, "e"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(a e) & %w(x a b c d e)' do
- let(:s1) { %w(a e) }
- let(:s2) { %w(x a b c d e) }
+ describe "using %w(a e) & %w(x a b c d e)" do
+ let(:s1) { %w[a e] }
+ let(:s2) { %w[x a b c d e] }
let(:result) {
[
- ['+', [0, nil], [0, 'x']],
- ['=', [0, 'a'], [1, 'a']],
- ['+', [1, nil], [2, 'b']],
- ['+', [1, nil], [3, 'c']],
- ['+', [1, nil], [4, 'd']],
- ['=', [1, 'e'], [5, 'e']]
+ ["+", [0, nil], [0, "x"]],
+ ["=", [0, "a"], [1, "a"]],
+ ["+", [1, nil], [2, "b"]],
+ ["+", [1, nil], [3, "c"]],
+ ["+", [1, nil], [4, "d"]],
+ ["=", [1, "e"], [5, "e"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(a e v) & %w(x a b c d e w x)' do
- let(:s1) { %w(a e v) }
- let(:s2) { %w(x a b c d e w x) }
+ describe "using %w(a e v) & %w(x a b c d e w x)" do
+ let(:s1) { %w[a e v] }
+ let(:s2) { %w[x a b c d e w x] }
let(:result) {
[
- ['+', [0, nil], [0, 'x']],
- ['=', [0, 'a'], [1, 'a']],
- ['+', [1, nil], [2, 'b']],
- ['+', [1, nil], [3, 'c']],
- ['+', [1, nil], [4, 'd']],
- ['=', [1, 'e'], [5, 'e']],
- ['!', [2, 'v'], [6, 'w']],
- ['+', [3, nil], [7, 'x']]
+ ["+", [0, nil], [0, "x"]],
+ ["=", [0, "a"], [1, "a"]],
+ ["+", [1, nil], [2, "b"]],
+ ["+", [1, nil], [3, "c"]],
+ ["+", [1, nil], [4, "d"]],
+ ["=", [1, "e"], [5, "e"]],
+ ["!", [2, "v"], [6, "w"]],
+ ["+", [3, nil], [7, "x"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w() & %w(a b c)' do
- let(:s1) { %w() }
- let(:s2) { %w(a b c) }
+ describe "using %w() & %w(a b c)" do
+ let(:s1) { %w[] }
+ let(:s2) { %w[a b c] }
let(:result) {
[
- ['+', [0, nil], [0, 'a']],
- ['+', [0, nil], [1, 'b']],
- ['+', [0, nil], [2, 'c']]
+ ["+", [0, nil], [0, "a"]],
+ ["+", [0, nil], [1, "b"]],
+ ["+", [0, nil], [2, "c"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(a b c) & %w(1)' do
- let(:s1) { %w(a b c) }
- let(:s2) { %w(1) }
+ describe "using %w(a b c) & %w(1)" do
+ let(:s1) { %w[a b c] }
+ let(:s2) { %w[1] }
let(:result) {
[
- ['!', [0, 'a'], [0, '1']],
- ['-', [1, 'b'], [1, nil]],
- ['-', [2, 'c'], [1, nil]]
+ ["!", [0, "a"], [0, "1"]],
+ ["-", [1, "b"], [1, nil]],
+ ["-", [2, "c"], [1, nil]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(a b c) & %w(c)' do
- let(:s1) { %w(a b c) }
- let(:s2) { %w(c) }
+ describe "using %w(a b c) & %w(c)" do
+ let(:s1) { %w[a b c] }
+ let(:s2) { %w[c] }
let(:result) {
[
- ['-', [0, 'a'], [0, nil]],
- ['-', [1, 'b'], [0, nil]],
- ['=', [2, 'c'], [0, 'c']]
+ ["-", [0, "a"], [0, nil]],
+ ["-", [1, "b"], [0, nil]],
+ ["=", [2, "c"], [0, "c"]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using %w(abcd efgh ijkl mnop) & []' do
- let(:s1) { %w(abcd efgh ijkl mnop) }
+ describe "using %w(abcd efgh ijkl mnop) & []" do
+ let(:s1) { %w[abcd efgh ijkl mnop] }
let(:s2) { [] }
let(:result) {
[
- ['-', [0, 'abcd'], [0, nil]],
- ['-', [1, 'efgh'], [0, nil]],
- ['-', [2, 'ijkl'], [0, nil]],
- ['-', [3, 'mnop'], [0, nil]]
+ ["-", [0, "abcd"], [0, nil]],
+ ["-", [1, "efgh"], [0, nil]],
+ ["-", [2, "ijkl"], [0, nil]],
+ ["-", [3, "mnop"], [0, nil]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
- describe 'using [[1,2]] & []' do
+ describe "using [[1,2]] & []" do
let(:s1) { [[1, 2]] }
let(:s2) { [] }
let(:result) {
[
- ['-', [0, [1, 2]], [0, nil]]
+ ["-", [0, [1, 2]], [0, nil]]
]
}
- it_has_behavior 'compare sequences correctly'
+ it_has_behavior "compare sequences correctly"
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 41e1f8e..6993912 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,12 +1,12 @@
# frozen_string_literal: true
-require 'rubygems'
-require 'pathname'
+require "rubygems"
+require "pathname"
-require 'psych' if RUBY_VERSION >= '1.9'
+require "psych" if RUBY_VERSION >= "1.9"
-if ENV['COVERAGE']
- require 'simplecov'
+if ENV["COVERAGE"]
+ require "simplecov"
def require_do(resource)
require resource
@@ -17,13 +17,13 @@ if ENV['COVERAGE']
formatters = [SimpleCov::Formatter::HTMLFormatter]
- require_do('simplecov-rcov') {
+ require_do("simplecov-rcov") {
formatters << SimpleCov::Formatter::RcovFormatter
}
- require_do('simplecov-vim/formatter') {
+ require_do("simplecov-vim/formatter") {
formatters << SimpleCov::Formatter::VimFormatter
}
- require_do('simplecov-sublime-ruby-coverage') {
+ require_do("simplecov-sublime-ruby-coverage") {
formatters << SimpleCov::Formatter::SublimeRubyCoverageFormatter
}
@@ -32,11 +32,11 @@ if ENV['COVERAGE']
end
end
-file = Pathname.new(__FILE__).expand_path
-path = file.parent
+file = Pathname.new(__FILE__).expand_path
+path = file.parent
parent = path.parent
-$:.unshift parent.join('lib')
+$:.unshift parent.join("lib")
module CaptureSubprocessIO
def _synchronize
@@ -48,9 +48,9 @@ module CaptureSubprocessIO
end
def _capture_subprocess_io
- require 'tempfile'
+ require "tempfile"
- captured_stdout, captured_stderr = Tempfile.new('out'), Tempfile.new('err')
+ captured_stdout, captured_stderr = Tempfile.new("out"), Tempfile.new("err")
orig_stdout, orig_stderr = $stdout.dup, $stderr.dup
$stdout.reopen captured_stdout
@@ -71,62 +71,63 @@ module CaptureSubprocessIO
private :_capture_subprocess_io
end
-require 'diff-lcs'
+require "diff-lcs"
module Diff::LCS::SpecHelper
def hello
- 'hello'
+ "hello"
end
def hello_ary
- %w(h e l l o)
+ %w[h e l l o]
end
def seq1
- %w(a b c e h j l m n p)
+ %w[a b c e h j l m n p]
end
def skipped_seq1
- %w(a h n p)
+ %w[a h n p]
end
def seq2
- %w(b c d e f j k l m r s t)
+ %w[b c d e f j k l m r s t]
end
def skipped_seq2
- %w(d f k r s t)
+ %w[d f k r s t]
end
def word_sequence
- %w(abcd efgh ijkl mnopqrstuvwxyz)
+ %w[abcd efgh ijkl mnopqrstuvwxyz]
end
def correct_lcs
- %w(b c e j l m)
+ %w[b c e j l m]
end
+ # standard:disable Layout/ExtraSpacing
def correct_forward_diff
[
[
- ['-', 0, 'a']
+ ["-", 0, "a"]
],
[
- ['+', 2, 'd']
+ ["+", 2, "d"]
],
[
- ['-', 4, 'h'],
- ['+', 4, 'f']
+ ["-", 4, "h"],
+ ["+", 4, "f"]
],
[
- ['+', 6, 'k']
+ ["+", 6, "k"]
],
[
- ['-', 8, 'n'],
- ['+', 9, 'r'],
- ['-', 9, 'p'],
- ['+', 10, 's'],
- ['+', 11, 't']
+ ["-", 8, "n"],
+ ["+", 9, "r"],
+ ["-", 9, "p"],
+ ["+", 10, "s"],
+ ["+", 11, "t"]
]
]
end
@@ -134,52 +135,53 @@ module Diff::LCS::SpecHelper
def correct_backward_diff
[
[
- ['+', 0, 'a']
+ ["+", 0, "a"]
],
[
- ['-', 2, 'd']
+ ["-", 2, "d"]
],
[
- ['-', 4, 'f'],
- ['+', 4, 'h']
+ ["-", 4, "f"],
+ ["+", 4, "h"]
],
[
- ['-', 6, 'k']
+ ["-", 6, "k"]
],
[
- ['-', 9, 'r'],
- ['+', 8, 'n'],
- ['-', 10, 's'],
- ['+', 9, 'p'],
- ['-', 11, 't']
+ ["-", 9, "r"],
+ ["+", 8, "n"],
+ ["-", 10, "s"],
+ ["+", 9, "p"],
+ ["-", 11, "t"]
]
]
end
def correct_forward_sdiff
[
- ['-', [0, 'a'], [0, nil]],
- ['=', [1, 'b'], [0, 'b']],
- ['=', [2, 'c'], [1, 'c']],
- ['+', [3, nil], [2, 'd']],
- ['=', [3, 'e'], [3, 'e']],
- ['!', [4, 'h'], [4, 'f']],
- ['=', [5, 'j'], [5, 'j']],
- ['+', [6, nil], [6, 'k']],
- ['=', [6, 'l'], [7, 'l']],
- ['=', [7, 'm'], [8, 'm']],
- ['!', [8, 'n'], [9, 'r']],
- ['!', [9, 'p'], [10, 's']],
- ['+', [10, nil], [11, 't']]
+ ["-", [0, "a"], [0, nil]],
+ ["=", [1, "b"], [0, "b"]],
+ ["=", [2, "c"], [1, "c"]],
+ ["+", [3, nil], [2, "d"]],
+ ["=", [3, "e"], [3, "e"]],
+ ["!", [4, "h"], [4, "f"]],
+ ["=", [5, "j"], [5, "j"]],
+ ["+", [6, nil], [6, "k"]],
+ ["=", [6, "l"], [7, "l"]],
+ ["=", [7, "m"], [8, "m"]],
+ ["!", [8, "n"], [9, "r"]],
+ ["!", [9, "p"], [10, "s"]],
+ ["+", [10, nil], [11, "t"]]
]
end
+ # standard:enable Layout/ExtraSpacing
def reverse_sdiff(forward_sdiff)
forward_sdiff.map { |line|
line[1], line[2] = line[2], line[1]
case line[0]
- when '-' then line[0] = '+'
- when '+' then line[0] = '-'
+ when "-" then line[0] = "+"
+ when "+" then line[0] = "-"
end
line
}
@@ -195,8 +197,8 @@ module Diff::LCS::SpecHelper
def format_diffs(diffs)
diffs.map { |e|
- if e.kind_of?(Array)
- e.map { |f| f.to_a.join }.join(', ')
+ if e.is_a?(Array)
+ e.map { |f| f.to_a.join }.join(", ")
else
e.to_a.join
end
@@ -224,10 +226,10 @@ module Diff::LCS::SpecHelper
change_result.each do |line|
line = [line[0], line[2], line[1]]
case line[0]
- when '<'
- line[0] = '>'
- when '>'
- line[0] = '<'
+ when "<"
+ line[0] = ">"
+ when ">"
+ line[0] = "<"
end
new_result << line
end
@@ -238,9 +240,9 @@ module Diff::LCS::SpecHelper
new_result = []
change_result.each do |line|
case line[0]
- when '!'
- new_result << ['<', line[1], line[2]]
- new_result << ['>', line[1] + 1, line[2]]
+ when "!"
+ new_result << ["<", line[1], line[2]]
+ new_result << [">", line[1] + 1, line[2]]
else
new_result << line
end
@@ -317,19 +319,19 @@ module Diff::LCS::SpecHelper
end
def match(event)
- @result << ['=', event.old_position, event.new_position]
+ @result << ["=", event.old_position, event.new_position]
end
def discard_a(event)
- @result << ['<', event.old_position, event.new_position]
+ @result << ["<", event.old_position, event.new_position]
end
def discard_b(event)
- @result << ['>', event.old_position, event.new_position]
+ @result << [">", event.old_position, event.new_position]
end
def change(event)
- @result << ['!', event.old_position, event.new_position]
+ @result << ["!", event.old_position, event.new_position]
end
end
cb.reset
@@ -355,9 +357,7 @@ module Diff::LCS::SpecHelper
matcher :correctly_map_sequence do |s1|
match do |actual|
- actual.each_with_index { |ee, ii|
- expect(ee).to be_nil_or_match_values(ii, s1, @s2)
- }
+ actual.each_index { |ii| expect(actual[ii]).to be_nil_or_match_values(ii, s1, @s2) }
end
chain :to_other_sequence do |s2|
@@ -369,6 +369,8 @@ end
RSpec.configure do |conf|
conf.include Diff::LCS::SpecHelper
- conf.alias_it_should_behave_like_to :it_has_behavior, 'has behavior:'
+ conf.alias_it_should_behave_like_to :it_has_behavior, "has behavior:"
+ # standard:disable Style/HashSyntax
conf.filter_run_excluding :broken => true
+ # standard:enable Style/HashSyntax
end
diff --git a/spec/traverse_balanced_spec.rb b/spec/traverse_balanced_spec.rb
index 9ee68ea..3a3f677 100644
--- a/spec/traverse_balanced_spec.rb
+++ b/spec/traverse_balanced_spec.rb
@@ -1,310 +1,312 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
-describe 'Diff::LCS.traverse_balanced' do
+describe "Diff::LCS.traverse_balanced" do
include Diff::LCS::SpecHelper::Matchers
- shared_examples 'with a #change callback' do |s1, s2, result|
- it 'traverses s1 -> s2 correctly' do
+ shared_examples "with a #change callback" do |s1, s2, result|
+ it "traverses s1 -> s2 correctly" do
traversal = balanced_traversal(s1, s2, :balanced_callback)
expect(traversal.result).to eq(result)
end
- it 'traverses s2 -> s1 correctly' do
+ it "traverses s2 -> s1 correctly" do
traversal = balanced_traversal(s2, s1, :balanced_callback)
expect(traversal.result).to eq(balanced_reverse(result))
end
end
- shared_examples 'without a #change callback' do |s1, s2, result|
- it 'traverses s1 -> s2 correctly' do
+ shared_examples "without a #change callback" do |s1, s2, result|
+ it "traverses s1 -> s2 correctly" do
traversal = balanced_traversal(s1, s2, :balanced_callback_no_change)
expect(traversal.result).to eq(map_to_no_change(result))
end
- it 'traverses s2 -> s1 correctly' do
+ it "traverses s2 -> s1 correctly" do
traversal = balanced_traversal(s2, s1, :balanced_callback_no_change)
expect(traversal.result).to eq(map_to_no_change(balanced_reverse(result)))
end
end
describe "identical string sequences ('abc')" do
- s1 = s2 = 'abc'
+ s1 = s2 = "abc"
result = [
- ['=', 0, 0],
- ['=', 1, 1],
- ['=', 2, 2]
+ ["=", 0, 0],
+ ["=", 1, 1],
+ ["=", 2, 2]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'identical array sequences %w(a b c)' do
- s1 = s2 = %w(a b c)
+ describe "identical array sequences %w(a b c)" do
+ s1 = s2 = %w[a b c]
result = [
- ['=', 0, 0],
- ['=', 1, 1],
- ['=', 2, 2]
+ ["=", 0, 0],
+ ["=", 1, 1],
+ ["=", 2, 2]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(a b c) & %w(a x c)' do
- s1 = %w(a b c)
- s2 = %w(a x c)
+ describe "sequences %w(a b c) & %w(a x c)" do
+ s1 = %w[a b c]
+ s2 = %w[a x c]
result = [
- ['=', 0, 0],
- ['!', 1, 1],
- ['=', 2, 2]
+ ["=", 0, 0],
+ ["!", 1, 1],
+ ["=", 2, 2]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(a x y c) & %w(a v w c)' do
- s1 = %w(a x y c)
- s2 = %w(a v w c)
+ describe "sequences %w(a x y c) & %w(a v w c)" do
+ s1 = %w[a x y c]
+ s2 = %w[a v w c]
result = [
- ['=', 0, 0],
- ['!', 1, 1],
- ['!', 2, 2],
- ['=', 3, 3]
+ ["=", 0, 0],
+ ["!", 1, 1],
+ ["!", 2, 2],
+ ["=", 3, 3]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(x y c) & %w(v w c)' do
- s1 = %w(x y c)
- s2 = %w(v w c)
+ describe "sequences %w(x y c) & %w(v w c)" do
+ s1 = %w[x y c]
+ s2 = %w[v w c]
result = [
- ['!', 0, 0],
- ['!', 1, 1],
- ['=', 2, 2]
+ ["!", 0, 0],
+ ["!", 1, 1],
+ ["=", 2, 2]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(a x y z) & %w(b v w)' do
- s1 = %w(a x y z)
- s2 = %w(b v w)
+ describe "sequences %w(a x y z) & %w(b v w)" do
+ s1 = %w[a x y z]
+ s2 = %w[b v w]
result = [
- ['!', 0, 0],
- ['!', 1, 1],
- ['!', 2, 2],
- ['<', 3, 3]
+ ["!", 0, 0],
+ ["!", 1, 1],
+ ["!", 2, 2],
+ ["<", 3, 3]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(a z) & %w(a)' do
- s1 = %w(a z)
- s2 = %w(a)
+ describe "sequences %w(a z) & %w(a)" do
+ s1 = %w[a z]
+ s2 = %w[a]
result = [
- ['=', 0, 0],
- ['<', 1, 1]
+ ["=", 0, 0],
+ ["<", 1, 1]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(z a) & %w(a)' do
- s1 = %w(z a)
- s2 = %w(a)
+ describe "sequences %w(z a) & %w(a)" do
+ s1 = %w[z a]
+ s2 = %w[a]
result = [
- ['<', 0, 0],
- ['=', 1, 0]
+ ["<", 0, 0],
+ ["=", 1, 0]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(a b c) & %w(x y z)' do
- s1 = %w(a b c)
- s2 = %w(x y z)
+ describe "sequences %w(a b c) & %w(x y z)" do
+ s1 = %w[a b c]
+ s2 = %w[x y z]
result = [
- ['!', 0, 0],
- ['!', 1, 1],
- ['!', 2, 2]
+ ["!", 0, 0],
+ ["!", 1, 1],
+ ["!", 2, 2]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'sequences %w(abcd efgh ijkl mnoopqrstuvwxyz) & []' do
- s1 = %w(abcd efgh ijkl mnopqrstuvwxyz)
+ describe "sequences %w(abcd efgh ijkl mnoopqrstuvwxyz) & []" do
+ s1 = %w[abcd efgh ijkl mnopqrstuvwxyz]
s2 = []
result = [
- ['<', 0, 0],
- ['<', 1, 0],
- ['<', 2, 0],
- ['<', 3, 0]
+ ["<", 0, 0],
+ ["<", 1, 0],
+ ["<", 2, 0],
+ ["<", 3, 0]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(a b c) & %q(a x c)' do
- s1 = 'a b c'
- s2 = 'a x c'
+ describe "strings %q(a b c) & %q(a x c)" do
+ s1 = "a b c"
+ s2 = "a x c"
result = [
- ['=', 0, 0],
- ['=', 1, 1],
- ['!', 2, 2],
- ['=', 3, 3],
- ['=', 4, 4]
+ ["=", 0, 0],
+ ["=", 1, 1],
+ ["!", 2, 2],
+ ["=", 3, 3],
+ ["=", 4, 4]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(a x y c) & %q(a v w c)' do
- s1 = 'a x y c'
- s2 = 'a v w c'
+ describe "strings %q(a x y c) & %q(a v w c)" do
+ s1 = "a x y c"
+ s2 = "a v w c"
result = [
- ['=', 0, 0],
- ['=', 1, 1],
- ['!', 2, 2],
- ['=', 3, 3],
- ['!', 4, 4],
- ['=', 5, 5],
- ['=', 6, 6]
+ ["=", 0, 0],
+ ["=", 1, 1],
+ ["!", 2, 2],
+ ["=", 3, 3],
+ ["!", 4, 4],
+ ["=", 5, 5],
+ ["=", 6, 6]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(x y c) & %q(v w c)' do
- s1 = 'x y c'
- s2 = 'v w c'
+ describe "strings %q(x y c) & %q(v w c)" do
+ s1 = "x y c"
+ s2 = "v w c"
result = [
- ['!', 0, 0],
- ['=', 1, 1],
- ['!', 2, 2],
- ['=', 3, 3],
- ['=', 4, 4]
+ ["!", 0, 0],
+ ["=", 1, 1],
+ ["!", 2, 2],
+ ["=", 3, 3],
+ ["=", 4, 4]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(a x y z) & %q(b v w)' do
- s1 = 'a x y z'
- s2 = 'b v w'
+ describe "strings %q(a x y z) & %q(b v w)" do
+ s1 = "a x y z"
+ s2 = "b v w"
result = [
- ['!', 0, 0],
- ['=', 1, 1],
- ['!', 2, 2],
- ['=', 3, 3],
- ['!', 4, 4],
- ['<', 5, 5],
- ['<', 6, 5]
+ ["!", 0, 0],
+ ["=", 1, 1],
+ ["!", 2, 2],
+ ["=", 3, 3],
+ ["!", 4, 4],
+ ["<", 5, 5],
+ ["<", 6, 5]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(a z) & %q(a)' do
- s1 = 'a z'
- s2 = 'a'
+ describe "strings %q(a z) & %q(a)" do
+ s1 = "a z"
+ s2 = "a"
result = [
- ['=', 0, 0],
- ['<', 1, 1],
- ['<', 2, 1]
+ ["=", 0, 0],
+ ["<", 1, 1],
+ ["<", 2, 1]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(z a) & %q(a)' do
- s1 = 'z a'
- s2 = 'a'
+ describe "strings %q(z a) & %q(a)" do
+ s1 = "z a"
+ s2 = "a"
result = [
- ['<', 0, 0],
- ['<', 1, 0],
- ['=', 2, 0]
+ ["<", 0, 0],
+ ["<", 1, 0],
+ ["=", 2, 0]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(a b c) & %q(x y z)' do
- s1 = 'a b c'
- s2 = 'x y z'
+ describe "strings %q(a b c) & %q(x y z)" do
+ s1 = "a b c"
+ s2 = "x y z"
result = [
- ['!', 0, 0],
- ['=', 1, 1],
- ['!', 2, 2],
- ['=', 3, 3],
- ['!', 4, 4]
+ ["!", 0, 0],
+ ["=", 1, 1],
+ ["!", 2, 2],
+ ["=", 3, 3],
+ ["!", 4, 4]
]
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
- describe 'strings %q(abcd efgh ijkl mnopqrstuvwxyz) & %q()' do
- s1 = 'abcd efgh ijkl mnopqrstuvwxyz'
- s2 = ''
+ describe "strings %q(abcd efgh ijkl mnopqrstuvwxyz) & %q()" do
+ s1 = "abcd efgh ijkl mnopqrstuvwxyz"
+ s2 = ""
+ # standard:disable Layout/ExtraSpacing
result = [
- ['<', 0, 0],
- ['<', 1, 0],
- ['<', 2, 0],
- ['<', 3, 0],
- ['<', 4, 0],
- ['<', 5, 0],
- ['<', 6, 0],
- ['<', 7, 0],
- ['<', 8, 0],
- ['<', 9, 0],
- ['<', 10, 0],
- ['<', 11, 0],
- ['<', 12, 0],
- ['<', 13, 0],
- ['<', 14, 0],
- ['<', 15, 0],
- ['<', 16, 0],
- ['<', 17, 0],
- ['<', 18, 0],
- ['<', 19, 0],
- ['<', 20, 0],
- ['<', 21, 0],
- ['<', 22, 0],
- ['<', 23, 0],
- ['<', 24, 0],
- ['<', 25, 0],
- ['<', 26, 0],
- ['<', 27, 0],
- ['<', 28, 0]
+ ["<", 0, 0],
+ ["<", 1, 0],
+ ["<", 2, 0],
+ ["<", 3, 0],
+ ["<", 4, 0],
+ ["<", 5, 0],
+ ["<", 6, 0],
+ ["<", 7, 0],
+ ["<", 8, 0],
+ ["<", 9, 0],
+ ["<", 10, 0],
+ ["<", 11, 0],
+ ["<", 12, 0],
+ ["<", 13, 0],
+ ["<", 14, 0],
+ ["<", 15, 0],
+ ["<", 16, 0],
+ ["<", 17, 0],
+ ["<", 18, 0],
+ ["<", 19, 0],
+ ["<", 20, 0],
+ ["<", 21, 0],
+ ["<", 22, 0],
+ ["<", 23, 0],
+ ["<", 24, 0],
+ ["<", 25, 0],
+ ["<", 26, 0],
+ ["<", 27, 0],
+ ["<", 28, 0]
]
+ # standard:enable Layout/ExtraSpacing
- it_has_behavior 'with a #change callback', s1, s2, result
- it_has_behavior 'without a #change callback', s1, s2, result
+ it_has_behavior "with a #change callback", s1, s2, result
+ it_has_behavior "without a #change callback", s1, s2, result
end
end
diff --git a/spec/traverse_sequences_spec.rb b/spec/traverse_sequences_spec.rb
index b185e1d..8e9928f 100644
--- a/spec/traverse_sequences_spec.rb
+++ b/spec/traverse_sequences_spec.rb
@@ -1,10 +1,10 @@
# frozen_string_literal: true
-require 'spec_helper'
+require "spec_helper"
-describe 'Diff::LCS.traverse_sequences' do
- describe 'callback with no finishers' do
- describe 'over (seq1, seq2)' do
+describe "Diff::LCS.traverse_sequences" do
+ describe "callback with no finishers" do
+ describe "over (seq1, seq2)" do
before(:each) do
@callback_s1_s2 = simple_callback_no_finishers
Diff::LCS.traverse_sequences(seq1, seq2, @callback_s1_s2)
@@ -13,27 +13,27 @@ describe 'Diff::LCS.traverse_sequences' do
Diff::LCS.traverse_sequences(seq2, seq1, @callback_s2_s1)
end
- it 'has the correct LCS result on left-matches' do
+ it "has the correct LCS result on left-matches" do
expect(@callback_s1_s2.matched_a).to eq(correct_lcs)
expect(@callback_s2_s1.matched_a).to eq(correct_lcs)
end
- it 'has the correct LCS result on right-matches' do
+ it "has the correct LCS result on right-matches" do
expect(@callback_s1_s2.matched_b).to eq(correct_lcs)
expect(@callback_s2_s1.matched_b).to eq(correct_lcs)
end
- it 'has the correct skipped sequences with the left sequence' do
+ it "has the correct skipped sequences with the left sequence" do
expect(@callback_s1_s2.discards_a).to eq(skipped_seq1)
expect(@callback_s2_s1.discards_a).to eq(skipped_seq2)
end
- it 'has the correct skipped sequences with the right sequence' do
+ it "has the correct skipped sequences with the right sequence" do
expect(@callback_s1_s2.discards_b).to eq(skipped_seq2)
expect(@callback_s2_s1.discards_b).to eq(skipped_seq1)
end
- it 'does not have anything done markers from the left or right sequences' do
+ it "does not have anything done markers from the left or right sequences" do
expect(@callback_s1_s2.done_a).to be_empty
expect(@callback_s1_s2.done_b).to be_empty
expect(@callback_s2_s1.done_a).to be_empty
@@ -41,64 +41,64 @@ describe 'Diff::LCS.traverse_sequences' do
end
end
- describe 'over (hello, hello)' do
+ describe "over (hello, hello)" do
before(:each) do
@callback = simple_callback_no_finishers
Diff::LCS.traverse_sequences(hello, hello, @callback)
end
- it 'has the correct LCS result on left-matches' do
- expect(@callback.matched_a).to eq(hello.split(//))
+ it "has the correct LCS result on left-matches" do
+ expect(@callback.matched_a).to eq(hello.chars)
end
- it 'has the correct LCS result on right-matches' do
- expect(@callback.matched_b).to eq(hello.split(//))
+ it "has the correct LCS result on right-matches" do
+ expect(@callback.matched_b).to eq(hello.chars)
end
- it 'has the correct skipped sequences with the left sequence', :only => true do
+ it "has the correct skipped sequences with the left sequence" do
expect(@callback.discards_a).to be_empty
end
- it 'has the correct skipped sequences with the right sequence' do
+ it "has the correct skipped sequences with the right sequence" do
expect(@callback.discards_b).to be_empty
end
- it 'does not have anything done markers from the left or right sequences' do
+ it "does not have anything done markers from the left or right sequences" do
expect(@callback.done_a).to be_empty
expect(@callback.done_b).to be_empty
end
end
- describe 'over (hello_ary, hello_ary)' do
+ describe "over (hello_ary, hello_ary)" do
before(:each) do
@callback = simple_callback_no_finishers
Diff::LCS.traverse_sequences(hello_ary, hello_ary, @callback)
end
- it 'has the correct LCS result on left-matches' do
+ it "has the correct LCS result on left-matches" do
expect(@callback.matched_a).to eq(hello_ary)
end
- it 'has the correct LCS result on right-matches' do
+ it "has the correct LCS result on right-matches" do
expect(@callback.matched_b).to eq(hello_ary)
end
- it 'has the correct skipped sequences with the left sequence' do
+ it "has the correct skipped sequences with the left sequence" do
expect(@callback.discards_a).to be_empty
end
- it 'has the correct skipped sequences with the right sequence' do
+ it "has the correct skipped sequences with the right sequence" do
expect(@callback.discards_b).to be_empty
end
- it 'does not have anything done markers from the left or right sequences' do
+ it "does not have anything done markers from the left or right sequences" do
expect(@callback.done_a).to be_empty
expect(@callback.done_b).to be_empty
end
end
end
- describe 'callback with finisher' do
+ describe "callback with finisher" do
before(:each) do
@callback_s1_s2 = simple_callback
Diff::LCS.traverse_sequences(seq1, seq2, @callback_s1_s2)
@@ -106,32 +106,32 @@ describe 'Diff::LCS.traverse_sequences' do
Diff::LCS.traverse_sequences(seq2, seq1, @callback_s2_s1)
end
- it 'has the correct LCS result on left-matches' do
+ it "has the correct LCS result on left-matches" do
expect(@callback_s1_s2.matched_a).to eq(correct_lcs)
expect(@callback_s2_s1.matched_a).to eq(correct_lcs)
end
- it 'has the correct LCS result on right-matches' do
+ it "has the correct LCS result on right-matches" do
expect(@callback_s1_s2.matched_b).to eq(correct_lcs)
expect(@callback_s2_s1.matched_b).to eq(correct_lcs)
end
- it 'has the correct skipped sequences for the left sequence' do
+ it "has the correct skipped sequences for the left sequence" do
expect(@callback_s1_s2.discards_a).to eq(skipped_seq1)
expect(@callback_s2_s1.discards_a).to eq(skipped_seq2)
end
- it 'has the correct skipped sequences for the right sequence' do
+ it "has the correct skipped sequences for the right sequence" do
expect(@callback_s1_s2.discards_b).to eq(skipped_seq2)
expect(@callback_s2_s1.discards_b).to eq(skipped_seq1)
end
- it 'has done markers differently-sized sequences' do
- expect(@callback_s1_s2.done_a).to eq([['p', 9, 't', 11]])
+ it "has done markers differently-sized sequences" do
+ expect(@callback_s1_s2.done_a).to eq([["p", 9, "t", 11]])
expect(@callback_s1_s2.done_b).to be_empty
expect(@callback_s2_s1.done_a).to be_empty
- expect(@callback_s2_s1.done_b).to eq([['t', 11, 'p', 9]])
+ expect(@callback_s2_s1.done_b).to eq([["t", 11, "p", 9]])
end
end
end