1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
using System.IO;
using System.Text;
using LibGit2Sharp.Core;
namespace LibGit2Sharp
{
/// <summary>
/// Provides helper overloads to a <see cref="Blob"/>.
/// </summary>
public static class BlobExtensions
{
/// <summary>
/// Gets the blob content decoded with the specified encoding,
/// or according to byte order marks, with UTF8 as fallback,
/// if <paramref name="encoding"/> is null.
/// </summary>
/// <param name="blob">The blob for which the content will be returned.</param>
/// <param name="encoding">The encoding of the text. (default: detected or UTF8)</param>
/// <returns>Blob content as text.</returns>
public static string GetContentText(this Blob blob, Encoding encoding = null)
{
Ensure.ArgumentNotNull(blob, "blob");
return ReadToEnd(blob.GetContentStream(), encoding);
}
/// <summary>
/// Gets the blob content as it would be checked out to the
/// working directory, decoded with the specified encoding,
/// or according to byte order marks, with UTF8 as fallback,
/// if <paramref name="encoding"/> is null.
/// </summary>
/// <param name="blob">The blob for which the content will be returned.</param>
/// <param name="filteringOptions">Parameter controlling content filtering behavior</param>
/// <param name="encoding">The encoding of the text. (default: detected or UTF8)</param>
/// <returns>Blob content as text.</returns>
public static string GetContentText(this Blob blob, FilteringOptions filteringOptions, Encoding encoding = null)
{
Ensure.ArgumentNotNull(blob, "blob");
Ensure.ArgumentNotNull(filteringOptions, "filteringOptions");
return ReadToEnd(blob.GetContentStream(filteringOptions), encoding);
}
private static string ReadToEnd(Stream stream, Encoding encoding)
{
using (var reader = new StreamReader(stream, encoding ?? LaxUtf8Marshaler.Encoding, encoding == null))
{
return reader.ReadToEnd();
}
}
}
}
|