jdc0589/CaseConversion — pull request #15 by Anaminus (2014-11-21 17:51:37+00:00)
Title: Major refactor to support detection of acronyms

### Motivation
One convention in [Go](http://golang.org/) is that acronyms [should have consistent casing] (https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Initialisms). Case Conversion does not detect acronyms, so I decided to extend its functionality.

### Feature additions/changes
- Supports detection of user-defined acronyms. That is, words which should be fully upper-cased ("URL") instead of just capitalized ("Url"). This can be disabled, which should recreate how Case Conversion currently behaves, if so.
- The convert_to_separate_words command preserves the case of words in the same way as convert_to_slash.
- When converting, any leading and trailing whitespace in each selection is preserved.
- Settings have been added, so that the behavior of acronym detection can be modified.
- Case Conversion has an entry in the Package Settings menu containing links to settings and key binding files, the way many other packages have.

### Minor points
- In case a user doesn't want to worry about predefined acronyms for some reason, a less robust detection method can be set.
- Upper-case variables are treated as lower-case. This is so that, for this particular variable format, non-acronym words will not be divided into individual letters. Basically, it's the same behavior as before.
- Package Control indicates that Case Conversion is compatible with both Sublime Text 2 and 3, so I've attempted to make sure that compatibility has been maintained.

### Internal changes
The code has been changed quite a bit to support these features. Instead of using regular expressions, variables are parsed into a consistent, generic structure. Information about how a variable is formatted is also determined. As a result, it is much easier to convert anything into anything else. Each existing command has been reimplemented using the parser.

### Other points
I'm not sure whether the acronym detection should be enabled by default. On one hand, it's a useful enough feature, but on the other, it might be disruptive to users expecting the original behavior.