git_diff_parser 2.3.0 → 4.0.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
- SHA1:
3
- metadata.gz: c2645c17bdb3a03e0e5e682b09bec26ec55e4c7f
4
- data.tar.gz: db74ad832ed897a054f903325b1371ca2855c651
2
+ SHA256:
3
+ metadata.gz: 986edf351b61fb5ffee66918df85a9b36f769a58dc1acac0fa8932cd3039e745
4
+ data.tar.gz: f287924bf315d0542fa6e2cb3b6cb115fde3320c9fc84bab7299ad135daadaa4
5
5
  SHA512:
6
- metadata.gz: 2da9a469671eff3420da2e260d4310d6be027e1404f0d2f823208b5eb182b2d0a129483533becaff71e88928d4f41b6849da77adea9d46e780f5cd069a0c38db
7
- data.tar.gz: e21000998d0d4a425c3da28ddeaa166c8ec57752578e5eed797182068250d0563841fba289061735a01dddb6b79da1e8a2ef5e1bfe020bc2746b634bbf8317e5
6
+ metadata.gz: a7dd831db0671683540cb4c073499229fef3e4c9033f236121d7ddfcebd8f4c91439d1a5cb84b2fe491cbf3b642fbc85f1cbb7e0e4f0ac35220df4058b7c9105
7
+ data.tar.gz: 222af9d5750d2e15bbbbf273a0c64ebac75702dd37495cd52981c36f02f651f9f21b197321064cfdf1098b6141fdd0b0dec0bdeb7c1d30b056efe84b3753c442
File without changes
@@ -0,0 +1,28 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
12
+
13
+ jobs:
14
+ test:
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ os: [ubuntu-latest]
19
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
20
+ ruby: [2.6, 2.7, '3.0', head]
21
+ runs-on: ${{ matrix.os }}
22
+ steps:
23
+ - uses: actions/checkout@v2
24
+ - uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
28
+ - run: bundle exec rake
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  /node_modules/
11
+ /package-lock.json
data/.rspec CHANGED
File without changes
data/.rubocop.yml CHANGED
File without changes
data/.tachikoma.yml CHANGED
File without changes
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in git_diff_parser.gemspec
4
4
  gemspec
5
- gem 'byebug' if RUBY_VERSION >= '2.0.0'
5
+ gem 'byebug'
6
6
  gem 'pry'
7
7
  gem 'rubocop'
8
8
  gem 'yard'
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/changelog.md CHANGED
@@ -1,3 +1,34 @@
1
+ # [4.0.0](https://github.com/packsaddle/ruby-git_diff_parser/compare/v3.2.0...v4.0.0) (2021-11-04)
2
+
3
+ ### BREAKING CHANGES
4
+
5
+ * **patch:** Fix changed_lines number calculation ([30bfcf5](https://github.com/packsaddle/ruby-git_diff_parser/commit/30bfcf5)) [#336](https://github.com/packsaddle/ruby-git_diff_parser/pull/336)
6
+
7
+
8
+ <a name="3.2.0"></a>
9
+ # [3.2.0](https://github.com/packsaddle/ruby-git_diff_parser/compare/v3.1.0...v3.2.0) (2019-03-13)
10
+
11
+ ### Fixes
12
+
13
+ * **patches:** Fix trailing whitespace issue in filename parsing ([d679ad1](https://github.com/packsaddle/ruby-git_diff_parser/commit/d679ad1))
14
+
15
+
16
+ <a name="3.1.0"></a>
17
+ # [3.1.0](https://github.com/packsaddle/ruby-git_diff_parser/compare/v3.0.0...v3.1.0) (2017-07-05)
18
+
19
+ ### Features
20
+
21
+ * **patch:** Added Patch#removed_lines method ([9acc263](https://github.com/packsaddle/ruby-git_diff_parser/commit/9acc263))
22
+
23
+
24
+ <a name="3.0.0"></a>
25
+ # [3.0.0](https://github.com/packsaddle/ruby-git_diff_parser/compare/v2.3.0...v3.0.0) (2017-06-22)
26
+
27
+ ### Features
28
+
29
+ * **patches:** convert non UTF-8 string to avoid invalid UTF-8 sequence errors ([a8f87bd](https://github.com/packsaddle/ruby-git_diff_parser/commit/a8f87bd))
30
+
31
+
1
32
  <a name="2.3.0"></a>
2
33
  # [2.3.0](https://github.com/packsaddle/ruby-git_diff_parser/compare/v2.2.0...v2.3.0) (2016-05-12)
3
34
 
File without changes
File without changes
File without changes
@@ -3,7 +3,9 @@ module GitDiffParser
3
3
  class Patch
4
4
  RANGE_INFORMATION_LINE = /^@@ .+\+(?<line_number>\d+),/
5
5
  MODIFIED_LINE = /^\+(?!\+|\+)/
6
+ REMOVED_LINE = /^[-]/
6
7
  NOT_REMOVED_LINE = /^[^-]/
8
+ NO_NEWLINE_MESSAGE = /^\$/
7
9
 
8
10
  attr_accessor :file, :body, :secure_hash
9
11
  # @!attribute [rw] file
@@ -60,6 +62,8 @@ module GitDiffParser
60
62
  case content
61
63
  when RANGE_INFORMATION_LINE
62
64
  line_number = Regexp.last_match[:line_number].to_i
65
+ when NO_NEWLINE_MESSAGE
66
+ # nop
63
67
  when MODIFIED_LINE
64
68
  line = Line.new(
65
69
  content: content,
@@ -76,6 +80,28 @@ module GitDiffParser
76
80
  end
77
81
  end
78
82
 
83
+ # @return [Array<Line>] removed lines
84
+ def removed_lines
85
+ line_number = 0
86
+
87
+ lines.each_with_index.inject([]) do |lines, (content, patch_position)|
88
+ case content
89
+ when RANGE_INFORMATION_LINE
90
+ line_number = Regexp.last_match[:line_number].to_i
91
+ when REMOVED_LINE
92
+ line = Line.new(
93
+ content: content,
94
+ number: line_number,
95
+ patch_position: patch_position
96
+ )
97
+ lines << line
98
+ line_number += 1
99
+ end
100
+
101
+ lines
102
+ end
103
+ end
104
+
79
105
  # @return [Array<Integer>] changed line numbers
80
106
  def changed_line_numbers
81
107
  changed_lines.map(&:number)
@@ -18,7 +18,7 @@ module GitDiffParser
18
18
  line_count = lines.count
19
19
  parsed = new
20
20
  lines.each_with_index do |line, count|
21
- case line.chomp
21
+ case parsed.scrub_string(line.chomp)
22
22
  when /^diff/
23
23
  unless patch.empty?
24
24
  parsed << Patch.new(patch.join("\n") + "\n", file: file_name)
@@ -28,7 +28,7 @@ module GitDiffParser
28
28
  body = false
29
29
  when /^\-\-\-/
30
30
  when %r{^\+\+\+ b/(?<file_name>.*)}
31
- file_name = Regexp.last_match[:file_name]
31
+ file_name = Regexp.last_match[:file_name].rstrip
32
32
  body = true
33
33
  when /^(?<body>[\ @\+\-\\].*)/
34
34
  patch << Regexp.last_match[:body] if body
@@ -42,6 +42,15 @@ module GitDiffParser
42
42
  parsed
43
43
  end
44
44
 
45
+ # @return [String]
46
+ def scrub_string(line)
47
+ if RUBY_VERSION >= '2.1'
48
+ line.scrub
49
+ else
50
+ line.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
51
+ end
52
+ end
53
+
45
54
  # @return [Patches<Patch>]
46
55
  def initialize(*args)
47
56
  super Array.new(*args)
@@ -1,3 +1,3 @@
1
1
  module GitDiffParser
2
- VERSION = '2.3.0'.freeze
2
+ VERSION = '4.0.0'.freeze
3
3
  end
File without changes
data/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "devDependencies": {
3
- "conventional-changelog-cli": "^1.2.0",
4
- "npm-check-updates": "^2.2.3",
3
+ "conventional-changelog-cli": "^2.0.0",
4
+ "npm-check-updates": "^11.0.0",
5
5
  "urijs": "^1.16.1"
6
6
  },
7
7
  "scripts": {
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_diff_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sanemat
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-12 00:00:00.000000000 Z
11
+ date: 2021-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -60,11 +60,11 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".conventional-changelog.context.js"
63
+ - ".github/workflows/ci.yaml"
63
64
  - ".gitignore"
64
65
  - ".rspec"
65
66
  - ".rubocop.yml"
66
67
  - ".tachikoma.yml"
67
- - ".travis.yml"
68
68
  - CODE_OF_CONDUCT.md
69
69
  - Gemfile
70
70
  - LICENSE.txt
@@ -101,10 +101,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
- rubyforge_project:
105
- rubygems_version: 2.5.1
104
+ rubygems_version: 3.1.6
106
105
  signing_key:
107
106
  specification_version: 4
108
107
  summary: Parse `git diff` into patches and lines.
109
108
  test_files: []
110
- has_rdoc:
data/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- language: "ruby"
2
- sudo: false
3
- rvm:
4
- - "1.9"
5
- - "2.0"
6
- - "2.1.10"
7
- - "2.2.5"
8
- - "2.3.1"
9
- - "ruby-head"
10
- matrix:
11
- allow_failures:
12
- - rvm: "ruby-head"
13
- before_install:
14
- - "gem update bundler"
15
- - "bin/setup"
16
- notifications:
17
- email:
18
- - ogataken@gmail.com