Skip to content

Commit

Permalink
Redundant string.substring removed
Browse files Browse the repository at this point in the history
  • Loading branch information
ackava committed Nov 6, 2023
1 parent 94d4d85 commit de6c76e
Show file tree
Hide file tree
Showing 16 changed files with 39 additions and 32 deletions.
4 changes: 2 additions & 2 deletions YantraJS.Core.Tests/Core/Number/JSNumberTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public void Fixed()
string financial(object x)
{
JSString d = Number.parseFloat(x).toFixed(2);
return d.value.Value;
return d.ToString();
}

Assert.AreEqual("123.46", financial(123.456));
Expand All @@ -51,7 +51,7 @@ public void Precision()
string Precision(object x)
{
JSString s = Number.parseFloat(x).toPrecision(4);
return s.value.Value;
return s.ToString();
}

Assert.AreEqual("123.5", Precision(123.456));
Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core.Tests/Imported/TestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ object ToPrimitive(object value)
case JSPrimitiveObject primitiveObject:
return ToPrimitive(primitiveObject.value);
case JSString sv:
return sv.value.Value;
return sv.ToString();
case JSNumber number:
//if (double.IsNaN(number.value))
// return "NaN";
Expand Down
4 changes: 2 additions & 2 deletions YantraJS.Core.Tests/ModuleBuilderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public async Task ExportFunctionShouldWork()
String.Empty);
if (modulereturn[KeyStrings.@default] is JSString str)
{
Assert.AreEqual("bar", str.value.Value);
Assert.AreEqual("bar", str.ToString());
}
else
{
Expand All @@ -79,7 +79,7 @@ public async Task ExportValueShouldWork()
String.Empty);
if (modulereturn[KeyStrings.@default] is JSString str)
{
Assert.AreEqual("prop", str.value.Value);
Assert.AreEqual("prop", str.ToString());
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core/Core/Arguments.cs
Original file line number Diff line number Diff line change
Expand Up @@ -740,7 +740,7 @@ public IElementEnumerator GetElementEnumerator()
[CallerFilePath] string? filePath = null,
[CallerLineNumber] int line = 0)
{
return this[index] is JSString s ? s.value : throw new JSException(
return this[index] is JSString s ? s.Value : throw new JSException(
name + " is required", function, filePath, line);
}

Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core/Core/Array/Typed/JSTypedArray.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public JSTypedArray(in Arguments a): this(a.NewPrototype)
length = array.Length;
break;
case JSString @string:
length = @string.value.Length;
length = @string.Length;
break;
case JSTypedArray typed:
length = typed.Length;
Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core/Core/BigInt/JSBigInt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ public override JSValue AddValue(JSValue value)
}
if (value is JSString @string)
{
return new JSString(this.value.ToString() + "n" + @string.value);
return new JSString(this.value.ToString() + "n" + @string.ToString());
}
if (value is JSObject @object)
return new JSString(this.value + @object.StringValue);
Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core/Core/Clr/ClrProxy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ public override bool StrictEquals(JSValue value)
//if (this.value.ToString() == proxy.value.ToString())
// return true;
break;
case JSString @string when this.value.ToString() == @string.value:
case JSString @string when @string.Value.Equals(this.value):
return true;
case JSNumber number:
switch (this.value)
Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core/Core/Function/JSFunction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ internal static JSValue Constructor(in Arguments args)
}
}

var bodyText = body is JSString @string ? @string.value : body.ToString();
var bodyText = body is JSString @string ? @string.Value : body.ToString();
string location = null;
JSContext.Current.DispatchEvalEvent(ref bodyText, ref location);

Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core/Core/Global/JSGlobal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public static JSValue Eval(in Arguments a)
var f = a.Get1();
if (!f.IsString)
return f;
var text = (f as JSString).value;
var text = (f as JSString).Value;
string location = null;
JSContext.Current.DispatchEvalEvent(ref text, ref location);
return CoreScript.Evaluate(text.Value, null);
Expand Down
4 changes: 2 additions & 2 deletions YantraJS.Core/Core/Json/JSJSON.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public static JSValue Stringify(in Arguments a)
indent = new string(' ', pi.IntValue);
} else if (pi is JSString js)
{
indent = js.value.Value;
indent = js.ToString();
}
}

Expand Down Expand Up @@ -132,7 +132,7 @@ public static string Stringify(JSValue value)
sb.Write(n.value.ToString());
return;
case JSString str:
QuoteString(str.value, sb);
QuoteString(str.Value, sb);
return;
case JSFunction _:
return;
Expand Down
6 changes: 3 additions & 3 deletions YantraJS.Core/Core/Number/JSNumber.cs
Original file line number Diff line number Diff line change
Expand Up @@ -199,9 +199,9 @@ public override bool ConvertTo(Type type, out object value)
public override string ToString()
{
if (double.IsPositiveInfinity(value))
return JSConstants.Infinity.value.Value;
return JSConstants.Infinity.ToString();
if (double.IsNegativeInfinity(value))
return JSConstants.NegativeInfinity.value.Value;
return JSConstants.NegativeInfinity.ToString();
if (value > 999999999999999.0)
return value.ToString("g21");
var v = value.ToString("g");
Expand Down Expand Up @@ -235,7 +235,7 @@ public override JSValue AddValue(JSValue value)
if (value is JSPrimitiveObject po)
value = po.value;
if (value is JSString @string)
return new JSString(this.value + @string.value);
return new JSString(this.value + @string.ToString());
if(value is JSObject @object)
return new JSString(this.value + @object.StringValue);
return new JSNumber(this.value + value.DoubleValue);
Expand Down
10 changes: 5 additions & 5 deletions YantraJS.Core/Core/Object/JSObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -963,7 +963,7 @@ public override bool Equals(JSValue value)
if (Object.ReferenceEquals(this, value))
return true;
if (value is JSString str)
if (this.ToString() == str.value)
if (str.Value.Equals(this.ToString()))
return true;
if (DoubleValue == value.DoubleValue)
return true;
Expand Down Expand Up @@ -995,7 +995,7 @@ public override bool Less(JSValue value)
switch(value)
{
case JSString strValue:
if (this.ToString().CompareTo(strValue.value) < 0)
if (this.ToString().CompareTo(strValue.ToString()) < 0)
return true;
break;
}
Expand All @@ -1009,7 +1009,7 @@ public override bool LessOrEqual(JSValue value)
switch (value)
{
case JSString strValue
when (this.ToString().CompareTo(strValue.value) <= 0):
when (this.ToString().CompareTo(strValue.ToString()) <= 0):
return true;
}
return false;
Expand All @@ -1020,7 +1020,7 @@ public override bool Greater(JSValue value)
switch (value)
{
case JSString strValue
when (this.ToString().CompareTo(strValue.value) > 0):
when (this.ToString().CompareTo(strValue.ToString()) > 0):
return true;
}
return false;
Expand All @@ -1033,7 +1033,7 @@ public override bool GreaterOrEqual(JSValue value)
switch (value)
{
case JSString strValue
when (this.ToString().CompareTo(strValue.value) >= 0):
when (this.ToString().CompareTo(strValue.ToString()) >= 0):
return true;
}
return false;
Expand Down
2 changes: 1 addition & 1 deletion YantraJS.Core/Core/Primitive/JSPrimitiveObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ protected internal override JSValue GetValue(KeyString key, JSValue receiver, bo
}
set {
if (value is JSString @string) {
if (name < @string.value.Length) {
if (name < @string.Length) {
return;
}
}
Expand Down
11 changes: 9 additions & 2 deletions YantraJS.Core/Core/String/JSString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ public partial class JSString : JSPrimitive

internal static JSString Empty = new JSString(string.Empty);

internal readonly StringSpan value;
internal StringSpan Value => value;

private StringSpan value;
KeyString _keyString;

private double NumberValue = 0;
Expand All @@ -46,7 +48,7 @@ public override double DoubleValue

public override bool BooleanValue => value.Length > 0;

public override long BigIntValue => long.TryParse(value.Value, out var n) ? n : 0;
public override long BigIntValue => long.TryParse(this.ToString(), out var n) ? n : 0;

public override bool IsString => true;

Expand Down Expand Up @@ -188,6 +190,11 @@ public override JSValue TypeOf()

public override string ToString()
{
if(value.Offset == 0 && value.Length == value.Source.Length)
{
return value.Source;
}
value = new StringSpan(value.Value);
return value.Value;
}

Expand Down
4 changes: 2 additions & 2 deletions YantraJS.Core/Core/String/JSTemplateString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public unsafe void Add(JSValue value)
{
if (value is JSString @string)
{
var span = @string.value;
var span = @string.Value;
fixed (char* start = span.Source)
{
char* ch1 = start + (span.Offset);
Expand All @@ -42,7 +42,7 @@ public unsafe JSTemplateString AddExpression(JSValue value)
{
if (value is JSString @string)
{
var span = @string.value;
var span = @string.Value;
fixed (char* start = span.Source)
{
char* ch1 = start + (span.Offset);
Expand Down
12 changes: 6 additions & 6 deletions YantraJS.Core/LinqExpressions/JSStringBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ public class JSStringBuilder
{


private static FieldInfo _Value =
typeof(JSString).InternalField(nameof(Core.JSString.value));
//private static FieldInfo _Value =
// typeof(JSString).InternalField(nameof(Core.JSString.Value));

public static Expression Value(Expression ex)
{
return Expression.Field(ex, _Value);
}
//public static Expression Value(Expression ex)
//{
// return Expression.Field(ex, _Value);
//}

private static ConstructorInfo _New = typeof(JSString).Constructor(typeof(string));

Expand Down

0 comments on commit de6c76e

Please sign in to comment.