tdiff 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6d61fc5d074be499bc2ae185b6449d10354fe3dfd2dfda2ad1529f246dc1cb39
4
+ data.tar.gz: 4496f53bef15c4e46d195434458ded3a6f13b65afda56a755d5d3128a3b94463
5
+ SHA512:
6
+ metadata.gz: 2ab9b88ebc51c447c49c19b8823849d3b8b25f7d3c981bda20c74743415dd8e6062371a67493245160a6d31f004a3e06cf97357c57576c981b6f2a93da7af60d
7
+ data.tar.gz: 461c9fcc0bd2ad6d48a7801f6f847baadbabe6e55c4b75d3dd50e86400fdab477ecb910a70a8972cd6460261e149c639ae64af3d3b2a111d363cea5a6130a599
@@ -0,0 +1,28 @@
1
+ name: CI
2
+
3
+ on: [ push, pull_request ]
4
+
5
+ jobs:
6
+ tests:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby:
12
+ - '3.0'
13
+ - '3.1'
14
+ - '3.2'
15
+ - '3.3'
16
+ - jruby
17
+ - truffleruby
18
+ name: Ruby ${{ matrix.ruby }}
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - name: Set up Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: ${{ matrix.ruby }}
25
+ - name: Install dependencies
26
+ run: bundle install --jobs 4 --retry 3
27
+ - name: Run tests
28
+ run: bundle exec rake test
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
+ Gemfile.lock
1
2
  doc/
2
3
  pkg/
data/ChangeLog.md CHANGED
@@ -1,3 +1,12 @@
1
+ ### 0.4.0 / 2024-01-24
2
+
3
+ * Switched to using `require_relative` to improve load-times.
4
+ * Added `# frozen_string_literal: true` to all files.
5
+
6
+ ### 0.3.4 / 2018-06-11
7
+
8
+ * Fixed shadowed variable warning (@bhollis).
9
+
1
10
  ### 0.3.3 / 2012-05-28
2
11
 
3
12
  * Require ruby >= 1.8.7.
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem 'rake'
7
+ gem 'rubygems-tasks', '~> 0.1'
8
+
9
+ gem 'rspec', '~> 3.0'
10
+
11
+ gem 'kramdown'
12
+ gem 'redcarpet', platform: :mri
13
+ gem 'yard', '~> 0.9'
14
+ end
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Hal Brodigan
1
+ Copyright (c) 2010-2024 Hal Brodigan
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  * [Source](https://github.com/postmodern/tdiff)
4
4
  * [Issues](https://github.com/postmodern/tdiff/issues)
5
- * Postmodern (postmodern.mod3 at gmail.com)
5
+ * [Documentation](https://rubydoc.info/gems/tdiff)
6
6
 
7
7
  ## Description
8
8
 
@@ -22,56 +22,62 @@ module.
22
22
 
23
23
  Diff two HTML documents:
24
24
 
25
- require 'nokogiri'
26
- require 'tdiff'
25
+ ```ruby
26
+ require 'nokogiri'
27
+ require 'tdiff'
27
28
 
28
- class Nokogiri::XML::Node
29
+ class Nokogiri::XML::Node
29
30
 
30
- include TDiff
31
+ include TDiff
31
32
 
32
- def tdiff_equal(node)
33
- if (self.text? && node.text?)
34
- self.text == node.text
35
- elsif (self.respond_to?(:root) && node.respond_to?(:root))
36
- self.root.tdiff_equal(node.root)
37
- elsif (self.respond_to?(:name) && node.respond_to?(:name))
38
- self.name == node.name
39
- else
40
- false
41
- end
42
- end
33
+ def tdiff_equal(node)
34
+ if (self.text? && node.text?)
35
+ self.text == node.text
36
+ elsif (self.respond_to?(:root) && node.respond_to?(:root))
37
+ self.root.tdiff_equal(node.root)
38
+ elsif (self.respond_to?(:name) && node.respond_to?(:name))
39
+ self.name == node.name
40
+ else
41
+ false
42
+ end
43
+ end
43
44
 
44
- def tdiff_each_child(node,&block)
45
- node.children.each(&block)
46
- end
45
+ def tdiff_each_child(node,&block)
46
+ node.children.each(&block)
47
+ end
47
48
 
48
- end
49
+ end
49
50
 
50
- doc1 = Nokogiri::HTML('<div><p>one</p> <p>three</p></div>')
51
- doc2 = Nokogiri::HTML('<div><p>one</p> <p>two</p> <p>three</p></div>')
51
+ doc1 = Nokogiri::HTML('<div><p>one</p> <p>three</p></div>')
52
+ doc2 = Nokogiri::HTML('<div><p>one</p> <p>two</p> <p>three</p></div>')
52
53
 
53
- doc1.at('div').tdiff(doc2.at('div')) do |change,node|
54
- puts "#{change} #{node.to_html}".ljust(30) + node.parent.path
55
- end
54
+ doc1.at('div').tdiff(doc2.at('div')) do |change,node|
55
+ puts "#{change} #{node.to_html}".ljust(30) + node.parent.path
56
+ end
57
+ ```
56
58
 
57
59
  ### Output
58
60
 
59
- + <p>one</p> /html/body/div
60
- + /html/body/div
61
- <p>one</p> /html/body/div
62
- /html/body/div
63
- <p>three</p> /html/body/div
64
- - one /html/body/div/p[1]
65
- + two /html/body/div/p[2]
66
- three /html/body/div/p[2]
61
+ ```
62
+ + <p>one</p> /html/body/div
63
+ + /html/body/div
64
+ <p>one</p> /html/body/div
65
+ /html/body/div
66
+ <p>three</p> /html/body/div
67
+ - one /html/body/div/p[1]
68
+ + two /html/body/div/p[2]
69
+ three /html/body/div/p[2]
70
+ ```
67
71
 
68
72
  ## Requirements
69
73
 
70
- * [ruby](http://www.ruby-lang.org/) >= 1.8.7
74
+ * [ruby](http://www.ruby-lang.org/) >= 2.0.0
71
75
 
72
76
  ## Install
73
77
 
74
- $ gem install tdiff
78
+ ```shell
79
+ $ gem install tdiff
80
+ ```
75
81
 
76
82
  ## Copyright
77
83
 
data/Rakefile CHANGED
@@ -1,36 +1,11 @@
1
1
  require 'rubygems'
2
- require 'rake'
2
+ require 'rubygems/tasks'
3
+ Gem::Tasks.new
3
4
 
4
- begin
5
- gem 'rubygems-tasks', '~> 0.1'
6
- require 'rubygems/tasks'
7
-
8
- Gem::Tasks.new
9
- rescue LoadError => e
10
- warn e.message
11
- warn "Run `gem install rubygems-tasks` to install 'rubygems/tasks'."
12
- end
13
-
14
- begin
15
- gem 'rspec', '~> 2.4'
16
- require 'rspec/core/rake_task'
17
-
18
- RSpec::Core::RakeTask.new
19
- rescue LoadError => e
20
- task :spec do
21
- abort "Please run `gem install rspec` to install RSpec."
22
- end
23
- end
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new
24
7
  task :test => :spec
25
8
  task :default => :spec
26
9
 
27
- begin
28
- gem 'yard', '~> 0.7'
29
- require 'yard'
30
-
31
- YARD::Rake::YardocTask.new
32
- rescue LoadError => e
33
- task :yard do
34
- abort "Please run `gem install yard` to install YARD."
35
- end
36
- end
10
+ require 'yard'
11
+ YARD::Rake::YardocTask.new
data/gemspec.yml CHANGED
@@ -10,9 +10,14 @@ email: postmodern.mod3@gmail.com
10
10
  homepage: https://github.com/postmodern/tdiff#readme
11
11
  has_yard: true
12
12
 
13
- required_ruby_version: ">= 1.8.7"
13
+ metadata:
14
+ documentation_uri: https://rubydoc.info/gems/tdiff
15
+ source_code_uri: https://github.com/postmodern/tdiff
16
+ bug_tracker_uri: https://github.com/postmodern/tdiff/issues
17
+ changelog_uri: https://github.com/postmodern/tdiff/blob/main/ChangeLog.md
18
+ rubygems_mfa_required: 'true'
19
+
20
+ required_ruby_version: ">= 2.0.0"
14
21
 
15
22
  development_dependencies:
16
- rubygems-tasks: ~> 0.1
17
- rspec: ~> 2.4
18
- yard: ~> 0.7
23
+ bundler: ~> 2.0
data/lib/tdiff/tdiff.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #
2
4
  # {TDiff} adds the ability to calculate the differences between two tree-like
3
5
  # objects. Simply include {TDiff} into the class which represents the tree
@@ -148,7 +150,7 @@ module TDiff
148
150
  changes = nil
149
151
 
150
152
  # recurse down through unchanged nodes
151
- unchanged.each { |x,y| x.tdiff_recursive(y,&block) }
153
+ unchanged.each { |a,b| a.tdiff_recursive(b,&block) }
152
154
  unchanged = nil
153
155
  end
154
156
  end
@@ -1,4 +1,6 @@
1
- require 'tdiff/tdiff'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'tdiff'
2
4
 
3
5
  module TDiff
4
6
  #
data/lib/tdiff/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module TDiff
2
- VERSION = '0.3.3'
4
+ VERSION = '0.4.0'
3
5
  end
data/lib/tdiff.rb CHANGED
@@ -1,3 +1,5 @@
1
- require 'tdiff/tdiff'
2
- require 'tdiff/unordered'
3
- require 'tdiff/version'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'tdiff/tdiff'
4
+ require_relative 'tdiff/unordered'
5
+ require_relative 'tdiff/version'
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,3 @@
1
- gem 'rspec', '~> 2.4'
2
1
  require 'rspec'
3
2
 
4
3
  require 'helpers/trees'
@@ -5,36 +5,36 @@ shared_examples_for 'TDiff' do |method|
5
5
  include Helpers::Trees
6
6
 
7
7
  it "should tell if two trees are identical" do
8
- @tree.send(method,@tree).all? { |change,node|
9
- change == ' '
10
- }.should == true
8
+ expect(
9
+ @tree.send(method,@tree).all? { |change,node| change == ' ' }
10
+ ).to be true
11
11
  end
12
12
 
13
13
  it "should stop if the root nodes have changed" do
14
14
  changes = @tree.send(method,@different_root).to_a
15
15
 
16
- changes.length.should == 2
16
+ expect(changes.length).to be 2
17
17
 
18
- changes[0][0].should == '-'
19
- changes[0][1].should == @tree
18
+ expect(changes[0][0]).to be == '-'
19
+ expect(changes[0][1]).to be == @tree
20
20
 
21
- changes[1][0].should == '+'
22
- changes[1][1].should == @different_root
21
+ expect(changes[1][0]).to be == '+'
22
+ expect(changes[1][1]).to be == @different_root
23
23
  end
24
24
 
25
25
  it "should tell when sub-nodes are added" do
26
26
  changes = @tree.send(method,@added).select { |change,node| change == '+' }
27
27
 
28
- changes.length.should == 1
29
- changes[0][0].should == '+'
30
- changes[0][1].should == @added.children[0].children[1]
28
+ expect(changes.length).to be 1
29
+ expect(changes[0][0]).to be == '+'
30
+ expect(changes[0][1]).to be == @added.children[0].children[1]
31
31
  end
32
32
 
33
33
  it "should tell when sub-nodes are removed" do
34
34
  changes = @tree.send(method,@removed).select { |change,node| change == '-' }
35
35
 
36
- changes.length.should == 1
37
- changes[0][0].should == '-'
38
- changes[0][1].should == @tree.children[0].children[1]
36
+ expect(changes.length).to be 1
37
+ expect(changes[0][0]).to be == '-'
38
+ expect(changes[0][1]).to be == @tree.children[0].children[1]
39
39
  end
40
40
  end
data/spec/tdiff_spec.rb CHANGED
@@ -11,24 +11,24 @@ describe TDiff do
11
11
  it "should detect when the order of children has changed" do
12
12
  changes = @tree.tdiff(@changed_order).to_a
13
13
 
14
- changes.length.should == 6
14
+ expect(changes.length).to be == 6
15
15
 
16
- changes[0][0].should == ' '
17
- changes[0][1].should == @tree
16
+ expect(changes[0][0]).to be == ' '
17
+ expect(changes[0][1]).to be == @tree
18
18
 
19
- changes[1][0].should == '-'
20
- changes[1][1].should == @tree.children[0]
19
+ expect(changes[1][0]).to be == '-'
20
+ expect(changes[1][1]).to be == @tree.children[0]
21
21
 
22
- changes[2][0].should == ' '
23
- changes[2][1].should == @tree.children[1]
22
+ expect(changes[2][0]).to be == ' '
23
+ expect(changes[2][1]).to be == @tree.children[1]
24
24
 
25
- changes[3][0].should == '+'
26
- changes[3][1].should == @changed_order.children[1]
25
+ expect(changes[3][0]).to be == '+'
26
+ expect(changes[3][1]).to be == @changed_order.children[1]
27
27
 
28
- changes[4][0].should == ' '
29
- changes[4][1].should == @tree.children[1].children[0]
28
+ expect(changes[4][0]).to be == ' '
29
+ expect(changes[4][1]).to be == @tree.children[1].children[0]
30
30
 
31
- changes[5][0].should == ' '
32
- changes[5][1].should == @tree.children[1].children[1]
31
+ expect(changes[5][0]).to be == ' '
32
+ expect(changes[5][1]).to be == @tree.children[1].children[1]
33
33
  end
34
34
  end
@@ -11,7 +11,7 @@ describe TDiff::Unordered do
11
11
  include TDiff::Unordered
12
12
  end
13
13
 
14
- base.should include(TDiff)
14
+ expect(base).to include(TDiff)
15
15
  end
16
16
 
17
17
  it_should_behave_like 'TDiff', :tdiff_unordered
@@ -21,6 +21,6 @@ describe TDiff::Unordered do
21
21
  change != ' '
22
22
  end
23
23
 
24
- changes.should be_empty
24
+ expect(changes).to be_empty
25
25
  end
26
26
  end
data/tdiff.gemspec CHANGED
@@ -7,10 +7,7 @@ Gem::Specification.new do |gem|
7
7
 
8
8
  gem.name = gemspec.fetch('name')
9
9
  gem.version = gemspec.fetch('version') do
10
- lib_dir = File.join(File.dirname(__FILE__),'lib')
11
- $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
12
-
13
- require 'tdiff/version'
10
+ require_relative 'lib/tdiff/version'
14
11
  TDiff::VERSION
15
12
  end
16
13
 
metadata CHANGED
@@ -1,64 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tdiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Postmodern
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-05-28 00:00:00.000000000 Z
11
+ date: 2024-01-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rubygems-tasks
14
+ name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0.1'
19
+ version: '2.0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.1'
30
- - !ruby/object:Gem::Dependency
31
- name: rspec
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: '2.4'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '2.4'
46
- - !ruby/object:Gem::Dependency
47
- name: yard
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: '0.7'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '0.7'
26
+ version: '2.0'
62
27
  description: Calculates the differences between two tree-like structures. Similar
63
28
  to Rubys built-in TSort module.
64
29
  email: postmodern.mod3@gmail.com
@@ -69,12 +34,14 @@ extra_rdoc_files:
69
34
  - LICENSE.txt
70
35
  - README.md
71
36
  files:
72
- - .document
73
- - .gemtest
74
- - .gitignore
75
- - .rspec
76
- - .yardopts
37
+ - ".document"
38
+ - ".gemtest"
39
+ - ".github/workflows/ruby.yml"
40
+ - ".gitignore"
41
+ - ".rspec"
42
+ - ".yardopts"
77
43
  - ChangeLog.md
44
+ - Gemfile
78
45
  - LICENSE.txt
79
46
  - README.md
80
47
  - Rakefile
@@ -93,26 +60,24 @@ files:
93
60
  homepage: https://github.com/postmodern/tdiff#readme
94
61
  licenses:
95
62
  - MIT
96
- post_install_message:
63
+ metadata: {}
64
+ post_install_message:
97
65
  rdoc_options: []
98
66
  require_paths:
99
67
  - lib
100
68
  required_ruby_version: !ruby/object:Gem::Requirement
101
- none: false
102
69
  requirements:
103
- - - ! '>='
70
+ - - ">="
104
71
  - !ruby/object:Gem::Version
105
- version: 1.8.7
72
+ version: 2.0.0
106
73
  required_rubygems_version: !ruby/object:Gem::Requirement
107
- none: false
108
74
  requirements:
109
- - - ! '>='
75
+ - - ">="
110
76
  - !ruby/object:Gem::Version
111
77
  version: '0'
112
78
  requirements: []
113
- rubyforge_project:
114
- rubygems_version: 1.8.24
115
- signing_key:
116
- specification_version: 3
79
+ rubygems_version: 3.4.10
80
+ signing_key:
81
+ specification_version: 4
117
82
  summary: Calculates the differences between two tree-like structures.
118
83
  test_files: []