CamelCase To Title: Jasmine Test

by MrPolywhirl

HTML

<script src="http://searls.github.com/jasmine-all/jasmine-all-min.js"></script>

JavaScript

var data = [
    'helloWorld',
    'HelloWorld',
    'IWasBornInTheUSA',
    'iWasBornInTheUSA',
    "lowercase",
    "Class",
    "MyClass",
    "HTML",
    "PDFLoader",
    "AString",
    "SimpleXMLParser",
    "GL11Version",
    "99Bottles",
    "May5",
    "BFG9000", ];

describe('Test CameltoTitle', function () {
    data.forEach(function (value) {
        var title = camelToTitle(value);
        var camel = titleToCamel(value);

        it(value + ' -> ' + title, function () {
            expect(value).toEqual(camel);
        });
    });
});

function camelToTitle(str) {
    return str.replace(/([A-Z][a-z]+)/g, " $1") // Words beginning with UC
    .replace(/([A-Z][A-Z]+)/g, " $1") // "Words" of only UC
    .replace(/([^A-Za-z ]+)/g, " $1"); // "Words" of non-letters
}

function titleToCamel(str) {
    return str.replace(/\W+(.)/g, function (x, chr) {
        return chr.toUpperCase();
    })
}