git_diff_parser 2.3.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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