Class: Git::DiffFilePatchInfo

Inherits:
Data
  • Object
show all
Defined in:
lib/git/diff_file_patch_info.rb

Overview

Immutable value object representing a single file's patch information

DiffFilePatchInfo encapsulates the parsed data from a unified diff for one file, including source and destination file references, the patch text, change type, and line statistics.

Examples:

A modified file patch

patch_info = Git::DiffFilePatchInfo.new(
  src: Git::FileRef.new(mode: '100644', sha: 'abc1234', path: 'lib/foo.rb'),
  dst: Git::FileRef.new(mode: '100644', sha: 'def5678', path: 'lib/foo.rb'),
  patch: "diff --git a/lib/foo.rb b/lib/foo.rb\n...",
  status: :modified,
  similarity: nil,
  binary: false,
  insertions: 10,
  deletions: 5
)

A new file patch (src is nil)

patch_info = Git::DiffFilePatchInfo.new(
  src: nil,
  dst: Git::FileRef.new(mode: '100644', sha: 'abc1234', path: 'lib/new.rb'),
  patch: "diff --git a/lib/new.rb b/lib/new.rb\nnew file mode 100644\n...",
  status: :added,
  similarity: nil,
  binary: false,
  insertions: 20,
  deletions: 0
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#binaryObject (readonly)

Returns the value of attribute binary

Returns:

  • (Object)

    the current value of binary



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

#deletionsObject (readonly)

Returns the value of attribute deletions

Returns:

  • (Object)

    the current value of deletions



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

#dstObject (readonly)

Returns the value of attribute dst

Returns:

  • (Object)

    the current value of dst



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

#insertionsObject (readonly)

Returns the value of attribute insertions

Returns:

  • (Object)

    the current value of insertions



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

#patchObject (readonly)

Returns the value of attribute patch

Returns:

  • (Object)

    the current value of patch



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

#similarityObject (readonly)

Returns the value of attribute similarity

Returns:

  • (Object)

    the current value of similarity



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

#srcObject (readonly)

Returns the value of attribute src

Returns:

  • (Object)

    the current value of src



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

#statusObject (readonly)

Returns the value of attribute status

Returns:

  • (Object)

    the current value of status



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/git/diff_file_patch_info.rb', line 62

DiffFilePatchInfo = Data.define(
  :src,
  :dst,
  :patch,
  :status,
  :similarity,
  :binary,
  :insertions,
  :deletions
) do
  # Get the primary file path
  #
  # Returns the destination path if it exists, otherwise the source path.
  # This is the "current" or "canonical" path for the file.
  #
  # @return [String] the file path
  #
  def path
    dst&.path || src&.path
  end

  # Get the source file path
  #
  # Returns the source path if it exists. Useful for renames/copies to see
  # where the file came from.
  #
  # @return [String, nil] the source file path, or nil if no source (added files)
  #
  def src_path
    src&.path
  end

  # Check if this is a binary file
  #
  # @return [Boolean] true if the file is binary
  #
  def binary?
    binary
  end

  # Check if this file was renamed
  #
  # @return [Boolean]
  #
  def renamed?
    status == :renamed
  end

  # Check if this file was copied
  #
  # @return [Boolean]
  #
  def copied?
    status == :copied
  end

  # Check if this file was added
  #
  # @return [Boolean]
  #
  def added?
    status == :added
  end

  # Check if this file was deleted
  #
  # @return [Boolean]
  #
  def deleted?
    status == :deleted
  end
end

Instance Method Details

#added?Boolean

Check if this file was added

Returns:

  • (Boolean)


122
123
124
# File 'lib/git/diff_file_patch_info.rb', line 122

def added?
  status == :added
end

#binary?Boolean

Check if this is a binary file

Returns:

  • (Boolean)

    true if the file is binary



98
99
100
# File 'lib/git/diff_file_patch_info.rb', line 98

def binary?
  binary
end

#copied?Boolean

Check if this file was copied

Returns:

  • (Boolean)


114
115
116
# File 'lib/git/diff_file_patch_info.rb', line 114

def copied?
  status == :copied
end

#deleted?Boolean

Check if this file was deleted

Returns:

  • (Boolean)


130
131
132
# File 'lib/git/diff_file_patch_info.rb', line 130

def deleted?
  status == :deleted
end

#pathString

Get the primary file path

Returns the destination path if it exists, otherwise the source path. This is the "current" or "canonical" path for the file.

Returns:

  • (String)

    the file path



79
80
81
# File 'lib/git/diff_file_patch_info.rb', line 79

def path
  dst&.path || src&.path
end

#renamed?Boolean

Check if this file was renamed

Returns:

  • (Boolean)


106
107
108
# File 'lib/git/diff_file_patch_info.rb', line 106

def renamed?
  status == :renamed
end

#src_pathString?

Get the source file path

Returns the source path if it exists. Useful for renames/copies to see where the file came from.

Returns:

  • (String, nil)

    the source file path, or nil if no source (added files)



90
91
92
# File 'lib/git/diff_file_patch_info.rb', line 90

def src_path
  src&.path
end