… a naming-convention library for the Go programming language. The two categories are delimiter-separated and letter case-separated words. Each of the formatting functions support both techniques for input, without any context.
This is free and unencumbered software released into the public domain.
name.CamelCase("pascal case", true)
returns “PascalCase”name.CamelCase("snake_to_camel AND CamelToCamel?", false)
returns “snakeToCamelANDCamelToCamel”name.Delimit("* All Hype is aGoodThing (TM)", '-')
returns “all-hype-is-a-good-thing-TM”name.DotSeparated("WebCrawler#socketTimeout")
returns “web.crawler.socket.timeout”
The following results were measured with Go 1.15 on an Intel i5-7500.
name time/op
Cases/a2B/CamelCase-4 38.9ns ± 5%
Cases/a2B/snake_case-4 41.1ns ± 1%
Cases/foo-bar/CamelCase-4 58.0ns ± 6%
Cases/foo-bar/snake_case-4 67.0ns ± 1%
Cases/ProcessHelperFactoryConfig#defaultIDBuilder/CamelCase-4 272ns ± 6%
Cases/ProcessHelperFactoryConfig#defaultIDBuilder/snake_case-4 324ns ± 1%
name alloc/op
Cases/a2B/CamelCase-4 3.00B ± 0%
Cases/a2B/snake_case-4 4.00B ± 0%
Cases/foo-bar/CamelCase-4 8.00B ± 0%
Cases/foo-bar/snake_case-4 16.0B ± 0%
Cases/ProcessHelperFactoryConfig#defaultIDBuilder/CamelCase-4 48.0B ± 0%
Cases/ProcessHelperFactoryConfig#defaultIDBuilder/snake_case-4 64.0B ± 0%
name allocs/op
Cases/a2B/CamelCase-4 1.00 ± 0%
Cases/a2B/snake_case-4 1.00 ± 0%
Cases/foo-bar/CamelCase-4 1.00 ± 0%
Cases/foo-bar/snake_case-4 1.00 ± 0%
Cases/ProcessHelperFactoryConfig#defaultIDBuilder/CamelCase-4 1.00 ± 0%
Cases/ProcessHelperFactoryConfig#defaultIDBuilder/snake_case-4 1.00 ± 0%