Merge pull request #2448 from fjl/jsre-bignum
jsre: print BigNumber objects with custom constructor as number
This commit is contained in:
		@@ -227,12 +227,20 @@ func iterOwnKeys(vm *otto.Otto, obj *otto.Object, f func(string)) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ctx ppctx) isBigNumber(v *otto.Object) bool {
 | 
			
		||||
	BigNumber, err := ctx.vm.Run("BigNumber.prototype")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	// Handle numbers with custom constructor.
 | 
			
		||||
	if v, _ := v.Get("constructor"); v.Object() != nil {
 | 
			
		||||
		if strings.HasPrefix(toString(v.Object()), "function BigNumber") {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	cp := constructorPrototype(v)
 | 
			
		||||
	return cp != nil && cp.Value() == BigNumber
 | 
			
		||||
	}
 | 
			
		||||
	// Handle default constructor.
 | 
			
		||||
	BigNumber, _ := ctx.vm.Object("BigNumber.prototype")
 | 
			
		||||
	if BigNumber == nil {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	bv, _ := BigNumber.Call("isPrototypeOf", v)
 | 
			
		||||
	b, _ := bv.ToBoolean()
 | 
			
		||||
	return b
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func toString(obj *otto.Object) string {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user