package jsonrpc import "strings" // MethodNameFormatter is a function that takes a namespace and a method name and returns the full method name, sent via JSON-RPC. // This is useful if you want to customize the default behaviour, e.g. send without the namespace or make it lowercase. type MethodNameFormatter func(namespace, method string) string // CaseStyle represents the case style for method names. type CaseStyle int const ( OriginalCase CaseStyle = iota LowerFirstCharCase AllFirstCharCase ) // NewMethodNameFormatter creates a new method name formatter based on the provided options. func NewMethodNameFormatter(includeNamespace bool, nameCase CaseStyle) MethodNameFormatter { return func(namespace, method string) string { formattedMethod := method if nameCase == LowerFirstCharCase && len(method) > 0 { formattedMethod = strings.ToLower(method[:1]) + method[1:] } if nameCase == AllFirstCharCase { return strings.ToLower(namespace + "." + formattedMethod) } if includeNamespace { return namespace + "." + formattedMethod } return formattedMethod } } // DefaultMethodNameFormatter is a pass-through formatter with default options. var DefaultMethodNameFormatter = NewMethodNameFormatter(false, OriginalCase)