Skip to content

Commit a8cbc3e

Browse files
authored
#171 - ZString (#182)
1 parent 68540b4 commit a8cbc3e

File tree

22 files changed

+84
-49
lines changed

22 files changed

+84
-49
lines changed

Directory.Packages.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@
1515
<PackageVersion Include="Visitor.NET" Version="4.2.0" />
1616
<PackageVersion Include="Visitor.NET.AutoVisitableGen" Version="1.5.2" />
1717
<PackageVersion Include="ZLogger" Version="2.5.10" />
18+
<PackageVersion Include="ZString" Version="2.6.0" />
1819
</ItemGroup>
1920
</Project>

src/Application/HydraScript.Application.StaticAnalysis/Exceptions/AmbiguousInvocation.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Diagnostics.CodeAnalysis;
2+
using Cysharp.Text;
23
using HydraScript.Domain.IR.Impl.Symbols.Ids;
34

45
namespace HydraScript.Application.StaticAnalysis.Exceptions;
@@ -9,4 +10,4 @@ public class AmbiguousInvocation(
910
IReadOnlyCollection<FunctionSymbolId> candidates) :
1011
SemanticException(
1112
segment,
12-
$"Ambiguous Invocation - Candidates are:\n{string.Join('\n', candidates)}");
13+
$"Ambiguous Invocation - Candidates are:\n{ZString.Join('\n', candidates)}");

src/Domain/HydraScript.Domain.BackEnd/AddressedInstructions.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections;
2+
using Cysharp.Text;
23
using HydraScript.Domain.BackEnd.Impl.Addresses;
34

45
namespace HydraScript.Domain.BackEnd;
@@ -79,4 +80,7 @@ public IEnumerator<IExecutableInstruction> GetEnumerator() =>
7980

8081
IEnumerator IEnumerable.GetEnumerator() =>
8182
GetEnumerator();
83+
84+
public override string ToString() =>
85+
ZString.Join<IExecutableInstruction>('\n', this);
8286
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2-
2+
<ItemGroup>
3+
<PackageReference Include="ZString" />
4+
</ItemGroup>
35
</Project>

src/Domain/HydraScript.Domain.BackEnd/Impl/Addresses/HashAddress.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using Cysharp.Text;
2+
13
namespace HydraScript.Domain.BackEnd.Impl.Addresses;
24

35
public class HashAddress(int seed) : IAddress
@@ -17,7 +19,7 @@ public string Name
1719
{
1820
var baseName = $"{unchecked((uint)GetHashCode())}{_id:N}";
1921
var nameArray = Random.Shared.GetItems(baseName.AsSpan(), 10);
20-
_name = "_t" + new string(nameArray);
22+
_name = ZString.Concat("_t", new string(nameArray));
2123
}
2224

2325
return _name;

src/Domain/HydraScript.Domain.BackEnd/Impl/Instructions/WithAssignment/Simple.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using Cysharp.Text;
2+
13
namespace HydraScript.Domain.BackEnd.Impl.Instructions.WithAssignment;
24

35
public class Simple : Instruction
@@ -67,7 +69,7 @@ public override IAddress Execute(IExecuteParams executeParams)
6769
object? lValue = Right.left.Get(frame), rValue = Right.right!.Get(frame);
6870
frame[Left!] = _operator switch
6971
{
70-
"+" when lValue is string => lValue.ToString() + rValue,
72+
"+" when lValue is string => ZString.Concat(lValue, rValue),
7173
"+" => Convert.ToDouble(lValue) + Convert.ToDouble(rValue),
7274
"-" => Convert.ToDouble(lValue) - Convert.ToDouble(rValue),
7375
"*" => Convert.ToDouble(lValue) * Convert.ToDouble(rValue),

src/Domain/HydraScript.Domain.FrontEnd/HydraScript.Domain.FrontEnd.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<ItemGroup>
44
<PackageReference Include="Visitor.NET" />
55
<PackageReference Include="Visitor.NET.AutoVisitableGen" PrivateAssets="all" />
6+
<PackageReference Include="ZString" />
67
</ItemGroup>
78

89
<ItemGroup>

src/Domain/HydraScript.Domain.FrontEnd/Lexer/Impl/RegexLexer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections;
22
using System.Diagnostics.CodeAnalysis;
33
using System.Text.RegularExpressions;
4+
using Cysharp.Text;
45

56
namespace HydraScript.Domain.FrontEnd.Lexer.Impl;
67

@@ -47,6 +48,5 @@ public IEnumerator<Token> GetEnumerator()
4748
[ExcludeFromCodeCoverage]
4849
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
4950

50-
public override string ToString() =>
51-
string.Join('\n', this);
51+
public override string ToString() => ZString.Join<Token>('\n', this);
5252
}

src/Domain/HydraScript.Domain.FrontEnd/Lexer/Impl/Structure.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using System.Collections;
22
using System.Collections.Frozen;
33
using System.Diagnostics.CodeAnalysis;
4-
using System.Text;
54
using System.Text.RegularExpressions;
5+
using Cysharp.Text;
66
using HydraScript.Domain.FrontEnd.Lexer.TokenTypes;
77

88
namespace HydraScript.Domain.FrontEnd.Lexer.Impl;
@@ -19,10 +19,7 @@ public class Structure<TContainer>(ITokenTypesProvider provider) : IStructure
1919
public TokenType FindByTag(string tag) =>
2020
Types[tag];
2121

22-
public override string ToString() =>
23-
new StringBuilder()
24-
.AppendJoin('\n', this)
25-
.ToString();
22+
public override string ToString() => ZString.Join<TokenType>('\n', this);
2623

2724
// ReSharper disable once NotDisposedResourceIsReturned
2825
public IEnumerator<TokenType> GetEnumerator() =>
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Text;
1+
using Cysharp.Text;
22

33
namespace HydraScript.Domain.FrontEnd.Parser.Impl.Ast;
44

@@ -8,18 +8,20 @@ internal class AbstractSyntaxTree(IAbstractSyntaxTreeNode root) : IAbstractSynta
88

99
public override string ToString()
1010
{
11-
var tree = new StringBuilder("digraph ast {\n");
11+
using var tree = ZString.CreateStringBuilder();
12+
tree.Append("digraph ast {\n");
1213
var nodes = Root.GetAllNodes();
1314
for (var i = 0; i < nodes.Count; i++)
1415
{
1516
var node = nodes[i];
16-
tree.Append('\t').Append(node).Append('\n');
17+
tree.AppendFormat("\t{0}\n", node);
1718
for (var j = 0; j < node.Count; j++)
1819
{
1920
var child = node[j];
20-
tree.Append($"\t{node.GetHashCode()}->{child.GetHashCode()}\n");
21+
tree.AppendFormat("\t{0}->{1}\n", node.GetHashCode(), child.GetHashCode());
2122
}
2223
}
23-
return tree.Append("}\n").ToString();
24+
tree.Append("}\n");
25+
return tree.ToString();
2426
}
2527
}

0 commit comments

Comments
 (0)