gitlab.com/flarenetwork/coreth@v0.1.1/eth/tracers/tracers.go (about) 1 // (c) 2019-2020, Ava Labs, Inc. 2 // 3 // This file is a derived work, based on the go-ethereum library whose original 4 // notices appear below. 5 // 6 // It is distributed under a license compatible with the licensing terms of the 7 // original code from which it is derived. 8 // 9 // Much love to the original authors for their work. 10 // ********** 11 // Copyright 2017 The go-ethereum Authors 12 // This file is part of the go-ethereum library. 13 // 14 // The go-ethereum library is free software: you can redistribute it and/or modify 15 // it under the terms of the GNU Lesser General Public License as published by 16 // the Free Software Foundation, either version 3 of the License, or 17 // (at your option) any later version. 18 // 19 // The go-ethereum library is distributed in the hope that it will be useful, 20 // but WITHOUT ANY WARRANTY; without even the implied warranty of 21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 // GNU Lesser General Public License for more details. 23 // 24 // You should have received a copy of the GNU Lesser General Public License 25 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 26 27 // Package tracers is a collection of JavaScript transaction tracers. 28 package tracers 29 30 import ( 31 "strings" 32 "unicode" 33 34 "gitlab.com/flarenetwork/coreth/eth/tracers/internal/tracers" 35 ) 36 37 // all contains all the built in JavaScript tracers by name. 38 var all = make(map[string]string) 39 40 // camel converts a snake cased input string into a camel cased output. 41 func camel(str string) string { 42 pieces := strings.Split(str, "_") 43 for i := 1; i < len(pieces); i++ { 44 pieces[i] = string(unicode.ToUpper(rune(pieces[i][0]))) + pieces[i][1:] 45 } 46 return strings.Join(pieces, "") 47 } 48 49 // init retrieves the JavaScript transaction tracers included in go-ethereum. 50 func init() { 51 for _, file := range tracers.AssetNames() { 52 name := camel(strings.TrimSuffix(file, ".js")) 53 all[name] = string(tracers.MustAsset(file)) 54 } 55 } 56 57 // tracer retrieves a specific JavaScript tracer by name. 58 func tracer(name string) (string, bool) { 59 if tracer, ok := all[name]; ok { 60 return tracer, true 61 } 62 return "", false 63 }