markdiff 0.6.3 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 720d3daa84f7b4c40f555ef52f2e9912e1d8170a120be554069679beab0d1954
4
- data.tar.gz: 5b9a4631de297e8fa20e615d423c827075f0664b706f763334b65459bd8618a4
3
+ metadata.gz: 50d045a93d1bcd80cd9013959fac8d671c856e298a4d0834b0b1c97b1c920143
4
+ data.tar.gz: 16c0aad8bfdc01e84406ac9fd0201c65851429dc505f5519c23aac20221e5ebb
5
5
  SHA512:
6
- metadata.gz: 8d26e5b8cb610502f323eb8f7084c17c43a5879112b978a6faaae193d96d5534ff2254a6cac6af26988f44cc2be163130fc242667c0d591e8073fc5b6b3fb5cb
7
- data.tar.gz: 945860da782918d04fbb6d38c61e4ae447aa1c3e448e2ec422617c3c52a5bc2ce904e14d3c8aaec43c1ab325a3fcf8c4880329d63303e679eeda66acfbbd4e47
6
+ metadata.gz: 402f46556ab43370f244cd6adeb9ddd538d0dbc0a9668fa12ba25cf244b27b561c254ea9fb9173991c464d6d5775766f0d37a742209290cdda742d48bbed1fc7
7
+ data.tar.gz: 1c1e45375255e2a13ec0dffd193a06574abe0aff60154256ec0254d0c6b4bee6766404e9de108a4a1b470b75d5338195c9bf1d3505d00e1fee901f3119c6d755
@@ -0,0 +1,23 @@
1
+ name: test
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - master
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby:
15
+ - 2.7.3
16
+ - 3.1.3
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby }}
22
+ bundler-cache: true
23
+ - run: bundle exec rake
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
data/CHANGELOG.md CHANGED
@@ -1,60 +1,114 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ## 0.8.0
6
+
7
+ ### Changed
8
+
9
+ - Add class attributes to ins element: `.ins.ins-before` or `.ins.ins-after`.
10
+
11
+ ### Fixed
12
+
13
+ - Fix issue on insertion and deletion on same position.
14
+ - Fix issue with long sentences.
15
+
16
+ ## 0.7.0
17
+
18
+ ### Fixed
19
+
20
+ - Fixed replaces shown wrongly.
21
+
1
22
  ## 0.6.3
2
23
 
24
+ ### Fixed
25
+
3
26
  - Support diff-lcs v1.4+.
4
27
 
5
28
  ## 0.6.2
6
29
 
30
+ ### Changed
31
+
7
32
  - Support tr.added and tr.deleted.
8
33
 
9
34
  ## 0.6.1
10
35
 
36
+ ### Changed
37
+
11
38
  - Fix patch order bug by making sort stable.
12
39
 
13
40
  ## 0.6.0
14
41
 
42
+ ### Changed
43
+
15
44
  - Add .del class to all del elements.
16
45
 
17
46
  ## 0.5.5
18
47
 
48
+ ### Fixed
49
+
19
50
  - Preserve classes on adding new class (e.g. .added).
20
51
 
21
52
  ## 0.5.4
22
53
 
54
+ ### Fixed
55
+
23
56
  - Fix bug on patch operations order.
24
57
 
25
58
  ## 0.5.3
26
59
 
60
+ ### Fixed
61
+
27
62
  - Fix bug on comparing nodes.
28
63
 
29
64
  ## 0.5.2
30
65
 
66
+ ### Fixed
67
+
31
68
  - Fix bug on comparing attributes and text nodes.
32
69
 
33
70
  ## 0.5.1
34
71
 
72
+ ### Fixed
73
+
35
74
  - Fix bug on text-diff operation.
36
75
 
37
76
  ## 0.5.0
38
77
 
78
+ ### Changed
79
+
39
80
  - Wrap changed nodes by div.changed.
40
81
 
41
82
  ## 0.4.0
42
83
 
84
+ ### Changed
85
+
43
86
  - Chanage .changed specs.
87
+
88
+ ### Fixed
89
+
44
90
  - Fix bugs on text diff.
45
91
 
46
92
  ## 0.3.0
47
93
 
94
+ ### Changed
95
+
48
96
  - Support partial text diff.
49
97
 
50
98
  ## 0.2.1
51
99
 
100
+ ### Changed
101
+
52
102
  - Support li.added and li.removed.
53
103
 
54
104
  ## 0.2.0
55
105
 
106
+ ### Changed
107
+
56
108
  - Support div.changed and li.changed.
57
109
 
58
110
  ## 0.1.0
59
111
 
112
+ ### Added
113
+
60
114
  - 1st Release.
data/Gemfile.lock ADDED
@@ -0,0 +1,42 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ markdiff (0.8.0)
5
+ diff-lcs
6
+ nokogiri
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ diff-lcs (1.5.0)
12
+ nokogiri (1.14.2-x86_64-linux)
13
+ racc (~> 1.4)
14
+ racc (1.6.2)
15
+ rake (13.0.6)
16
+ redcarpet (3.6.0)
17
+ rspec (3.12.0)
18
+ rspec-core (~> 3.12.0)
19
+ rspec-expectations (~> 3.12.0)
20
+ rspec-mocks (~> 3.12.0)
21
+ rspec-core (3.12.1)
22
+ rspec-support (~> 3.12.0)
23
+ rspec-expectations (3.12.2)
24
+ diff-lcs (>= 1.2.0, < 2.0)
25
+ rspec-support (~> 3.12.0)
26
+ rspec-mocks (3.12.3)
27
+ diff-lcs (>= 1.2.0, < 2.0)
28
+ rspec-support (~> 3.12.0)
29
+ rspec-support (3.12.0)
30
+
31
+ PLATFORMS
32
+ x86_64-linux
33
+
34
+ DEPENDENCIES
35
+ bundler
36
+ markdiff!
37
+ rake
38
+ redcarpet
39
+ rspec
40
+
41
+ BUNDLED WITH
42
+ 2.3.6
data/README.md CHANGED
@@ -1,4 +1,8 @@
1
- # Markdiff [![Build Status](https://travis-ci.org/r7kamura/markdiff.svg)](https://travis-ci.org/r7kamura/markdiff)
1
+ # Markdiff
2
+
3
+ [![test](https://github.com/r7kamura/markdiff/actions/workflows/test.yml/badge.svg)](https://github.com/r7kamura/markdiff/actions/workflows/test.yml)
4
+ [![Gem Version](https://badge.fury.io/rb/markdiff.svg)](https://rubygems.org/gems/markdiff)
5
+
2
6
  Rendered Markdown differ.
3
7
 
4
8
  ## Usage
@@ -13,17 +13,37 @@ module Markdiff
13
13
 
14
14
  # @return [Nokogiri::XML::Node]
15
15
  def inserted_node
16
- before_elements = target_node.to_s.split(" ")
17
- after_elements = @after_node.to_s.split(" ")
18
- ::Diff::LCS.diff(before_elements, after_elements).flatten(1).each do |operation|
19
- type, position, element = *operation
20
- if type == "-"
21
- before_elements[position] = %(<del class="del">#{element}</del>)
22
- else
23
- before_elements[position] = "#{before_elements[position]}<ins>#{element}</ins>"
16
+ before_elements = target_node.to_s.split(' ')
17
+ after_elements = @after_node.to_s.split(' ')
18
+ last_operation = nil
19
+
20
+ groupings = ::Diff::LCS.sdiff(before_elements, after_elements)
21
+ .slice_when { |prev, cur| prev.action != cur.action }
22
+
23
+ output = groupings.map do |grouping|
24
+ action = grouping.first.action
25
+
26
+ response = case action
27
+ when "="
28
+ grouping.map(&:new_element).join(" ")
29
+ when "-"
30
+ %(<del class="del">#{grouping.map(&:old_element).join(" ")}</del>)
31
+ when "+"
32
+ %(<ins class="ins ins-before">#{grouping.map(&:new_element).join(" ")}</ins>)
33
+ when "!"
34
+ %(<del class="del">#{grouping.map(&:old_element).join(" ")}</del><ins class="ins ins-after">#{grouping.map(&:new_element).join(" ")}</ins>)
35
+ else
36
+ raise "Unknown action #{action}"
24
37
  end
38
+
39
+ response = " #{response}" if last_operation && last_operation != '+'
40
+
41
+ last_operation = action
42
+
43
+ response
25
44
  end
26
- ::Nokogiri::HTML.fragment(before_elements.join(" "))
45
+
46
+ ::Nokogiri::HTML.fragment(output.join(''))
27
47
  end
28
48
 
29
49
  def priority
@@ -1,3 +1,3 @@
1
1
  module Markdiff
2
- VERSION = "0.6.3"
2
+ VERSION = "0.8.0"
3
3
  end
data/markdiff.gemspec CHANGED
@@ -13,11 +13,10 @@ Gem::Specification.new do |spec|
13
13
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.start_with?("spec/") }
14
14
  spec.require_paths = ["lib"]
15
15
 
16
- spec.add_development_dependency "bundler", "~> 1.10"
17
- spec.add_development_dependency "pry", "0.10.3"
18
- spec.add_development_dependency "rake", "~> 10.0"
19
- spec.add_development_dependency "redcarpet", "3.3.3"
20
- spec.add_development_dependency "rspec", "3.4.0"
16
+ spec.add_development_dependency "bundler"
17
+ spec.add_development_dependency "rake"
18
+ spec.add_development_dependency "redcarpet"
19
+ spec.add_development_dependency "rspec"
21
20
  spec.add_runtime_dependency "diff-lcs"
22
21
  spec.add_runtime_dependency "nokogiri"
23
22
  end
metadata CHANGED
@@ -1,85 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: markdiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-28 00:00:00.000000000 Z
11
+ date: 2023-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.10'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.10'
27
- - !ruby/object:Gem::Dependency
28
- name: pry
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: 0.10.3
19
+ version: '0'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - '='
24
+ - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: 0.10.3
26
+ version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - "~>"
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: '10.0'
33
+ version: '0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - "~>"
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '10.0'
40
+ version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: redcarpet
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - '='
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
- version: 3.3.3
47
+ version: '0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - '='
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
- version: 3.3.3
54
+ version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rspec
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - '='
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: 3.4.0
61
+ version: '0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: 3.4.0
68
+ version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: diff-lcs
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,17 +94,18 @@ dependencies:
108
94
  - - ">="
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
111
- description:
97
+ description:
112
98
  email:
113
99
  - r7kamura@gmail.com
114
100
  executables: []
115
101
  extensions: []
116
102
  extra_rdoc_files: []
117
103
  files:
104
+ - ".github/workflows/test.yml"
118
105
  - ".gitignore"
119
- - ".travis.yml"
120
106
  - CHANGELOG.md
121
107
  - Gemfile
108
+ - Gemfile.lock
122
109
  - LICENSE.txt
123
110
  - README.md
124
111
  - Rakefile
@@ -140,7 +127,7 @@ homepage: https://github.com/r7kamura/markdiff
140
127
  licenses:
141
128
  - MIT
142
129
  metadata: {}
143
- post_install_message:
130
+ post_install_message:
144
131
  rdoc_options: []
145
132
  require_paths:
146
133
  - lib
@@ -155,8 +142,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
142
  - !ruby/object:Gem::Version
156
143
  version: '0'
157
144
  requirements: []
158
- rubygems_version: 3.1.4
159
- signing_key:
145
+ rubygems_version: 3.3.26
146
+ signing_key:
160
147
  specification_version: 4
161
148
  summary: Rendered Markdown differ.
162
149
  test_files: []
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.0
4
- before_install: gem install bundler -v 1.10.6