mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-09-18 21:49:31 +02:00
reverse tool, testCases then updated index file
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { tool as stringReverse } from './reverse/meta';
|
||||||
import { tool as stringRandomizeCase } from './randomize-case/meta';
|
import { tool as stringRandomizeCase } from './randomize-case/meta';
|
||||||
import { tool as stringUppercase } from './uppercase/meta';
|
import { tool as stringUppercase } from './uppercase/meta';
|
||||||
import { tool as stringExtractSubstring } from './extract-substring/meta';
|
import { tool as stringExtractSubstring } from './extract-substring/meta';
|
||||||
|
11
src/pages/string/reverse/index.tsx
Normal file
11
src/pages/string/reverse/index.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { Box } from '@mui/material';
|
||||||
|
import React from 'react';
|
||||||
|
import * as Yup from 'yup';
|
||||||
|
|
||||||
|
const initialValues = {};
|
||||||
|
const validationSchema = Yup.object({
|
||||||
|
// splitSeparator: Yup.string().required('The separator is required')
|
||||||
|
});
|
||||||
|
export default function Reverse() {
|
||||||
|
return <Box>Lorem ipsum</Box>;
|
||||||
|
}
|
13
src/pages/string/reverse/meta.ts
Normal file
13
src/pages/string/reverse/meta.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { defineTool } from '@tools/defineTool';
|
||||||
|
import { lazy } from 'react';
|
||||||
|
// import image from '@assets/text.png';
|
||||||
|
|
||||||
|
export const tool = defineTool('string', {
|
||||||
|
name: 'Reverse',
|
||||||
|
path: 'reverse',
|
||||||
|
// image,
|
||||||
|
description: '',
|
||||||
|
shortDescription: '',
|
||||||
|
keywords: ['reverse'],
|
||||||
|
component: lazy(() => import('./index'))
|
||||||
|
});
|
52
src/pages/string/reverse/reverse.service.test.ts
Normal file
52
src/pages/string/reverse/reverse.service.test.ts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
import { expect, describe, it } from 'vitest';
|
||||||
|
import { stringReverser } from './service';
|
||||||
|
|
||||||
|
describe('stringReverser', () => {
|
||||||
|
it('should reverse a single-line string', () => {
|
||||||
|
const input = 'hello world';
|
||||||
|
const result = stringReverser(input, false, false, false);
|
||||||
|
expect(result).toBe('dlrow olleh');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should reverse each line in a multi-line string', () => {
|
||||||
|
const input = 'hello\nworld';
|
||||||
|
const result = stringReverser(input, true, false, false);
|
||||||
|
expect(result).toBe('olleh\ndlrow');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should remove empty items if emptyItems is true', () => {
|
||||||
|
const input = 'hello\n\nworld';
|
||||||
|
const result = stringReverser(input, true, true, false);
|
||||||
|
expect(result).toBe('olleh\ndlrow');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should trim each line if trim is true', () => {
|
||||||
|
const input = ' hello \n world ';
|
||||||
|
const result = stringReverser(input, true, false, true);
|
||||||
|
expect(result).toBe('olleh\ndlrow');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle empty input', () => {
|
||||||
|
const input = '';
|
||||||
|
const result = stringReverser(input, false, false, false);
|
||||||
|
expect(result).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle a single line with emptyItems and trim', () => {
|
||||||
|
const input = ' hello world ';
|
||||||
|
const result = stringReverser(input, false, true, true);
|
||||||
|
expect(result).toBe('dlrow olleh');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle a single line with emptyItems and non trim', () => {
|
||||||
|
const input = ' hello world ';
|
||||||
|
const result = stringReverser(input, false, true, false);
|
||||||
|
expect(result).toBe(' dlrow olleh ');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle a multi line with emptyItems and non trim', () => {
|
||||||
|
const input = ' hello\n\n\n\nworld ';
|
||||||
|
const result = stringReverser(input, true, true, false);
|
||||||
|
expect(result).toBe('olleh \n dlrow');
|
||||||
|
});
|
||||||
|
});
|
31
src/pages/string/reverse/service.ts
Normal file
31
src/pages/string/reverse/service.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import { reverseString } from 'utils/string';
|
||||||
|
|
||||||
|
export function stringReverser(
|
||||||
|
input: string,
|
||||||
|
multiLine: boolean,
|
||||||
|
emptyItems: boolean,
|
||||||
|
trim: boolean
|
||||||
|
) {
|
||||||
|
let array: string[] = [];
|
||||||
|
let result: string[] = [];
|
||||||
|
|
||||||
|
// split the input in multiLine mode
|
||||||
|
if (multiLine) {
|
||||||
|
array = input.split('\n');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
array.push(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
// handle empty items
|
||||||
|
if (emptyItems){
|
||||||
|
array = array.filter(Boolean);
|
||||||
|
}
|
||||||
|
// Handle trim
|
||||||
|
if (trim) {
|
||||||
|
array = array.map(line => line.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
result = array.map(element => reverseString(element));
|
||||||
|
return result.join('\n');
|
||||||
|
}
|
Reference in New Issue
Block a user