Skip to content
Snippets Groups Projects
Commit 0d32d318 authored by Luke Ward's avatar Luke Ward Committed by Paul Slaughter
Browse files

Replace slugifyWithHyphens with improved slugify function

parent 903227b0
No related branches found
No related tags found
No related merge requests found
import $ from 'jquery';
import { slugifyWithHyphens } from './lib/utils/text_utility';
import { slugify } from './lib/utils/text_utility';
 
export default class Group {
constructor() {
Loading
Loading
@@ -14,7 +14,7 @@ export default class Group {
}
 
update() {
const slug = slugifyWithHyphens(this.groupName.val());
const slug = slugify(this.groupName.val());
this.groupPath.val(slug);
}
 
Loading
Loading
Loading
Loading
@@ -44,11 +44,18 @@ export const pluralize = (str, count) => str + (count > 1 || count === 0 ? 's' :
export const dasherize = str => str.replace(/[_\s]+/g, '-');
 
/**
* Replaces whitespaces with hyphens and converts to lower case
* Replaces whitespaces with hyphens, convert to lower case and remove non-allowed special characters
* @param {String} str
* @returns {String}
*/
export const slugifyWithHyphens = str => str.toLowerCase().replace(/\s+/g, '-');
export const slugify = str => {
const slug = str
.trim()
.toLowerCase()
.replace(/[^a-zA-Z0-9_.-]+/g, '-');
return slug === '-' ? '' : slug;
};
 
/**
* Replaces whitespaces with underscore and converts to lower case
Loading
Loading
import $ from 'jquery';
import { addSelectOnFocusBehaviour } from '../lib/utils/common_utils';
import { slugifyWithHyphens } from '../lib/utils/text_utility';
import { slugify } from '../lib/utils/text_utility';
import { s__ } from '~/locale';
 
let hasUserDefinedProjectPath = false;
Loading
Loading
@@ -34,7 +34,7 @@ const deriveProjectPathFromUrl = $projectImportUrl => {
};
 
const onProjectNameChange = ($projectNameInput, $projectPathInput) => {
const slug = slugifyWithHyphens($projectNameInput.val());
const slug = slugify($projectNameInput.val());
$projectPathInput.val(slug);
};
 
Loading
Loading
---
title: Replace slugifyWithHyphens with improved slugify function
merge_request: 30172
author: Luke Ward
type: fixed
Loading
Loading
@@ -55,9 +55,24 @@ describe('text_utility', () => {
});
});
 
describe('slugifyWithHyphens', () => {
describe('slugify', () => {
it('should remove accents and convert to lower case', () => {
expect(textUtils.slugify('João')).toEqual('jo-o');
});
it('should replaces whitespaces with hyphens and convert to lower case', () => {
expect(textUtils.slugifyWithHyphens('My Input String')).toEqual('my-input-string');
expect(textUtils.slugify('My Input String')).toEqual('my-input-string');
});
it('should remove trailing whitespace and replace whitespaces within string with a hyphen', () => {
expect(textUtils.slugify(' a new project ')).toEqual('a-new-project');
});
it('should only remove non-allowed special characters', () => {
expect(textUtils.slugify('test!_pro-ject~')).toEqual('test-_pro-ject-');
});
it('should squash multiple hypens', () => {
expect(textUtils.slugify('test!!!!_pro-ject~')).toEqual('test-_pro-ject-');
});
it('should return empty string if only non-allowed characters', () => {
expect(textUtils.slugify('здрасти')).toEqual('');
});
});
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment