Skip to content

Commit 486e06b

Browse files
author
linzhijun
committed
fix
1 parent 1d1d0f4 commit 486e06b

File tree

2 files changed

+27
-31
lines changed

2 files changed

+27
-31
lines changed

csharp/ToolGood.Algorithm/Internals/Functions/FunctionBase.csharp.cs

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -546,45 +546,43 @@ public override void ToString(StringBuilder stringBuilder, bool addBrackets)
546546
}
547547
}
548548

549-
internal class Function_TRIMSTART : Function_N
549+
internal class Function_TRIMSTART : Function_2
550550
{
551-
public Function_TRIMSTART(FunctionBase[] funcs) : base(funcs)
551+
public Function_TRIMSTART(FunctionBase func1, FunctionBase func2) : base(func1, func2)
552552
{
553553
}
554554

555555
public override Operand Calculate(AlgorithmEngine work)
556556
{
557-
var args = new List<Operand>(); int index = 1;
558-
foreach (var item in funcs) { var a = item.Calculate(work).ToText("Function '{0}' parameter {1} is error!", "TrimStart", index++); if (a.IsError) { return a; } args.Add(a); }
559-
if (args.Count == 1) {
560-
return Operand.Create(args[0].TextValue.TrimStart());
561-
} else {
562-
char[] trimChars = args[1].TextValue.ToCharArray();
563-
return Operand.Create(args[0].TextValue.TrimStart(trimChars));
557+
var args1 = func1.Calculate(work); if (args1.Type != OperandType.TEXT) { args1 = args1.ToText("Function '{0}' parameter {1} is error!", "TrimStart", 1); if (args1.IsError) return args1; }
558+
if (func2 == null) {
559+
return Operand.Create(args1.TextValue.TrimStart());
564560
}
561+
var args2 = func2.Calculate(work); if (args2.Type != OperandType.TEXT) { args2 = args2.ToText("Function '{0}' parameter {1} is error!", "TrimStart", 2); if (args2.IsError) return args2; }
562+
char[] trimChars = args2.TextValue.ToCharArray();
563+
return Operand.Create(args1.TextValue.TrimStart(trimChars));
565564
}
566565
public override void ToString(StringBuilder stringBuilder, bool addBrackets)
567566
{
568567
AddFunction(stringBuilder, "TrimStart");
569568
}
570569
}
571570

572-
internal class Function_TRIMEND : Function_N
571+
internal class Function_TRIMEND : Function_2
573572
{
574-
public Function_TRIMEND(FunctionBase[] funcs) : base(funcs)
573+
public Function_TRIMEND(FunctionBase func1, FunctionBase func2) : base(func1, func2)
575574
{
576575
}
577576

578577
public override Operand Calculate(AlgorithmEngine work)
579578
{
580-
var args = new List<Operand>(); int index = 1;
581-
foreach (var item in funcs) { var a = item.Calculate(work).ToText("Function '{0}' parameter {1} is error!", "TrimEnd", index++); if (a.IsError) { return a; } args.Add(a); }
582-
if (args.Count == 1) {
583-
return Operand.Create(args[0].TextValue.TrimEnd());
584-
} else {
585-
char[] trimChars = args[1].TextValue.ToCharArray();
586-
return Operand.Create(args[0].TextValue.TrimEnd(trimChars));
579+
var args1 = func1.Calculate(work); if (args1.Type != OperandType.TEXT) { args1 = args1.ToText("Function '{0}' parameter {1} is error!", "TrimEnd", 1); if (args1.IsError) return args1; }
580+
if (func2 == null) {
581+
return Operand.Create(args1.TextValue.TrimEnd());
587582
}
583+
var args2 = func2.Calculate(work); if (args2.Type != OperandType.TEXT) { args2 = args2.ToText("Function '{0}' parameter {1} is error!", "TrimEnd", 2); if (args2.IsError) return args2; }
584+
char[] trimChars = args2.TextValue.ToCharArray();
585+
return Operand.Create(args1.TextValue.TrimEnd(trimChars));
588586
}
589587
public override void ToString(StringBuilder stringBuilder, bool addBrackets)
590588
{

csharp/ToolGood.Algorithm/Internals/MathFunctionVisitor.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,7 +1729,7 @@ public FunctionBase VisitHMACSHA1_fun(mathParser.HMACSHA1_funContext context)
17291729
var args2 = exprs[1].Accept(this);
17301730
if (exprs.Length == 2) return new Function_HMACSHA1(args1, args2, null);
17311731
var args3 = exprs[2].Accept(this);
1732-
return new Function_HMACSHA1(args1, args2, args3);
1732+
return new Function_HMACSHA1(args1, args2, args3);
17331733
}
17341734

17351735
public FunctionBase VisitHMACSHA256_fun(mathParser.HMACSHA256_funContext context)
@@ -1739,7 +1739,7 @@ public FunctionBase VisitHMACSHA256_fun(mathParser.HMACSHA256_funContext context
17391739
var args2 = exprs[1].Accept(this);
17401740
if (exprs.Length == 2) return new Function_HMACSHA256(args1, args2, null);
17411741
var args3 = exprs[2].Accept(this);
1742-
return new Function_HMACSHA256(args1, args2, args3);
1742+
return new Function_HMACSHA256(args1, args2, args3);
17431743
}
17441744

17451745
public FunctionBase VisitHMACSHA512_fun(mathParser.HMACSHA512_funContext context)
@@ -1749,27 +1749,25 @@ public FunctionBase VisitHMACSHA512_fun(mathParser.HMACSHA512_funContext context
17491749
var args2 = exprs[1].Accept(this);
17501750
if (exprs.Length == 2) return new Function_HMACSHA512(args1, args2, null);
17511751
var args3 = exprs[2].Accept(this);
1752-
return new Function_HMACSHA512(args1, args2, args3);
1752+
return new Function_HMACSHA512(args1, args2, args3);
17531753
}
17541754

17551755
public FunctionBase VisitTRIMSTART_fun(mathParser.TRIMSTART_funContext context)
17561756
{
17571757
var exprs = context.expr();
1758-
FunctionBase[] args = new FunctionBase[exprs.Length];
1759-
for (int i = 0; i < exprs.Length; i++) {
1760-
args[i] = exprs[i].Accept(this);
1761-
}
1762-
return new Function_TRIMSTART(args);
1758+
var args1 = exprs[0].Accept(this);
1759+
if (exprs.Length == 1) return new Function_TRIMSTART(args1, null);
1760+
var args2 = exprs[1].Accept(this);
1761+
return new Function_TRIMSTART(args1, args2);
17631762
}
17641763

17651764
public FunctionBase VisitTRIMEND_fun(mathParser.TRIMEND_funContext context)
17661765
{
17671766
var exprs = context.expr();
1768-
FunctionBase[] args = new FunctionBase[exprs.Length];
1769-
for (int i = 0; i < exprs.Length; i++) {
1770-
args[i] = exprs[i].Accept(this);
1771-
}
1772-
return new Function_TRIMEND(args);
1767+
var args1 = exprs[0].Accept(this);
1768+
if (exprs.Length == 1) return new Function_TRIMEND(args1, null);
1769+
var args2 = exprs[1].Accept(this);
1770+
return new Function_TRIMEND(args1, args2);
17731771
}
17741772

17751773
public FunctionBase VisitINDEXOF_fun(mathParser.INDEXOF_funContext context)

0 commit comments

Comments
 (0)