Skip to content

Commit 88cf7ea

Browse files
committed
.
1 parent 13e850e commit 88cf7ea

File tree

5 files changed

+87
-0
lines changed

5 files changed

+87
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
export const calculateSum = (a: number, b: number): number => {
2+
return a + b;
3+
};
4+
5+
export const formatName = (firstName: string, lastName: string): string => {
6+
return `${firstName} ${lastName}`;
7+
};
8+
9+
export const generateId = (): string => {
10+
return Math.random().toString(36).substring(7);
11+
};
12+
13+
export const validateEmail = (email: string): boolean => {
14+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
15+
return emailRegex.test(email);
16+
};
17+
18+
export const capitalize = (str: string): string => {
19+
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
20+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { calculateSum, formatName, capitalize } from '../module_a';
2+
3+
export const calculateAverage = (numbers: number[]): number => {
4+
const sum = numbers.reduce((acc, curr) => calculateSum(acc, curr), 0);
5+
return sum / numbers.length;
6+
};
7+
8+
export const createUserProfile = (firstName: string, lastName: string): string => {
9+
const formattedName = formatName(firstName, lastName);
10+
return `Profile: ${formattedName}`;
11+
};
12+
13+
export const formatText = (text: string): string => {
14+
return text.split(' ').map(capitalize).join(' ');
15+
};
16+
17+
export const multiply = (a: number, b: number): number => {
18+
return a * b;
19+
};
20+
21+
export const generateGreeting = (name: string): string => {
22+
return `Hello, ${capitalize(name)}!`;
23+
};
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { calculateSum, formatName, capitalize } from '../module_a/functions';
2+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { validateEmail, generateId } from '../module_a';
2+
import { calculateAverage, multiply, createUserProfile } from 'index';
3+
4+
export const createUser = (email: string, firstName: string, lastName: string) => {
5+
if (!validateEmail(email)) {
6+
throw new Error('Invalid email');
7+
}
8+
9+
return {
10+
id: generateId(),
11+
profile: createUserProfile(firstName, lastName),
12+
email
13+
};
14+
};
15+
16+
export const calculateMetrics = (values: number[]): { average: number; scaled: number[] } => {
17+
const avg = calculateAverage(values);
18+
const scaled = values.map(v => multiply(v, 2));
19+
return { average: avg, scaled };
20+
};
21+
22+
export const validateAndFormatUser = (email: string, firstName: string, lastName: string) => {
23+
if (!validateEmail(email)) {
24+
return { success: false, message: 'Invalid email' };
25+
}
26+
27+
const profile = createUserProfile(firstName, lastName);
28+
return { success: true, profile };
29+
};
30+
31+
export const processNumbers = (numbers: number[]): number => {
32+
const { average } = calculateMetrics(numbers);
33+
return multiply(average, 100);
34+
};
35+
36+
export const generateReport = (userData: { email: string; name: string }): string => {
37+
const isValidEmail = validateEmail(userData.email);
38+
const id = generateId();
39+
return `Report ${id}: Email ${isValidEmail ? 'valid' : 'invalid'} - ${userData.name}`;
40+
};
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { validateEmail, generateId } from '../module_a/functions';
2+
import { calculateAverage, multiply, createUserProfile } from '../module_b/functions';

0 commit comments

Comments
 (0)