@haystacks/async
Version:
A framework to build any number or any kind of native application or automation solution.
493 lines (473 loc) • 25.1 kB
JavaScript
/**
* @file languageParsing.js
* @module languageParsing
* @description Contains all of the business rule functions for processing of different language related text and characters.
* @requires module:ruleParsing
* @requires module:loggers
* @requires module:data
* @requires {@link https://www.npmjs.com/package/@haystacks/constants|@haystacks/constants}
* @requires {@link https://www.npmjs.com/package/path|path}
* @author Seth Hollingsead
* @date 2024/10/09
* @copyright Copyright © 2024-… by Seth Hollingsead. All rights reserved
*/
// Internal imports
import ruleParsing from './ruleParsing.js';
import loggers from '../../executrix/loggers.js';
import D from '../../structures/data.js';
// External imports
import hayConst from '@haystacks/constants';
import path from 'path';
const {abt, bas, msg, sys, wrd} = hayConst;
const baseFileName = path.basename(import.meta.url, path.extname(import.meta.url));
// framework.businessRules.rules.mathOperations.
const namespacePrefix = wrd.cframework + bas.cDot + sys.cbusinessRules + bas.cDot + wrd.crules + bas.cDot + baseFileName + bas.cDot;
/**
* @function languageToAlphabet
* @description Takes the name of a language and returns the special character alphabet for that language.
* So an input of Spanish will return: áéíóú¿¡üñ
* @param {string} inputData The name of the language that it's alphabet of special characters should be returned for.
* @param {string} inputMetaData Case sensitivity, UPPER CASE, or lower case.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/09
*/
async function languageToAlphabet(inputData, inputMetaData) {
let functionName = languageToAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + JSON.stringify(inputData));
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + JSON.stringify(inputMetaData));
let returnData = '';
// Load the language schema once
const languageSchema = D[wrd.cSchemas].languageSchema || {};
// languageSchema is:
await loggers.consoleLog(namespacePrefix + functionName, msg.clanguageSchemaIs + JSON.stringify(languageSchema));
// Convert inputData (language) to lowercase to match schema key
let languageKey = inputData ? inputData.toLowerCase() : '';
// languageKey is:
await loggers.consoleLog(namespacePrefix + functionName, msg.clanguageKeyIs + languageKey);
let languageRule = languageKey ? languageSchema[languageKey] : null; // Retrieve language data from schema
// languageRule is:
await loggers.consoleLog(namespacePrefix + functionName, msg.clanguageRuleIs + JSON.stringify(languageRule));
if (inputData && inputMetaData && typeof inputData === wrd.cstring &&
typeof inputMetaData === wrd.cstring && inputData != '' && inputMetaData != '') {
if (languageRule?.[sys.cbusinessRule]) {
returnData = await ruleParsing.processRulesInternal([inputMetaData, ''], [languageRule[sys.cbusinessRule]]);
} else {
returnData = await getEnglishAlphabet('', '');
}
} else if (inputData && typeof inputData === wrd.cstring && inputData != '') {
if (languageRule?.[sys.cbusinessRule]) {
returnData = await ruleParsing.processRulesInternal(['', ''], [languageRule[sys.cbusinessRule]]);
} else {
returnData = await getEnglishAlphabet('', '');
}
} else {
// Invalid input string, default to English alphabet
console.log(msg.cErrorInvalidInputString);
await loggers.consoleLog(namespacePrefix + functionName, msg.cErrorInvalidInputString);
returnData = await getEnglishAlphabet('', '');
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + JSON.stringify(returnData));
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getEnglishAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the English Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getEnglishAlphabet(inputData, inputMetaData) {
let functionName = getEnglishAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseEnglishAlphabet;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseEnglishAlphabet
} else {
returnData = abt.cUpperCaseEnglishAlphabet + abt.cLowerCaseEnglishAlphabet;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getChineseSimplifiedAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the ChineseSimplified Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getChineseSimplifiedAlphabet(inputData, inputMetaData) {
let functionName = getChineseSimplifiedAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
returnData = abt.cChineseSimplified;
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getChineseTraditionalAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the ChineseTraditional Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getChineseTraditionalAlphabet(inputData, inputMetaData) {
let functionName = getChineseTraditionalAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
returnData = abt.cChineseTraditional;
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getCzechAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Czech Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getCzechAlphabet(inputData, inputMetaData) {
let functionName = getCzechAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseCzech;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseCzech;
} else {
returnData = abt.cUpperCaseCzech + abt.cLowerCaseCzech;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getFrenchAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the French Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getFrenchAlphabet(inputData, inputMetaData) {
let functionName = getFrenchAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseFrench;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseFrench;
} else {
returnData = abt.cUpperCaseFrench + abt.cLowerCaseFrench;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getGermanAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the German Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getGermanAlphabet(inputData, inputMetaData) {
let functionName = getGermanAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseGerman;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseGerman;
} else {
returnData = abt.cUpperCaseGerman + abt.cLowerCaseGerman;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getHungarianAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Hungarian Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getHungarianAlphabet(inputData, inputMetaData) {
let functionName = getHungarianAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseHungarian;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseHungarian;
} else {
returnData = abt.cUpperCaseHungarian + abt.cLowerCaseHungarian;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getItalianAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Italian Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getItalianAlphabet(inputData, inputMetaData) {
let functionName = getItalianAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseItalian;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseItalian;
} else {
returnData = abt.cUpperCaseItalian + abt.cLowerCaseItalian;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getJapaneseAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Japanese Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getJapaneseAlphabet(inputData, inputMetaData) {
let functionName = getJapaneseAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
returnData = abt.cJapanese;
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getKoreanAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Korean Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getKoreanAlphabet(inputData, inputMetaData) {
let functionName = getKoreanAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseKorean;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseKorean;
} else {
returnData = abt.cKorean + abt.cUpperCaseKorean;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getMiscellaneousAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Miscellaneous Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getMiscellaneousAlphabet(inputData, inputMetaData) {
let functionName = getMiscellaneousAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
returnData = abt.cMisc;
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getPolishAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Polish Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getPolishAlphabet(inputData, inputMetaData) {
let functionName = getPolishAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCasePolish;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCasePolish;
} else {
returnData = abt.cUpperCasePolish + abt.cLowerCasePolish;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getPortugueseAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Portuguese Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getPortugueseAlphabet(inputData, inputMetaData) {
let functionName = getPortugueseAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCasePortuguese;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCasePortuguese;
} else {
returnData = abt.cUpperCasePortuguese + abt.cLowerCasePortuguese;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getRussianAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Russian Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getRussianAlphabet(inputData, inputMetaData) {
let functionName = getRussianAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseRussian;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseRussian;
} else {
returnData = abt.cUpperCaseRussian + abt.cLowerCaseRussian;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
/**
* @function getSpanishAlphabet
* @description A simple function to return either upper case, lower case, or mixed case letters and special characters of the Spanish Alphabet.
* @param {string} inputData Case sensitivity, UPPER CASE, or lowercase. if an empty string is provided or the language does not support upper or lower case,
* then combined case is used.
* @param {string} inputMetaData Not used for this business rule.
* @return {string} The string of special alphabetic characters for a given language.
* @author Seth Hollingsead
* @date 2024/10/23
*/
async function getSpanishAlphabet(inputData, inputMetaData) {
let functionName = getSpanishAlphabet.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputDataIs + inputData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cinputMetaDataIs + inputMetaData);
let returnData = '';
if (inputData?.toLowerCase()?.includes(wrd.cupper)) {
returnData = abt.cUpperCaseSpanish;
} else if (inputData?.toLowerCase()?.includes(wrd.clower)) {
returnData = abt.cLowerCaseSpanish;
} else {
returnData = abt.cUpperCaseSpanish + abt.cLowerCaseSpanish;
}
await loggers.consoleLog(namespacePrefix + functionName, msg.creturnDataIs + returnData);
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
return returnData;
}
export default {
languageToAlphabet,
getEnglishAlphabet,
getChineseSimplifiedAlphabet,
getChineseTraditionalAlphabet,
getCzechAlphabet,
getFrenchAlphabet,
getGermanAlphabet,
getHungarianAlphabet,
getItalianAlphabet,
getJapaneseAlphabet,
getKoreanAlphabet,
getMiscellaneousAlphabet,
getPolishAlphabet,
getPortugueseAlphabet,
getRussianAlphabet,
getSpanishAlphabet
};