Skip to content

Commit 5e5ecac

Browse files
authored
Update the core entirely
1 parent c719d00 commit 5e5ecac

File tree

7 files changed

+179
-7
lines changed

7 files changed

+179
-7
lines changed

HashifyNETCLI/Core/CommandLine.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// *
1+
// *
22
// *****************************************************************************
33
// *
44
// * Copyright (c) 2025 Deskasoft International
@@ -347,4 +347,3 @@ public override string ToString()
347347
}
348348
}
349349
}
350-

HashifyNETCLI/Core/FunctionVar.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,39 @@
2727
// ******************************************************************************
2828
// *
2929

30+
using System.Diagnostics.CodeAnalysis;
31+
3032
namespace HashifyNETCLI
3133
{
32-
public readonly struct FunctionVar(string? name, Type function)
34+
public readonly struct FunctionVar(string? name, Type function) : IEquatable<FunctionVar>
3335
{
3436
public string? Name { get; } = name;
3537
public Type Function { get; } = function ?? throw new ArgumentNullException(nameof(function));
38+
39+
public override string ToString()
40+
{
41+
if (string.IsNullOrEmpty(Name))
42+
return Function.FullName ?? Function.Name;
43+
else
44+
return $"{Name}:{Function.FullName ?? Function.Name}";
45+
}
46+
47+
public override int GetHashCode()
48+
{
49+
return HashCode.Combine(Name?.ToLowerInvariant(), Function);
50+
}
51+
52+
public override bool Equals(object? obj)
53+
{
54+
return obj is FunctionVar var && Equals(var);
55+
}
56+
57+
public bool Equals([AllowNull] FunctionVar other)
58+
{
59+
return string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase) && Function == other.Function;
60+
}
61+
62+
public static bool operator ==(FunctionVar left, FunctionVar right) => left.Equals(right);
63+
public static bool operator !=(FunctionVar left, FunctionVar right) => !(left == right);
3664
}
3765
}

HashifyNETCLI/Core/JsonConfig.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// *
2+
// *****************************************************************************
3+
// *
4+
// * Copyright (c) 2025 Deskasoft International
5+
// *
6+
// * Permission is hereby granted, free of charge, to any person obtaining a copy
7+
// * of this software and associated documentation files (the ""Software""), to deal
8+
// * in the Software without restriction, including without limitation the rights
9+
// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
// * copies of the Software, and to permit persons to whom the Software is
11+
// * furnished to do so, subject to the following conditions:
12+
// *
13+
// * The above copyright notice and this permission notice shall be included in all
14+
// * copies or substantial portions of the Software.
15+
// *
16+
// * THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
// * SOFTWARE.
23+
// *
24+
// *
25+
// * Please refer to LICENSE file.
26+
// *
27+
// ******************************************************************************
28+
// *
29+
30+
namespace HashifyNETCLI
31+
{
32+
public readonly struct JsonConfig(Type type, IReadOnlyList<JsonConfigProfile> profiles)
33+
{
34+
public Type Type { get; } = type ?? throw new ArgumentNullException(nameof(type));
35+
public IReadOnlyList<JsonConfigProfile> Profiles { get; } = profiles ?? throw new ArgumentNullException(nameof(profiles));
36+
}
37+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// *
2+
// *****************************************************************************
3+
// *
4+
// * Copyright (c) 2025 Deskasoft International
5+
// *
6+
// * Permission is hereby granted, free of charge, to any person obtaining a copy
7+
// * of this software and associated documentation files (the ""Software""), to deal
8+
// * in the Software without restriction, including without limitation the rights
9+
// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
// * copies of the Software, and to permit persons to whom the Software is
11+
// * furnished to do so, subject to the following conditions:
12+
// *
13+
// * The above copyright notice and this permission notice shall be included in all
14+
// * copies or substantial portions of the Software.
15+
// *
16+
// * THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
// * SOFTWARE.
23+
// *
24+
// *
25+
// * Please refer to LICENSE file.
26+
// *
27+
// ******************************************************************************
28+
// *
29+
30+
using HashifyNet;
31+
32+
namespace HashifyNETCLI
33+
{
34+
public sealed class JsonConfigBuilder
35+
{
36+
public Type Type => _type;
37+
public IReadOnlyList<JsonConfigProfile> Profiles => _profiles;
38+
39+
private readonly Type _type;
40+
private readonly List<JsonConfigProfile> _profiles;
41+
public JsonConfigBuilder(Type type)
42+
{
43+
_type = type ?? throw new ArgumentNullException(nameof(type));
44+
_profiles = new List<JsonConfigProfile>();
45+
}
46+
47+
public bool TryAddProfile(string? name, IHashConfigBase config)
48+
{
49+
if (_profiles.Exists(t => string.Equals(t.Name, name, StringComparison.OrdinalIgnoreCase)))
50+
{
51+
return false;
52+
}
53+
54+
_profiles.Add(new JsonConfigProfile(_type, name, config));
55+
return true;
56+
}
57+
58+
public JsonConfig Build()
59+
{
60+
return new JsonConfig(_type, _profiles);
61+
}
62+
}
63+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// *
2+
// *****************************************************************************
3+
// *
4+
// * Copyright (c) 2025 Deskasoft International
5+
// *
6+
// * Permission is hereby granted, free of charge, to any person obtaining a copy
7+
// * of this software and associated documentation files (the ""Software""), to deal
8+
// * in the Software without restriction, including without limitation the rights
9+
// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
// * copies of the Software, and to permit persons to whom the Software is
11+
// * furnished to do so, subject to the following conditions:
12+
// *
13+
// * The above copyright notice and this permission notice shall be included in all
14+
// * copies or substantial portions of the Software.
15+
// *
16+
// * THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
// * SOFTWARE.
23+
// *
24+
// *
25+
// * Please refer to LICENSE file.
26+
// *
27+
// ******************************************************************************
28+
// *
29+
30+
using HashifyNet;
31+
32+
namespace HashifyNETCLI
33+
{
34+
public readonly struct JsonConfigProfile(Type owner, string? name, IHashConfigBase config)
35+
{
36+
public Type Owner { get; } = owner ?? throw new ArgumentNullException(nameof(owner));
37+
public string? Name { get; } = name;
38+
public IHashConfigBase Config { get; } = config ?? throw new ArgumentNullException(nameof(config));
39+
40+
public bool IsValid => Config != null && Owner != null;
41+
42+
public FunctionVar AsVar()
43+
{
44+
return new FunctionVar(Name, Owner);
45+
}
46+
}
47+
}

HashifyNETCLI/Core/Logger.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// *
1+
// *
22
// *****************************************************************************
33
// *
44
// * Copyright (c) 2025 Deskasoft International
@@ -143,4 +143,3 @@ public static void Error(string message, params object[] args)
143143
}
144144
}
145145
}
146-

HashifyNETCLI/Core/ScriptHelpers.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// *
1+
// *
22
// *****************************************************************************
33
// *
44
// * Copyright (c) 2025 Deskasoft International
@@ -68,4 +68,3 @@ public static byte[] HexToArray(string hex)
6868
}
6969
}
7070
}
71-

0 commit comments

Comments
 (0)