mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-04 20:29:08 -04:00
refactor: use git_diff_to_buf to produce patch diff text
This commit is contained in:
parent
2eb50dec69
commit
f4e9ae4167
3 changed files with 11 additions and 31 deletions
|
@ -365,14 +365,15 @@ String statsPrint({
|
|||
}
|
||||
}
|
||||
|
||||
/// Add patch to buffer.
|
||||
Pointer<git_buf> addToBuf({
|
||||
required Pointer<git_patch> patchPointer,
|
||||
required Pointer<git_buf> bufferPointer,
|
||||
}) {
|
||||
libgit2.git_patch_to_buf(bufferPointer, patchPointer);
|
||||
|
||||
return bufferPointer;
|
||||
/// Produce the complete formatted text output from a diff into a buffer.
|
||||
String addToBuf(Pointer<git_diff> diff) {
|
||||
final out = calloc<git_buf>();
|
||||
libgit2.git_diff_to_buf(out, diff, git_diff_format_t.GIT_DIFF_FORMAT_PATCH);
|
||||
final result = out.ref.ptr == nullptr
|
||||
? ''
|
||||
: out.ref.ptr.cast<Utf8>().toDartString(length: out.ref.size);
|
||||
calloc.free(out);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// Counter for hunk number being applied.
|
||||
|
|
|
@ -293,26 +293,8 @@ class Diff {
|
|||
return patches;
|
||||
}
|
||||
|
||||
/// The patch diff string.
|
||||
String get patch {
|
||||
final length = bindings.length(_diffPointer);
|
||||
var buffer = calloc<git_buf>(sizeOf<git_buf>());
|
||||
|
||||
for (var i = 0; i < length; i++) {
|
||||
final patch = Patch.fromDiff(diff: this, index: i);
|
||||
buffer = bindings.addToBuf(
|
||||
patchPointer: patch.pointer,
|
||||
bufferPointer: buffer,
|
||||
);
|
||||
patch.free();
|
||||
}
|
||||
|
||||
final result = buffer.ref.ptr == nullptr
|
||||
? ''
|
||||
: buffer.ref.ptr.cast<Utf8>().toDartString();
|
||||
calloc.free(buffer);
|
||||
return result;
|
||||
}
|
||||
/// The patch diff text.
|
||||
String get patch => bindings.addToBuf(_diffPointer);
|
||||
|
||||
/// Accumulates diff statistics for all patches.
|
||||
///
|
||||
|
|
|
@ -153,9 +153,6 @@ class Patch {
|
|||
|
||||
late final Pointer<git_patch> _patchPointer;
|
||||
|
||||
/// Pointer to memory address for allocated patch object.
|
||||
Pointer<git_patch> get pointer => _patchPointer;
|
||||
|
||||
/// Line counts of each type in a patch.
|
||||
PatchStats get stats {
|
||||
final result = bindings.lineStats(_patchPointer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue