@@ -67,6 +67,8 @@ class Integer {
67
67
// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*
68
68
// methods on which they depend.
69
69
70
+
71
+ inSafeRange ( ) { return this . greaterThanOrEqual ( Integer . MIN_SAFE_VALUE ) && this . lessThanOrEqual ( Integer . MAX_SAFE_VALUE ) }
70
72
/**
71
73
* Converts the Integer to an exact javascript Number, assuming it is a 32 bit integer.
72
74
* @returns {number }
@@ -718,6 +720,41 @@ Integer.fromValue = function(val) {
718
720
return new Integer ( val . low , val . high ) ;
719
721
} ;
720
722
723
+ /**
724
+ * Converts the specified value to a number.
725
+ * @access private
726
+ * @param {!Integer|number|string|!{low: number, high: number} } val Value
727
+ * @returns {number }
728
+ * @expose
729
+ */
730
+ Integer . toNumber = function ( val ) {
731
+ return Integer . fromValue ( val ) . toNumber ( ) ;
732
+ } ;
733
+
734
+ /**
735
+ * Converts the specified value to a string.
736
+ * @access private
737
+ * @param {!Integer|number|string|!{low: number, high: number} } val Value
738
+ * @param {number } radix optional radix for string conversion, defaults to 10
739
+ * @returns {String }
740
+ * @expose
741
+ */
742
+ Integer . toString = function ( val , radix ) {
743
+ return Integer . fromValue ( val ) . toString ( radix )
744
+ } ;
745
+
746
+ /**
747
+ * Checks if the given value is in the safe range in order to be converted to a native number
748
+ * @access private
749
+ * @param {!Integer|number|string|!{low: number, high: number} } val Value
750
+ * @param {number } radix optional radix for string conversion, defaults to 10
751
+ * @returns {boolean }
752
+ * @expose
753
+ */
754
+ Integer . inSafeRange = function ( val ) {
755
+ return Integer . fromValue ( val ) . inSafeRange ( ) ;
756
+ } ;
757
+
721
758
/**
722
759
* @type {number }
723
760
* @const
@@ -801,6 +838,20 @@ Integer.MAX_VALUE = Integer.fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);
801
838
*/
802
839
Integer . MIN_VALUE = Integer . fromBits ( 0 , 0x80000000 | 0 , false ) ;
803
840
841
+ /**
842
+ * Minimum safe value.
843
+ * @type {!Integer }
844
+ * @private
845
+ */
846
+ Integer . MIN_SAFE_VALUE = Integer . fromNumber ( Number . MIN_SAFE_INTEGER ) ;
847
+
848
+ /**
849
+ * Maximum safe value.
850
+ * @type {!Integer }
851
+ * @private
852
+ */
853
+ Integer . MAX_SAFE_VALUE = Integer . fromNumber ( Number . MAX_SAFE_INTEGER ) ;
854
+
804
855
/**
805
856
* Cast value to Integer type.
806
857
* @access public
@@ -812,14 +863,42 @@ let int = Integer.fromValue;
812
863
/**
813
864
* Check if a variable is of Integer type.
814
865
* @access public
815
- * @param {Mixed } value - The varaible to check.
866
+ * @param {Mixed } value - The variable to check.
816
867
* @return {Boolean } - Is it of the Integer type?
817
868
*/
818
869
let isInt = Integer . isInteger ;
819
870
871
+ /**
872
+ * Check if a variable can be safely converted to a number
873
+ * @access public
874
+ * @param {Mixed } value - The variable to check
875
+ * @return {Boolean } - true if it is safe to call toNumber on variable otherwise false
876
+ */
877
+ let inSafeRange = Integer . inSafeRange ;
878
+
879
+ /**
880
+ * Converts a variable to a number
881
+ * @access public
882
+ * @param {Mixed } value - The variable to convert
883
+ * @return {number } - the variable as a number
884
+ */
885
+ let toNumber = Integer . toNumber ;
886
+
887
+ /**
888
+ * Converts the integer to a string representation
889
+ * @access public
890
+ * @param {Mixed } value - The variable to convert
891
+ * @param {number } radix - radix to use in string conversion, defaults to 10
892
+ * @return {String } - returns a string representation of the integer
893
+ */
894
+ let toString = Integer . toString ;
895
+
820
896
export {
821
897
int ,
822
898
isInt ,
899
+ inSafeRange ,
900
+ toNumber ,
901
+ toString
823
902
}
824
903
825
904
export default Integer
0 commit comments