varcaser

module
v0.0.0-...-e3fb03e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2019 License: MIT

README

Varcaser

Varcaser is a library for converting variables between different programming language casing conventions.

Varcaser is now stable. Although bugs that are discovered will be fixed, there is no plan to add more features to Varcaser.

The varcaser transformation function Caser.String(string) is designed around the assumption that the caller is aware of the casing convention of the input variable names. If this is not the case, the caller can use the Detect([]string) function on the input variable strings to retrieve a Splitter object, if that is possible. This Splitter object takes care of decomposing an input variable name into its component parts.

The case transformation component of Varcaser is implemented without regular expressions.

Varcaser handles cases such as rendering "AsyncHTTPRequest" in lower_snake_case as "async_http_request". In {Upper, Lower}CamelCase, that same variable will be rendered as "AsyncHttpRequest". To preserve the original casing, use {Upper, Lower}CamelCaseKeepCaps.

Warning: Although varcaser.Caser implements the golang.org/x/text/transform interface, the Bytes() and Transform() methods have not been tested yet.

Usage Examples

result := Caser{From: LowerCamelCase, To: KebabCase}.String("someInitMethod")
// "some-init-method"

result := Caser{From: LowerCamelCase,
       To: ScreamingSnakeCase}.String("myConstantVariable")
// "MY_CONSTANT_VARIABLE"

fromCase := c, err := Detect([]string{"Abcd", "MyVar", "ThisIsMyVar"})
// CaseConvention{
//        JoinStyle: camelJoinStyle,
//        SubsequentCase: strings.Title,
//        InitialCase: strings.Title
// }

Available Case Conventions

All of the following are exported as CaseConvention structs.

  • LowerSnakeCase: lower_snake_case
  • ScreamingSnakeCase: SCREAMING_SNAKE_CASE
  • KebabCase: kebab-case
  • ScreamingKebabCase: SCREAMING-KEBAB-CASE
  • HttpHeaderCase: HTTP-Header-Case (NB: Mishandles some conventional acronyms at the moment)
  • UpperCamelCase: UpperCamelCase (renders HTTP as Http)
  • LowerCamelCase: lowerCamelCase (renders HTTP as Http)
  • UpperCamelCaseKeepCaps: UpperCamelCaseKeepCaps (renders HTTP as HTTP)
  • LowerCamelCaseKeepCaps: lowerCamelCaseKeepCaps (renders HTTP as HTTP)

In addition, it is easy to build a custom CaseConvention your own use, if you need one that isn't provided here.

Updates

2015-11-07

Changed how the detector module works. Instead of returning a CaseConvention object, it returns a Splitter, which simplifies the logic significantly, with only a small sacrifice in functionality.

2015-11-05

Added the detector module, which provides the ability to detect the variable casing conventions.

2015-06-24

Removing SpinalCase and TrainCase because the former makes me feel queasy and they're both unnecessary.

Directories

Path Synopsis
Package varcaser provides a way to change the case of variable names.
Package varcaser provides a way to change the case of variable names.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL