diff --git a/docs/core/format-space.pipe.md b/docs/core/format-space.pipe.md
new file mode 100644
index 0000000000..70e2d42247
--- /dev/null
+++ b/docs/core/format-space.pipe.md
@@ -0,0 +1,28 @@
+---
+Added: v2.0.0
+Status: Active
+Last reviewed: 2018-11-19
+---
+
+# Format Space pipe
+
+Replace all the white space in a string into a character given.
+
+## Basic Usage
+
+
+
+```HTML
+
+ BATTLESTAR GALACTICA
+
+```
+
+
+
+## Details
+
+The pipe will replace all the white space between the string into `_` by default and will transform the string in lowercase (ex. `test a pipe` => `test_a_pipe`).
+It is possible specify a different character for the replacing by passing the character you want in input.
+It is possible avoid the transformation into lowercase by passing `false` for the `lowercase` option.
+
diff --git a/lib/core/form/components/form.component.html b/lib/core/form/components/form.component.html
index 8ffc2dede4..f5cf0dec1f 100644
--- a/lib/core/form/components/form.component.html
+++ b/lib/core/form/components/form.component.html
@@ -37,7 +37,7 @@
- {
+
+ let pipe: FormatSpacePipe;
+
+ beforeEach(() => {
+ pipe = new FormatSpacePipe();
+ });
+
+ it('should replace the white space with an underscore by default', () => {
+ let result = pipe.transform('FAKE TEST');
+ expect(result).toBe('fake_test');
+ });
+
+ it('should replace all the white spaces with an underscore by default', () => {
+ let result = pipe.transform('FAKE TEST CHECK ');
+ expect(result).toBe('fake_test_check');
+ });
+
+ it('should trim the space at the end of the string and replace the ones in the middle', () => {
+ let result = pipe.transform(' FAKE TEST CHECK ');
+ expect(result).toBe('fake_test_check');
+ });
+
+ it('should return a lower case string by default', () => {
+ const testString = 'FAKE_TEST_LOWERCASE';
+ let result = pipe.transform(testString);
+ expect(result).toBe(testString.toLocaleLowerCase());
+ });
+
+ it('should replace the empty space with the character given', () => {
+ const testString = 'FAKE TEST LOWERCASE';
+ let result = pipe.transform(testString, '+');
+ expect(result).toBe('fake+test+lowercase');
+ });
+
+ it('should leave the string uppercase if explicitly set', () => {
+ const testString = 'FAKE TEST LOWERCASE';
+ let result = pipe.transform(testString, '-', false);
+ expect(result).toBe('FAKE-TEST-LOWERCASE');
+ });
+
+ it('should return an empty string when input is null', () => {
+ let result = pipe.transform(null);
+ expect(result).toBe('');
+ });
+});
diff --git a/lib/core/pipes/format-space.pipe.ts b/lib/core/pipes/format-space.pipe.ts
new file mode 100644
index 0000000000..f43905cd5f
--- /dev/null
+++ b/lib/core/pipes/format-space.pipe.ts
@@ -0,0 +1,34 @@
+/*!
+ * @license
+ * Copyright 2016 Alfresco Software, Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { Pipe, PipeTransform } from '@angular/core';
+
+@Pipe({
+ name: 'formatSpace'
+})
+export class FormatSpacePipe implements PipeTransform {
+
+ transform(inputValue: string, replaceChar: string = '_', lowerCase: boolean = true): string {
+ let transformedString = '';
+ if (inputValue) {
+ transformedString = lowerCase ? inputValue.trim().split(' ').join(replaceChar).toLocaleLowerCase() :
+ inputValue.trim().split(' ').join(replaceChar);
+ }
+ return transformedString;
+ }
+
+}
diff --git a/lib/core/pipes/pipe.module.ts b/lib/core/pipes/pipe.module.ts
index e9e7fbdc38..86a55065a7 100644
--- a/lib/core/pipes/pipe.module.ts
+++ b/lib/core/pipes/pipe.module.ts
@@ -25,6 +25,7 @@ import { HighlightPipe } from './text-highlight.pipe';
import { TimeAgoPipe } from './time-ago.pipe';
import { InitialUsernamePipe } from './user-initial.pipe';
import { FullNamePipe } from './full-name.pipe';
+import { FormatSpacePipe } from './format-space.pipe';
@NgModule({
imports: [
@@ -37,7 +38,8 @@ import { FullNamePipe } from './full-name.pipe';
MimeTypeIconPipe,
InitialUsernamePipe,
FullNamePipe,
- NodeNameTooltipPipe
+ NodeNameTooltipPipe,
+ FormatSpacePipe
],
providers: [
FileSizePipe,
@@ -45,7 +47,8 @@ import { FullNamePipe } from './full-name.pipe';
TimeAgoPipe,
MimeTypeIconPipe,
InitialUsernamePipe,
- NodeNameTooltipPipe
+ NodeNameTooltipPipe,
+ FormatSpacePipe
],
exports: [
FileSizePipe,
@@ -54,7 +57,8 @@ import { FullNamePipe } from './full-name.pipe';
MimeTypeIconPipe,
InitialUsernamePipe,
FullNamePipe,
- NodeNameTooltipPipe
+ NodeNameTooltipPipe,
+ FormatSpacePipe
]
})
export class PipeModule {