From 52dc099e2350b6f89e5ebb8058626dc5a43026a3 Mon Sep 17 00:00:00 2001 From: Simon Knox Date: Thu, 4 Jan 2018 22:41:47 +1100 Subject: clearer name for camelcase function --- app/assets/javascripts/lib/utils/text_utility.js | 8 ++++---- .../notes/components/diff_with_note.vue | 4 ++-- spec/javascripts/lib/utils/text_utility_spec.js | 23 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/lib/utils/text_utility.js b/app/assets/javascripts/lib/utils/text_utility.js index 400f09dce88..fef720e32e9 100644 --- a/app/assets/javascripts/lib/utils/text_utility.js +++ b/app/assets/javascripts/lib/utils/text_utility.js @@ -65,13 +65,13 @@ export function capitalizeFirstCharacter(text) { return `${text[0].toUpperCase()}${text.slice(1)}`; } -export function camelize(str) { - return str.replace(/_([a-z])/gi, ($1, $2) => $2.toUpperCase()); +export function camelCase(str) { + return str.replace(/_+([a-z])/gi, ($1, $2) => $2.toUpperCase()); } -export function camelizeKeys(obj = {}) { +export function camelCaseKeys(obj = {}) { return Object.keys(obj).reduce((acc, key) => { - const camelKey = camelize(key); + const camelKey = camelCase(key); return { ...acc, [camelKey]: obj[key], diff --git a/app/assets/javascripts/notes/components/diff_with_note.vue b/app/assets/javascripts/notes/components/diff_with_note.vue index aa328cc0ad5..91d0fcfb2dc 100644 --- a/app/assets/javascripts/notes/components/diff_with_note.vue +++ b/app/assets/javascripts/notes/components/diff_with_note.vue @@ -3,7 +3,7 @@ import DiffFileHeader from './diff_file_header.vue'; import initDiscussionTab from '~/image_diff/init_discussion_tab'; import imageDiffHelper from '~/image_diff/helpers/index'; - import { camelizeKeys } from '~/lib/utils/text_utility'; + import { camelCaseKeys } from '~/lib/utils/text_utility'; export default { props: { @@ -27,7 +27,7 @@ return $(this.discussion.truncatedDiffLines); }, diffFile() { - return camelizeKeys(this.discussion.diffFile); + return camelCaseKeys(this.discussion.diffFile); }, imageDiffHtml() { return this.discussion.imageDiffHtml; diff --git a/spec/javascripts/lib/utils/text_utility_spec.js b/spec/javascripts/lib/utils/text_utility_spec.js index 1f46c225071..5615657fcff 100644 --- a/spec/javascripts/lib/utils/text_utility_spec.js +++ b/spec/javascripts/lib/utils/text_utility_spec.js @@ -62,4 +62,27 @@ describe('text_utility', () => { expect(textUtils.slugify('João')).toEqual('joão'); }); }); + + describe('camelCase', () => { + it('converts a snake_case string to camelCase', () => { + expect(textUtils.camelCase('snake_case_string')).toEqual('snakeCaseString'); + }); + + it('converts string with numbers', () => { + expect(textUtils.camelCase('test1twothree')).toEqual('test1twothree'); + }); + }); + + describe('camelCaseKeys', () => { + it('converts object keys to camelCase', () => { + const input = { + my_key: 'some_value', + }; + const expected = { + myKey: 'some_value', + }; + + expect(textUtils.camelCaseKeys(input)).toEqual(expected); + }); + }); }); -- cgit v1.2.1