Skip to content

Commit ff195fb

Browse files
Create TryParseNumberMethod.cs
1 parent 4eb3c77 commit ff195fb

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using SER.ArgumentSystem.Arguments;
2+
using SER.ArgumentSystem.BaseArguments;
3+
using SER.MethodSystem.BaseMethods;
4+
using SER.MethodSystem.Structures;
5+
using SER.TokenSystem.Tokens;
6+
using SER.ValueSystem;
7+
8+
namespace SER.MethodSystem.Methods.NumberMethods;
9+
10+
public class TryParseNumberMethod : ReferenceReturningMethod<ParseResult<NumberValue>>
11+
{
12+
public override string Description => "Tries to parse a given value to a number.";
13+
14+
public override Argument[] ExpectedArguments =>
15+
[
16+
new AnyValueArgument("value to parse")
17+
];
18+
19+
public override void Execute()
20+
{
21+
var valueToParse = Args.GetAnyValue("value to parse");
22+
if (valueToParse is NumberValue numVal)
23+
{
24+
ReturnValue = new(numVal.ExactValue);
25+
return;
26+
}
27+
28+
if (BaseToken.TryParse<NumberToken>(valueToParse.ToString(), Script).WasSuccessful(out var token))
29+
{
30+
ReturnValue = new(token.Value);
31+
return;
32+
}
33+
34+
ReturnValue = new(null);
35+
}
36+
}

0 commit comments

Comments
 (0)