Skip to content

claudetech/js-change-object-case

Repository files navigation

change-object-case Build Status Coverage Status

A library based on change-case to change object keys case.

The library reexports all the methods of change-case so that it can be used as a drop-in replacement.

Each function of change-case has an equivalent with the suffix Keys for object keys and Array to map on each object in an array. So for example, from the function camel will be created camelKeys and camelArray.

Installation

You can get the package with npm

$ npm install --save change-object-case

or with bower

$ bower install --save change-object-case

Usage

var changeCase = require('change-object-case');
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}});
// {fooBar: {bar_baz: [{baz_qux: 1}]}}
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}}, {recursive: true});
// {fooBar: {barBaz: [{baz_qux: 1}]}}
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}}, {recursive: true, arrayRecursive: true});
// {fooBar: {barBaz: [{bazQux: 1}]}}
changeCase.camelArray([{foo_bar: 1}, 2]);
// [{fooBar: 1}, 2]
changeCase.snakeKeys({fooBar: 1});
// {foo_bar: 1}

If you don't know the type of your data beforehand, there's also methods that will take arbitrary data, e.g.:

changeCase.toCamel(['string', 1.2, {foo_bar: {bar_baz: [{baz_qux: 1}]}}], {recursive: true, arrayRecursive: true});

By default, recursion is turned off, and you have to explictly pass {recursive: true} to get objects processed recursively and {arrayRecursive: true} to get arrays transformed. You can set these values globally by changing changeCase.options:

var changeCase = require('change-object-case');
changeCase.options = {recursive: true, arrayRecursive: true};
changeCase.camelKeys({foo_bar: {bar_baz: [{baz_qux: 1}]}});
// {fooBar: {barBaz: [{bazQux: 1}]}}

You can pass {exclude: array[string]} to exclude keys from the transformation.

Key collision

When converting case, some keys can possibliy collide. By default, the key is overriden, but you can choose to raise an error in such a case by passing: {throwOnDuplicate: true}.

changeCase.camelKeys({a_b1: 1, a_b_1: 2}, {throwOnDuplicate: true});
// Error: duplicated key aB1

Available methods

See the change-case documentation for all the available methods, and suffix with Keys or Array where you need.

License

MIT