@@ -67,6 +67,8 @@ class Integer {
6767 // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*
6868 // methods on which they depend.
6969
70+
71+ inSafeRange ( ) { return this . greaterThanOrEqual ( Integer . MIN_SAFE_VALUE ) && this . lessThanOrEqual ( Integer . MAX_SAFE_VALUE ) }
7072 /**
7173 * Converts the Integer to an exact javascript Number, assuming it is a 32 bit integer.
7274 * @returns {number }
@@ -718,6 +720,41 @@ Integer.fromValue = function(val) {
718720 return new Integer ( val . low , val . high ) ;
719721} ;
720722
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+
721758/**
722759 * @type {number }
723760 * @const
@@ -801,6 +838,20 @@ Integer.MAX_VALUE = Integer.fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);
801838 */
802839Integer . MIN_VALUE = Integer . fromBits ( 0 , 0x80000000 | 0 , false ) ;
803840
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+
804855/**
805856 * Cast value to Integer type.
806857 * @access public
@@ -812,14 +863,42 @@ let int = Integer.fromValue;
812863/**
813864 * Check if a variable is of Integer type.
814865 * @access public
815- * @param {Mixed } value - The varaible to check.
866+ * @param {Mixed } value - The variable to check.
816867 * @return {Boolean } - Is it of the Integer type?
817868 */
818869let isInt = Integer . isInteger ;
819870
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+
820896export {
821897 int ,
822898 isInt ,
899+ inSafeRange ,
900+ toNumber ,
901+ toString
823902}
824903
825904export default Integer
0 commit comments