[ADF-3615] created a pipe to replace empty space in strings with a special character (#4005)

This commit is contained in:
Vito
2018-11-26 16:15:50 +00:00
committed by Eugenio Romano
parent 91e5251bd0
commit 8a09d0db6a
5 changed files with 135 additions and 4 deletions

View File

@@ -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
<!-- {% raw %} -->
```HTML
<div [id]="'CHECK MY ID' | formatSpace">
BATTLESTAR GALACTICA
</div>
```
<!-- {% endraw %} -->
## 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.

View File

@@ -37,7 +37,7 @@
</mat-card-content>
<mat-card-actions *ngIf="form.hasOutcomes()" class="adf-form-mat-card-actions">
<!--[class.mdl-button--colored]="!outcome.isSystem"-->
<button [id]="'adf-form-'+ outcome.name | lowercase" *ngFor="let outcome of form.outcomes"
<button [id]="'adf-form-'+ outcome.name | formatSpace" *ngFor="let outcome of form.outcomes"
[color]="getColorForOutcome(outcome.name)"
mat-button
[disabled]="!isOutcomeButtonEnabled(outcome)"

View File

@@ -0,0 +1,65 @@
/*!
* @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 { FormatSpacePipe } from './format-space.pipe';
describe('FormatSpacePipe', () => {
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('');
});
});

View File

@@ -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;
}
}

View File

@@ -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 {