Skip to content

Commit

Permalink
cleaning and Disposable.Defer
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasteles committed Oct 16, 2023
1 parent 5aec46d commit 5a98205
Show file tree
Hide file tree
Showing 9 changed files with 116 additions and 176 deletions.
35 changes: 18 additions & 17 deletions Directory.Build.props
@@ -1,23 +1,24 @@
<Project Condition="'$(MSBuildProjectExtension)' == '.csproj' and '$(MSBuildProjectFile)' != '_build.csproj'">

<PropertyGroup>
<Project>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
<Nullable>enable</Nullable>
<WarningsAsErrors>CS8600;CS8602;CS8603;CS8604;CS8625;CS8618;CS8620;CS0219</WarningsAsErrors>
<ImplicitUsings>enable</ImplicitUsings>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<InvariantGlobalization>true</InvariantGlobalization>
<WarningsAsErrors>CS8600;CS8602;CS8603;CS8604;CS8625;CS8618;CS8620</WarningsAsErrors>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);CS1591;CS1573</NoWarn>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers" Version="4.2.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="SonarAnalyzer.CSharp" Version="8.50.0.58025">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="AsyncFixer" Version="1.6.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<ItemGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.12.0.78982">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="AsyncFixer" Version="1.6.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>


52 changes: 52 additions & 0 deletions src/Disposable.cs
@@ -0,0 +1,52 @@
using System;
using System.Threading.Tasks;

namespace CSharpPlus;

/// <summary>
/// Disposable static functions
/// </summary>
public static class Disposable
{
/// <inheritdoc />
public readonly struct Deferred : IDisposable
{
readonly Action action;

/// <summary>
/// Create new deferred context
/// </summary>
public Deferred(Action action) => this.action = action;

/// <inheritdoc />
public void Dispose() => action?.Invoke();
}

/// <inheritdoc />
public readonly struct DeferredTask : IAsyncDisposable
{
readonly Func<ValueTask> action;

/// <summary>
/// Create new deferred context
/// </summary>
public DeferredTask(Func<ValueTask> action) => this.action = action;

/// <inheritdoc />
public async ValueTask DisposeAsync()
{
if (action is not null)
await action();
}
}

/// <summary>
/// Defer action execution with Dispose
/// </summary>
public static Deferred Defer(Action action) => new(action);

/// <summary>
/// Defer async action execution with DisposeAsync
/// </summary>
public static DeferredTask Defer(Func<ValueTask> action) => new(action);
}
2 changes: 0 additions & 2 deletions src/EnumerablePlus/LinqArrayExtensions.cs
@@ -1,5 +1,3 @@
namespace CSharpPlus.LinqArray;

using System;
using System.Collections.Generic;

Expand Down
4 changes: 2 additions & 2 deletions src/EnumerablePlus/StringEnumerablePlus.cs
Expand Up @@ -27,15 +27,15 @@ public static partial class EnumerablePlus
/// </summary>
/// <param name="values"></param>
/// <param name="separator"></param>
public static string JoinAsString(this IEnumerable<char> values, char separator) =>
public static string JoinNewString(this IEnumerable<char> values, char separator) =>
string.Join(separator, values);

/// <summary>
/// Concatenates the members of a collection, using the specified separator between each member.
/// </summary>
/// <param name="values"></param>
/// <param name="separator"></param>
public static string JoinAsString(this IEnumerable<char> values, string separator) =>
public static string JoinNewString(this IEnumerable<char> values, string separator) =>
string.Join(separator, values);


Expand Down
109 changes: 0 additions & 109 deletions src/EnumerationExtensions.cs

This file was deleted.

2 changes: 2 additions & 0 deletions src/JsonConverters/DateTimeUtcOnlyJsonConverter.cs
Expand Up @@ -31,7 +31,9 @@ public class DateTimeUtcOnlyJsonConverter : JsonConverter<DateTime>
{ Kind: DateTimeKind.Local } localDate => localDate.ToUniversalTime(),
{ Kind: DateTimeKind.Unspecified } date => new DateTimeOffset(date.Ticks, offset)
.UtcDateTime,
#pragma warning disable S112
_ => throw new IndexOutOfRangeException(nameof(DateTime.Kind))
#pragma warning restore S112
};

/// <inheritdoc />
Expand Down
82 changes: 40 additions & 42 deletions tests/CSharpPlus.Tests/CSharpPlus.Tests.csproj
@@ -1,48 +1,46 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<InvariantGlobalization>false</InvariantGlobalization>
<IsPackable>false</IsPackable>
</PropertyGroup>

<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoBogus" Version="2.13.1"/>
<PackageReference Include="FluentAssertions" Version="6.12.0"/>
<PackageReference Include="FsCheck.NUnit" Version="2.16.6"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2"/>
<PackageReference Include="NUnit" Version="3.13.3"/>
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
<PackageReference Include="NUnit.Analyzers" Version="3.8.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.CodeAnalysis.Analyzers" Version="4.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Formatting.Analyzers" Version="4.5.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="SonarAnalyzer.CSharp" Version="8.50.0.58025">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<PackageReference Include="AutoBogus" Version="2.13.1" />
<PackageReference Include="FluentAssertions" Version="6.8.0" />
<PackageReference Include="FsCheck.NUnit" Version="2.16.5" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.3.1" />
<PackageReference Include="NUnit.Analyzers" Version="3.8.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Analyzers" Version="4.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.CodeAnalysis.Analyzers" Version="4.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Roslynator.Formatting.Analyzers" Version="4.5.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="SonarAnalyzer.CSharp" Version="8.50.0.58025">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\CSharpPlus.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\CSharpPlus.csproj"/>
</ItemGroup>

</Project>
Expand Up @@ -30,11 +30,11 @@ public void StringJoinSampleTest()

[PropertyTest]
public void CharJoinChar(char[] values, char chr) =>
values.JoinAsString(chr).Should().Be(string.Join(chr, values));
values.JoinNewString(chr).Should().Be(string.Join(chr, values));

[PropertyTest]
public void CharJoinString(char[] value, string str) =>
value.JoinAsString(str).Should().Be(string.Join(str, value));
value.JoinNewString(str).Should().Be(string.Join(str, value));

[PropertyTest]
public void StringConcat(string[] values) =>
Expand Down
2 changes: 0 additions & 2 deletions tests/CSharpPlus.Tests/LinqArrayExtensionsTests.cs
@@ -1,5 +1,3 @@
using CSharpPlus.LinqArray;

namespace CSharpPlus.Tests;

public class LinqArrayExtensionsTests
Expand Down

0 comments on commit 5a98205

Please sign in to comment.