Skip to content

Commit 431b23c

Browse files
committed
Added new extensions.
1 parent 856eaaa commit 431b23c

File tree

5 files changed

+84
-3
lines changed

5 files changed

+84
-3
lines changed

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,13 @@ void ToXml<T>(this T entity, string path, Formatting formatting, int indentation
380380

381381
// Converts generic type to xml content file.
382382
void ToXml<T>(this T entity, string path, Encoding encoding, Formatting formatting, int indentation = 4);
383+
384+
// Converts Generic type into CSV file.
385+
void ToCSV<T>(this T entity, string path, bool append = false);
386+
387+
// Converts Generic type into CSV file asynchronously
388+
Task ToCSVAsync<T>(this T entity, string path, bool append = false);
389+
383390
```
384391

385392
#### Extensions to Lists
@@ -399,4 +406,10 @@ string Join(this IEnumerable<string> texts, string delimiter);
399406

400407
// Converts IEnumerable to list, if it is already a List it returns the list itself.
401408
IList<T> AsList<T>(IEnumerable<T> sourceList);
409+
410+
// Converts Generic list type into CSV file.
411+
void ToCSV<T>(IEnumerable<T> entities, string path, bool append = false);
412+
413+
// Converts Generic list type into CSV file asynchrnously.
414+
Task ToCSVAsync<T>(IEnumerable<T> entities, string path, bool append = false);
402415
```

src/FluentExtensions/FluentExtensions.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
<PackageReadmeFile>README.md</PackageReadmeFile>
1111
<PackageTags>extension, datetime, date, dotnet, extension-methods, fluent, string-matching, stringextensions, fluentextension, fluentextensions, numericxtensions</PackageTags>
1212
<PackageReleaseNotes>$([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)/release-notes.txt"))</PackageReleaseNotes>
13-
<PackageProjectUrl>https://github.com/D-Diyare/FluentExtensions</PackageProjectUrl>
14-
<Version>1.5</Version>
13+
<PackageProjectUrl>https://d-diyare.github.io/FluentExtensions/</PackageProjectUrl>
14+
<Version>1.6</Version>
1515
<Copyright>Copyright © Diyare Abdulla 2021</Copyright>
1616
<Title>FluentExtensions</Title>
1717
<PackageLicenseExpression>MIT</PackageLicenseExpression>

src/FluentExtensions/GenericEx.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,6 @@ public static async Task ToCSVAsync<T>(this T entity, string path, bool append =
120120
await write.WriteAsync(text.ToString());
121121
}
122122
}
123+
123124
}
124125
}

src/FluentExtensions/ListEx.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,65 @@ public static IList<T> AsList<T>(IEnumerable<T> sourceList)
9494
return sourceList is List<T> ? sourceList : sourceList.ToList();
9595
}
9696

97+
/// <summary>
98+
/// Converts Generic type into CSV file.
99+
/// </summary>
100+
/// <param name="entity">Entity to convert.</param>
101+
/// <param name="path">CSV output path.</param>
102+
public static void ToCSV<T>(IEnumerable<T> entities, string path, bool append = false)
103+
{
104+
var text = new StringBuilder();
105+
106+
foreach (var entity in entities)
107+
{
108+
var props = entity?.GetType().GetProperties();
109+
var length = props?.Length;
110+
111+
for (var i = 0; i < length; i++)
112+
{
113+
var val = props?[i].GetValue(entity)?.ToString();
114+
var delimiter = i == length - 1 ? "" : ",";
115+
text.Append($"{val}{delimiter}");
116+
}
117+
118+
text.AppendLine();
119+
}
120+
121+
using (var write = new StreamWriter(path, append))
122+
{
123+
write.Write(text.ToString());
124+
}
125+
}
126+
127+
/// <summary>
128+
/// Converts Generic type into CSV file asynchrnously.
129+
/// </summary>
130+
/// <param name="entity">Entity to convert.</param>
131+
/// <param name="path">CSV output path.</param>
132+
public static async Task ToCSVAsync<T>(IEnumerable<T> entities, string path, bool append = false)
133+
{
134+
var text = new StringBuilder();
135+
136+
foreach (var entity in entities)
137+
{
138+
var props = entity?.GetType().GetProperties();
139+
var length = props?.Length;
140+
141+
for (var i = 0; i < length; i++)
142+
{
143+
var val = props?[i].GetValue(entity)?.ToString();
144+
var delimiter = i == length - 1 ? "" : ",";
145+
text.Append($"{val}{delimiter}");
146+
}
147+
148+
text.AppendLine();
149+
}
150+
151+
using (var writer = new StreamWriter(path, append))
152+
{
153+
await writer.WriteAsync(text.ToString());
154+
}
155+
}
156+
97157
}
98158
}

src/FluentExtensions/release-notes.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
v.1.6.0
2+
New Extensions Added:
3+
- void ToCSV<T>(this T entity, string path, bool append = false);
4+
- Task ToCSVAsync<T>(this T entity, string path, bool append = false);
5+
- void ToCSV<T>(IEnumerable<T> entities, string path, bool append = false);
6+
- Task ToCSVAsync<T>(IEnumerable<T> entities, string path, bool append = false);
7+
18
v.1.5.0
29
New Extensions Added:
310
- void ToXml<T>(this T entity, string path);
@@ -7,7 +14,7 @@ v.1.5.0
714
- T FromXml<T>(this string path);
815
- string FromGuid(this string empty);
916
- string ToYesNo(this bool source, string pattern);
10-
17+
1118
v.1.4.0
1219
New Extensions Added:
1320
- string Join(this IEnumerable<string> texts, string delimiter);

0 commit comments

Comments
 (0)