tdiff 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []