accounts/abi: normalize method name to a camel-case string (#15976)
This commit is contained in:
		
							parent
							
								
									63687f04e4
								
							
						
					
					
						commit
						cddb529d70
					
				| @ -385,8 +385,7 @@ var methodNormalizer = map[Lang]func(string) string{ | |||||||
| 	LangJava: decapitalise, | 	LangJava: decapitalise, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // capitalise makes the first character of a string upper case, also removing any
 | // capitalise makes a camel-case string which starts with an upper case character.
 | ||||||
| // prefixing underscores from the variable names.
 |  | ||||||
| func capitalise(input string) string { | func capitalise(input string) string { | ||||||
| 	for len(input) > 0 && input[0] == '_' { | 	for len(input) > 0 && input[0] == '_' { | ||||||
| 		input = input[1:] | 		input = input[1:] | ||||||
| @ -394,12 +393,42 @@ func capitalise(input string) string { | |||||||
| 	if len(input) == 0 { | 	if len(input) == 0 { | ||||||
| 		return "" | 		return "" | ||||||
| 	} | 	} | ||||||
| 	return strings.ToUpper(input[:1]) + input[1:] | 	return toCamelCase(strings.ToUpper(input[:1]) + input[1:]) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // decapitalise makes the first character of a string lower case.
 | // decapitalise makes a camel-case string which starts with a lower case character.
 | ||||||
| func decapitalise(input string) string { | func decapitalise(input string) string { | ||||||
| 	return strings.ToLower(input[:1]) + input[1:] | 	for len(input) > 0 && input[0] == '_' { | ||||||
|  | 		input = input[1:] | ||||||
|  | 	} | ||||||
|  | 	if len(input) == 0 { | ||||||
|  | 		return "" | ||||||
|  | 	} | ||||||
|  | 	return toCamelCase(strings.ToLower(input[:1]) + input[1:]) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // toCamelCase converts an under-score string to a camel-case string
 | ||||||
|  | func toCamelCase(input string) string { | ||||||
|  | 	toupper := false | ||||||
|  | 
 | ||||||
|  | 	result := "" | ||||||
|  | 	for k, v := range input { | ||||||
|  | 		switch { | ||||||
|  | 		case k == 0: | ||||||
|  | 			result = strings.ToUpper(string(input[0])) | ||||||
|  | 
 | ||||||
|  | 		case toupper: | ||||||
|  | 			result += strings.ToUpper(string(v)) | ||||||
|  | 			toupper = false | ||||||
|  | 
 | ||||||
|  | 		case v == '_': | ||||||
|  | 			toupper = true | ||||||
|  | 
 | ||||||
|  | 		default: | ||||||
|  | 			result += string(v) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return result | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // structured checks whether a list of ABI data types has enough information to
 | // structured checks whether a list of ABI data types has enough information to
 | ||||||
|  | |||||||
| @ -506,6 +506,7 @@ var bindTests = []struct { | |||||||
| 			} | 			} | ||||||
| 		`, | 		`, | ||||||
| 	}, | 	}, | ||||||
|  | 	// Tests that methods and returns with underscores inside work correctly.
 | ||||||
| 	{ | 	{ | ||||||
| 		`Underscorer`, | 		`Underscorer`, | ||||||
| 		` | 		` | ||||||
| @ -531,9 +532,12 @@ var bindTests = []struct { | |||||||
| 			function AllPurelyUnderscoredOutput() constant returns (int _, int __) { | 			function AllPurelyUnderscoredOutput() constant returns (int _, int __) { | ||||||
| 				return (1, 2); | 				return (1, 2); | ||||||
| 			} | 			} | ||||||
|  | 			function _under_scored_func() constant returns (int _int) { | ||||||
|  | 				return 0; | ||||||
| 			} | 			} | ||||||
| 		`, `6060604052341561000f57600080fd5b6103498061001e6000396000f300606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303a592131461008857806367e6633d146100b85780639df484851461014d578063af7486ab1461017d578063b564b34d146101ad578063e02ab24d146101dd578063e409ca451461020d575b600080fd5b341561009357600080fd5b61009b61023d565b604051808381526020018281526020019250505060405180910390f35b34156100c357600080fd5b6100cb610252565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101115780820151818401526020810190506100f6565b50505050905090810190601f16801561013e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b341561015857600080fd5b6101606102a0565b604051808381526020018281526020019250505060405180910390f35b341561018857600080fd5b6101906102b5565b604051808381526020018281526020019250505060405180910390f35b34156101b857600080fd5b6101c06102ca565b604051808381526020018281526020019250505060405180910390f35b34156101e857600080fd5b6101f06102df565b604051808381526020018281526020019250505060405180910390f35b341561021857600080fd5b6102206102f4565b604051808381526020018281526020019250505060405180910390f35b60008060016002819150809050915091509091565b600061025c610309565b61013a8090506040805190810160405280600281526020017f7069000000000000000000000000000000000000000000000000000000000000815250915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b6020604051908101604052806000815250905600a165627a7a72305820c11dcfa136fc7d182ee4d34f0b12d988496228f7e2d02d2b5376d996ca1743d00029`, | 		} | ||||||
| 		`[{"constant":true,"inputs":[],"name":"LowerUpperCollision","outputs":[{"name":"_res","type":"int256"},{"name":"Res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UnderscoredOutput","outputs":[{"name":"_int","type":"int256"},{"name":"_string","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PurelyUnderscoredOutput","outputs":[{"name":"_","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UpperLowerCollision","outputs":[{"name":"_Res","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AllPurelyUnderscoredOutput","outputs":[{"name":"_","type":"int256"},{"name":"__","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UpperUpperCollision","outputs":[{"name":"_Res","type":"int256"},{"name":"Res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LowerLowerCollision","outputs":[{"name":"_res","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"}]`, | 		`, `6060604052341561000f57600080fd5b6103858061001e6000396000f30060606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303a592131461009357806346546dbe146100c357806367e6633d146100ec5780639df4848514610181578063af7486ab146101b1578063b564b34d146101e1578063e02ab24d14610211578063e409ca4514610241575b600080fd5b341561009e57600080fd5b6100a6610271565b604051808381526020018281526020019250505060405180910390f35b34156100ce57600080fd5b6100d6610286565b6040518082815260200191505060405180910390f35b34156100f757600080fd5b6100ff61028e565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561014557808201518184015260208101905061012a565b50505050905090810190601f1680156101725780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b341561018c57600080fd5b6101946102dc565b604051808381526020018281526020019250505060405180910390f35b34156101bc57600080fd5b6101c46102f1565b604051808381526020018281526020019250505060405180910390f35b34156101ec57600080fd5b6101f4610306565b604051808381526020018281526020019250505060405180910390f35b341561021c57600080fd5b61022461031b565b604051808381526020018281526020019250505060405180910390f35b341561024c57600080fd5b610254610330565b604051808381526020018281526020019250505060405180910390f35b60008060016002819150809050915091509091565b600080905090565b6000610298610345565b61013a8090506040805190810160405280600281526020017f7069000000000000000000000000000000000000000000000000000000000000815250915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b60008060016002819150809050915091509091565b6020604051908101604052806000815250905600a165627a7a72305820d1a53d9de9d1e3d55cb3dc591900b63c4f1ded79114f7b79b332684840e186a40029`, | ||||||
|  | 		`[{"constant":true,"inputs":[],"name":"LowerUpperCollision","outputs":[{"name":"_res","type":"int256"},{"name":"Res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_under_scored_func","outputs":[{"name":"_int","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UnderscoredOutput","outputs":[{"name":"_int","type":"int256"},{"name":"_string","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PurelyUnderscoredOutput","outputs":[{"name":"_","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UpperLowerCollision","outputs":[{"name":"_Res","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AllPurelyUnderscoredOutput","outputs":[{"name":"_","type":"int256"},{"name":"__","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UpperUpperCollision","outputs":[{"name":"_Res","type":"int256"},{"name":"Res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LowerLowerCollision","outputs":[{"name":"_res","type":"int256"},{"name":"res","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"}]`, | ||||||
| 		` | 		` | ||||||
| 			// Generate a new random account and a funded simulator
 | 			// Generate a new random account and a funded simulator
 | ||||||
| 			key, _ := crypto.GenerateKey() | 			key, _ := crypto.GenerateKey() | ||||||
| @ -562,6 +566,7 @@ var bindTests = []struct { | |||||||
| 			a, b, _ = underscorer.UpperUpperCollision(nil) | 			a, b, _ = underscorer.UpperUpperCollision(nil) | ||||||
| 			a, b, _ = underscorer.PurelyUnderscoredOutput(nil) | 			a, b, _ = underscorer.PurelyUnderscoredOutput(nil) | ||||||
| 			a, b, _ = underscorer.AllPurelyUnderscoredOutput(nil) | 			a, b, _ = underscorer.AllPurelyUnderscoredOutput(nil) | ||||||
|  | 			a, _ = underscorer.UnderScoredFunc(nil) | ||||||
| 
 | 
 | ||||||
| 			fmt.Println(a, b, err) | 			fmt.Println(a, b, err) | ||||||
| 		`, | 		`, | ||||||
| @ -801,7 +806,8 @@ var bindTests = []struct { | |||||||
| 			// (See accounts/abi/unpack_test.go for more extensive testing)
 | 			// (See accounts/abi/unpack_test.go for more extensive testing)
 | ||||||
| 			if retrievedArr[4][3][2] != testArr[4][3][2] { | 			if retrievedArr[4][3][2] != testArr[4][3][2] { | ||||||
| 				t.Fatalf("Retrieved value does not match expected value! got: %d, expected: %d. %v", retrievedArr[4][3][2], testArr[4][3][2], err) | 				t.Fatalf("Retrieved value does not match expected value! got: %d, expected: %d. %v", retrievedArr[4][3][2], testArr[4][3][2], err) | ||||||
| 			}`, | 			} | ||||||
|  | 		`, | ||||||
| 	}, | 	}, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user