Browse Source

Declared the Number class, marked some string functions as deprecated and append new functions to TJSString class.

Henrique Gottardi Werlang 1 year ago
parent
commit
5c44b340aa
1 changed files with 65 additions and 5 deletions
  1. 65 5
      packages/rtl/src/js.pas

+ 65 - 5
packages/rtl/src/js.pas

@@ -322,7 +322,8 @@ type
     property length : NativeInt read flength; 
     class function fromCharCode() : string; varargs;
     class function fromCodePoint() : string; varargs;
-    function anchor(const aName : string) : string;
+    function anchor(const aName : string) : string; deprecated;
+    function at(const index: Integer): String;
     function charAt(aIndex : NativeInt) : string;
     function charCodeAt(aIndex : NativeInt) : NativeInt;
     function codePointAt(aIndex : NativeInt) : NativeInt;
@@ -331,18 +332,25 @@ type
     function endsWith(aSearchString : string; Pos : NativeInt) : boolean; overload;
     function includes(aSearchString : string; Pos : NativeInt = 0) : boolean;
     function indexOf(aSearchString : String; Pos : NativeInt = 0) : Integer;
+    function isWellFormed: Boolean;
     function lastIndexOf(aSearchString : String) : NativeInt;overload;
     function lastIndexOf(aSearchString : String; Pos : NativeInt) : Integer;overload;
-    function link(aUrl : string) : String;
+    function link(aUrl : string) : String; deprecated;
     function localeCompare(aCompareString : string) : NativeInt; overload;
     function localeCompare(aCompareString : string; aLocales: string) : integer; overload;
     function localeCompare(compareString : string; locales: string; Options : TlocaleCompareOptions) : integer; overload;
     function match(aRegexp : TJSRegexp) : TStringDynArray; overload;
-    function match(aRegexp : String) : TStringDynArray;overload;
+    function match(aRegexp : String) : TStringDynArray; overload;
+    function matchAll(aRegexp : TJSRegexp) : TJSIterator; overload;
+    function matchAll(aRegexp : String) : TJSIterator; overload;
     {$IFDEF ECMAScript6}
     function normalize : string;
     function normalize(aForm : string) : string;
     {$ENDIF}
+    function padEnd(targetLength: Integer): String; overload;
+    function padEnd(targetLength: Integer; padString: String): String; overload;
+    function padStart(targetLength: Integer): String; overload;
+    function padStart(targetLength: Integer; padString: String): String; overload;
     function _repeat(aCount : NativeInt) : Integer; external name 'repeat';
     function replace(aRegexp : String; NewString : String) : String; overload;
     function replace(aRegexp : TJSRegexp; NewString : String) : String; overload;
@@ -376,8 +384,8 @@ type
     function split(aSeparator : array of string; aLimit : NativeInt) : TStringDynArray; overload;
     function startsWith(aSearchString : String) : Boolean; overload;
     function startsWith(aSearchString : String; aPosition : NativeInt) : Boolean; overload;
-    function substr(aStartIndex : NativeInt) : String; overload;
-    function substr(aStartIndex,aLength : NativeInt) : String; overload;
+    function substr(aStartIndex : NativeInt) : String; overload; deprecated;
+    function substr(aStartIndex,aLength : NativeInt) : String; overload; deprecated;
     function substring(aStartIndex : NativeInt) : String; overload;
     function substring(aStartIndex,aEndIndex : NativeInt) : String; overload;
     function toLocaleLowerCase : String;
@@ -385,7 +393,10 @@ type
     function toLowerCase : String;
     function toString : string;
     function toUpperCase : String;
+    function toWellFormed: String;
     function trim : string;
+    function trimEnd: String;
+    function trimStart: String;
     function valueOf : string;
   end;
 
@@ -995,6 +1006,55 @@ type
     constructor New(Target, Handler: TJSObject);
   end;
 
+  TJSNumber = class external name 'Number' (TJSFunction)
+  private
+    class var FEPSILON: Double; external name 'EPSILON';
+    class var FMAX_SAFE_INTEGER: Int64; external name 'MAX_SAFE_INTEGER';
+    class var FMAX_VALUE: Double; external name 'MAX_VALUE';
+    class var FMIN_SAFE_INTEGER: Int64; external name 'MIN_SAFE_INTEGER';
+    class var FMIN_VALUE: Double; external name 'MIN_VALUE';
+    class var FNaN: Double; external name 'NaN';
+    class var FNEGATIVE_INFINITY: TJSNumber; external name 'NEGATIVE_INFINITY';
+    class var FPOSITIVE_INFINITY: TJSNumber; external name 'POSITIVE_INFINITY';
+  public
+    constructor New(const value: Double);
+
+    class function isFinite(const value: Double): Boolean; overload;
+    class function isFinite(const value: Integer): Boolean; overload;
+    class function isFinite(const value: TJSNumber): Boolean; overload;
+    class function isInteger(const value: Double): Boolean; overload;
+    class function isInteger(const value: Integer): Boolean; overload;
+    class function isInteger(const value: TJSNumber): Boolean; overload;
+    class function isNaN(const value: Double): Boolean; overload;
+    class function isNaN(const value: Integer): Boolean; overload;
+    class function isNaN(const value: TJSNumber): Boolean; overload;
+    class function isSafeInteger(const value: Double): Boolean; overload;
+    class function isSafeInteger(const value: Integer): Boolean; overload;
+    class function isSafeInteger(const value: TJSNumber): Boolean; overload;
+    class function parseFloat(const value: String): TJSNumber; overload;
+    class function parseInt(const value: String): TJSNumber; overload;
+
+    function toExponential: TJSString; overload;
+    function toExponential(const fractionDigits: Integer): TJSString; overload;
+    function toFixed: TJSString; overload;
+    function toFixed(const digits: Integer): TJSString; overload;
+    function toLocaleString: TJSString; overload;
+    function toLocaleString(const locale: String): TJSString; overload;
+    function toPrecision: TJSString; overload;
+    function toPrecision(const precision: Integer): TJSString; overload;
+    function toString: TJSString; overload;
+    function toString(const radix: Integer): TJSString; overload;
+    function valueOf: Double;
+
+    class property EPSILON: Double read FEPSILON;
+    class property MAX_SAFE_INTEGER: Int64 read FMAX_SAFE_INTEGER;
+    class property MAX_VALUE: Double read FMAX_VALUE;
+    class property MIN_SAFE_INTEGER: Int64 read FMIN_SAFE_INTEGER;
+    class property MIN_VALUE: Double read FMIN_VALUE;
+    class property NaN: Double read FNaN;
+    class property NEGATIVE_INFINITY: TJSNumber read FNEGATIVE_INFINITY;
+    class property POSITIVE_INFINITY: TJSNumber read FPOSITIVE_INFINITY;
+  end;
 
 var
   // JSArguments can be used in procedures/functions to provide access to the 'arguments' array.