All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.liferay.util.sub.ts Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

import type {ReactNode} from 'react';

const SPLIT_REGEX = /({\d+})/g;

export default function sub>(
	langKey: string,
	...params: Params
) {
	const paramList = params.reduce(
		(paramList: ReactNode[], param) =>
			Array.isArray(param)
				? [...paramList, ...param]
				: [...paramList, param],
		[]
	) as ReactNode[];

	const keyArray: ReactNode[] = langKey
		.split(SPLIT_REGEX)
		.filter((val) => val.length !== 0);

	for (let i = 0; i < paramList.length; i++) {
		const param = paramList[i];

		const indexKey = `{${i}}`;

		let paramIndex = keyArray.indexOf(indexKey);

		while (paramIndex >= 0) {
			keyArray.splice(paramIndex, 1, param);

			paramIndex = keyArray.indexOf(indexKey);
		}
	}

	return (
		keyArray.some((value) => value && typeof value === 'object')
			? keyArray
			: keyArray.join('')
	) as Params extends ReactNode[] ? ReactNode[] : string;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy