Code Documentation
This commit is contained in:
@ -1,11 +1,23 @@
|
||||
/* Fonctions Annexes */
|
||||
|
||||
// Vérifie si une valeur est vide
|
||||
/**
|
||||
* @function isEmptyValue
|
||||
* @description Vérifie si une valeur est vide.
|
||||
* @param {string} value
|
||||
* @returns {boolean}
|
||||
* @example isEmptyValue(null) → true
|
||||
*/
|
||||
function isEmptyValue(value) {
|
||||
return value === '' || value === null || value === undefined;
|
||||
}
|
||||
}
|
||||
|
||||
// Formate les nombres avec des espaces (ex : 76120 = 76 120)
|
||||
/**
|
||||
* @function formatNumberResult
|
||||
* @description Formate un nombre avec des espaces.
|
||||
* @param {number} num
|
||||
* @returns {(number|string)} - Le nombre formaté soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
|
||||
* @example formatNumberResult(76120) → '76 120'
|
||||
*/
|
||||
function formatNumberResult(num) {
|
||||
if(!isNaN(num) && num >= 1000) {
|
||||
return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ');
|
||||
@ -13,32 +25,54 @@ function formatNumberResult(num) {
|
||||
else {
|
||||
return num;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Vérifie si une string est un float (integer exclu)
|
||||
/**
|
||||
* @function isFloat
|
||||
* @description Vérifie si une string est un float (integer exclu).
|
||||
* @param {number} value
|
||||
* @returns {boolean}
|
||||
* @example isFloat(76120.474) → true
|
||||
*/
|
||||
function isFloat(value) {
|
||||
return !isNaN(value) && value.toString().includes('.');
|
||||
}
|
||||
}
|
||||
|
||||
// Convertit les puissances de 10 en nombre (ex: 1e+20 = 100 000 000 000 000 000 000), ne peut pas dépasser 1e+20 (21 ne fonctionne pas)
|
||||
function convertPuissanceToNumber(num) {
|
||||
return formatNumberResult((num).toFixed(0));
|
||||
}
|
||||
|
||||
// Majuscule à la 1ère lettre d'une string
|
||||
function capitalize (s) {
|
||||
/**
|
||||
* @function capitalize
|
||||
* @description Majuscule à la 1ère lettre d'une string.
|
||||
* @param {string} s
|
||||
* @returns {string}
|
||||
* @example capitalize('hello world!') → 'Hello world!'
|
||||
*/
|
||||
function capitalize(s) {
|
||||
if (typeof s !== 'string') return ''
|
||||
return s.charAt(0).toUpperCase() + s.slice(1)
|
||||
}
|
||||
|
||||
// Donne la date et l'heure selon l'UTC (Universal Time Coordinated)
|
||||
/**
|
||||
* @function dateTimeUTC
|
||||
* @description Donne la date et l'heure selon l'UTC (Universal Time Coordinated).
|
||||
* @requires {@link fonctions_annexes.js: showDateTime}
|
||||
* @requires {@link variables.js: timeNow, utcOffset, timeNow.setMinutes(timeNow.getMinutes() + utcOffset)}
|
||||
* @param {string} utc Heure de décalage par rapport à l'UTC
|
||||
* @returns {function} → showDateTime(enteredOffset) → Retourne l'exécution de la fonction showDateTime
|
||||
* @example dateTimeUTC('0')
|
||||
*/
|
||||
function dateTimeUTC(utc) {
|
||||
const enteredOffset = parseFloat(utc)*60;
|
||||
timeNow.setMinutes(timeNow.getMinutes() + enteredOffset);
|
||||
return showDateTime(enteredOffset);
|
||||
}
|
||||
}
|
||||
|
||||
// Affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00)
|
||||
/**
|
||||
* @function showDateTime
|
||||
* @description Affiche la date et l'heure (format : dd/mm/yyyy - 00:00:00).
|
||||
* @requires {@link fonctions_annexes.js: showDateTime}
|
||||
* @param {string} utc Heure de décalage par rapport à l'UTC
|
||||
* @returns {object} Retourne un objet contenant l'année, le mois, le jour, l'heure, les minutes, les secondes et la date formaté
|
||||
* @example dateTimeUTC('0') → dateTimeUTC vous renvoie l'exécution de showDateTime
|
||||
*/
|
||||
function showDateTime(enteredOffset) {
|
||||
const year = timeNow.getFullYear();
|
||||
const month = ('0'+(timeNow.getMonth()+1)).slice(-2);
|
||||
@ -62,7 +96,13 @@ function showDateTime(enteredOffset) {
|
||||
return objectDateTime;
|
||||
}
|
||||
|
||||
// Affiche l'heure en temps réel
|
||||
/**
|
||||
* @function realDateTime
|
||||
* @description Affiche l'heure en temps réel.
|
||||
* @param {string} id
|
||||
* @returns {boolean} true → Toujours true
|
||||
* @example window.onload = realDateTime('realDateTime') → va afficher l'heure en temps réel au chargement de la page dans la balise avec l'id realDateTime
|
||||
*/
|
||||
function realDateTime(id) {
|
||||
const realDateTimeNow = new Date;
|
||||
// const year = realDateTimeNow.getFullYear();
|
||||
@ -79,7 +119,16 @@ function realDateTime(id) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Vérifie si une date est valide par rapport à la date d'aujourd'hui
|
||||
/**
|
||||
* @function isValidDate
|
||||
* @description Vérifie si une date est valide (si la variable verifyDate a déjà exister avant la variable currentDate).
|
||||
* @param {string} verifyDate (format : dd/mm/yyyy) sachant qu'il faut faire -1 au mois car de 0 à 11 donc par exemple 14/12/2019 sera le 14 novembre 2019
|
||||
* @param {string} currentDate (format : dd/mm/yyyy) pas besoin de faire -1 au mois donc par exemple 14/12/2019 sera le 14 décembre 2019
|
||||
* @returns {boolean}
|
||||
* @example
|
||||
* isValidDate('10/11/2019', '11/11/2019') → false → Comparaison entre le 10 décembre 2019 et le 11 novembre 2019
|
||||
* isValidDate('10/10/2019', '11/11/2019') → true → Comparison entre le 10 novembre 2019 et le 11 novembre 2019
|
||||
*/
|
||||
function isValidDate(verifyDate, currentDate) {
|
||||
// Date à vérifier
|
||||
const toVerifyDate = verifyDate.split('/');
|
||||
@ -101,7 +150,12 @@ function isValidDate(verifyDate, currentDate) {
|
||||
}
|
||||
}
|
||||
|
||||
// Créer un cookie de session
|
||||
/**
|
||||
* @function createSessionCookie
|
||||
* @description Créer un cookie de session.
|
||||
* @param {string} name Nom du cookie
|
||||
* @param {string} value Valeur du cookie
|
||||
*/
|
||||
function createSessionCookie(name, value) {
|
||||
document.cookie = escape(name) + "=" + escape(value) + " ; path=/";
|
||||
}
|
@ -1,6 +1,17 @@
|
||||
/* Fonctions Principales */
|
||||
|
||||
// Affiche la météo et l'heure locale.
|
||||
/**
|
||||
* @function weatherRequest
|
||||
* @description Affiche la météo et l'heure locale grâce à l'API : openweathermap.org.
|
||||
* Le nom de la ville se récupère en Javascript qui créé un cookie pour récupérer cette variable en php.
|
||||
* Ainsi PHP va récupérer le JSON de l'api openweathermap.org puis ajax va se charger d'afficher le résultat.
|
||||
* Plus d'informations : {@link /scripts/main.js} et {@link /php/getWeatherJson.php}
|
||||
* @requires {@link fonctions_annexes.js: formatNumberResult, dateTimeUTC, showDateTime, capitalize}
|
||||
* @see {@link https://jquery.com/} Requête en AJAX avec jQuery
|
||||
* @see {@link https://openweathermap.org/} API de météo
|
||||
* @example
|
||||
* Ajoute au DOM de la page dans la div .results, la météo de la ville demandée.
|
||||
*/
|
||||
function weatherRequest() {
|
||||
$.ajax({
|
||||
url: '/php/getWeatherJson.php',
|
||||
@ -20,7 +31,14 @@ function weatherRequest() {
|
||||
});
|
||||
}
|
||||
|
||||
// Génère un nombre aléatoire entre un minimum inclus et un maximum inclus
|
||||
/**
|
||||
* @function randomNumber
|
||||
* @description Génère un nombre aléatoire entre un minimum inclus et un maximum inclus.
|
||||
* @param {number} min Nombre Minimum
|
||||
* @param {number} max Nombre Maximum
|
||||
* @returns {number} Nombre aléatoire
|
||||
* @example randomNumber(1, 2) → retourne soit 1 ou 2
|
||||
*/
|
||||
function randomNumber(min, max) {
|
||||
if (!isNaN(min) && !isNaN(max)) {
|
||||
min = Math.ceil(min);
|
||||
@ -30,9 +48,18 @@ function randomNumber(min, max) {
|
||||
else {
|
||||
return messageError;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Calcule l'âge de quelqu'un selon ça date de naissance
|
||||
/**
|
||||
* @function calculateAge
|
||||
* @description Calcule l'âge de quelqu'un selon ça date de naissance.
|
||||
* @requires {@link fonctions_annexes.js: formatNumberResult, isValidDate}
|
||||
* @requires {@link "external:moment.js"}
|
||||
* @see {@link https://momentjs.com/}
|
||||
* @param {string} birthDateEntered - Date de naissance (dd/mm/yyyy)
|
||||
* @returns {string} - L'âge en jours, mois et années
|
||||
* @example calculateAge('31/03/2003')
|
||||
*/
|
||||
function calculateAge(birthDateEntered) {
|
||||
// Les variables de la fonction
|
||||
const birthDateDay = parseInt(birthDateEntered.substring(0, 2));
|
||||
@ -69,9 +96,16 @@ function calculateAge(birthDateEntered) {
|
||||
else {
|
||||
return messageError;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Convertis des °C en °F et l'inverse aussi
|
||||
/**
|
||||
* @function convertTemperature
|
||||
* @description Convertis des °C en °F et l'inverse aussi.
|
||||
* @param {number} degree - Nombre de degrès
|
||||
* @param {string} unit - Unité du nombre (°C ou °F)
|
||||
* @returns {string} - degree unit = temperatureValue
|
||||
* @example convertTemperature(23, '°C') → 23 °C = 73.4 °F
|
||||
*/
|
||||
function convertTemperature(degree, unit) {
|
||||
if (!isNaN(degree) && unit === "°C") {
|
||||
const temperatureValue = ((degree * 9/5) + 32) + " °F";
|
||||
@ -84,9 +118,17 @@ function convertTemperature(degree, unit) {
|
||||
else {
|
||||
return messageError;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre
|
||||
/**
|
||||
* @function convertDistance
|
||||
* @description Convertis la longueur (distance) avec les unités allant de picomètre au Téramètre.
|
||||
* @param {number} firstValue - Le nombre que vous voulez convertir
|
||||
* @param {string} unitFirstValue - L'unité du nombre que vous voulez convertir
|
||||
* @param {string} unitFinalValue - L'unité de votre nombre après la conversion
|
||||
* @returns {string} - Conversion de longueur : firstValue unitFirstValue = result
|
||||
* @example convertDistance(500, 'cm', 'm') → Conversion de longueur : 500 cm = 5 m
|
||||
*/
|
||||
function convertDistance (firstValue, unitFirstValue, unitFinalValue) {
|
||||
|
||||
const reference = ["pm",null,null,"nm",null,null,"µm",null,null,"mm","cm","dm","m","dam","hm","km",null,null,"Mm",null,null,"Gm",null,null,"Tm"];
|
||||
@ -98,15 +140,21 @@ function convertDistance (firstValue, unitFirstValue, unitFinalValue) {
|
||||
// Conversion des longueurs :
|
||||
const difference = index1 - index2;
|
||||
const result = firstValue*Math.pow(10,difference);
|
||||
const response = 'Conversion de longueur : ' + formatNumberResult(firstValue).toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue;
|
||||
return response;
|
||||
return 'Conversion de longueur : ' + formatNumberResult(firstValue).toString() + ' ' + unitFirstValue + ' = ' + formatNumberResult(result) + ' ' + unitFinalValue;
|
||||
}
|
||||
else {
|
||||
return messageError;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Affiche uniquement les prénoms (qui sont dans la liste) qui commencent par la lettre souhaitée
|
||||
/**
|
||||
* @function filterStudents
|
||||
* @description Affiche uniquement les prénoms (qui sont dans la liste) qui commencent par la lettre souhaitée.
|
||||
* @param {string} filteredLetter - La lettre à filtré
|
||||
* @param {array} students - La liste des prénoms
|
||||
* @returns {string} - Prénoms qui commence par filteredLetter (totalfilteredLetterStudents) : filteredStudents
|
||||
* @example filterStudents('P', ['Prénom1', 'Prénom2', 'Divlo']) → Prénoms qui commence par P (2) : Prénom1 et Prénom2.
|
||||
*/
|
||||
function filterStudents(filteredLetter, students)
|
||||
{
|
||||
let filteredStudents = [];
|
||||
@ -130,16 +178,37 @@ function filterStudents(filteredLetter, students)
|
||||
else {
|
||||
return ("Il n'y a pas de prénom commencant par " + filteredLetter + ".");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Génère aléatoirement une citation ou un proverbe
|
||||
/**
|
||||
* @function getRandomQuote
|
||||
* @description Génère aléatoirement une citation ou un proverbe.
|
||||
* @requires {@link variables.js: quotes}
|
||||
* @requires {@link fonctions_principales.js: randomNumber}
|
||||
* @returns {string} - une citation au hasard à partir de la constante 'quotes' dans variables.js
|
||||
* @example getRandomQuote() → " Ne fais jamais rien contre ta conscience, même si l'Etat te le demande. " <br> <br> - Albert Einstein
|
||||
*/
|
||||
function getRandomQuote() {
|
||||
const randomNbr = randomNumber(0, (quotes.length - 1));
|
||||
const randomQuotes = quotes[randomNbr];
|
||||
return '" ' + randomQuotes["quote"] + ' " <br> <br> - ' + randomQuotes["source"];
|
||||
}
|
||||
}
|
||||
|
||||
// Convertis une valeur dans une devise dans une autre devise
|
||||
/**
|
||||
* @function convertCurrency
|
||||
* @description Convertis une valeur dans une devise dans une autre devise grâce à l'API exchangeratesapi.io.
|
||||
* @requires {@link fonctions_annexes.js: formatNumberResult}
|
||||
* @requires {@link variables.js: correspondancesMonnaie}
|
||||
* @see {@link https://jquery.com/} Requête en AJAX avec jQuery
|
||||
* @see {@link https://api.exchangeratesapi.io/} API de taux de change
|
||||
* @param {number} value - la valeur à convertir
|
||||
* @param {string} currency - la devise à avoir après conversion
|
||||
* @param {string} url - l'url de la requête à l'API en fonction du paramètre dans l'url '?base='
|
||||
* @example convertCurrency(50, "$ Américain", "https://api.exchangeratesapi.io/latest?base=EUR")
|
||||
* Ajoute au DOM de la page dans la div .results et .rateDate :
|
||||
* 50 EUR = 55.17 $ Américain
|
||||
* Dernier rafraîchissement du taux d'échange : 08/11/2019
|
||||
*/
|
||||
function convertCurrency(value, currency, url) {
|
||||
function currencyTest(currencyToTest) {
|
||||
for (let index in correspondancesMonnaie) {
|
||||
@ -158,11 +227,8 @@ function convertCurrency(value, currency, url) {
|
||||
if (currencySymboleAPI === undefined) {
|
||||
currencySymboleAPI = 1;
|
||||
}
|
||||
const exchangeRateYear = jsonFixer.date[0] + jsonFixer.date[1] + jsonFixer.date[2] + jsonFixer.date[3];
|
||||
const exchangeRateMonth = jsonFixer.date[5] + jsonFixer.date[6];
|
||||
const exchangeRateDay = jsonFixer.date[8] + jsonFixer.date[9];
|
||||
$('.results').html(formatNumberResult(value) + ' ' + jsonFixer.base + ' = ' + formatNumberResult((currencySymboleAPI * value).toFixed(2)) + ' ' + currency);
|
||||
$('.rateDate').html(`Dernier rafraîchissement du taux d'échange : ${exchangeRateDay}/${exchangeRateMonth}/${exchangeRateYear}`);
|
||||
$('.rateDate').html(`Dernier rafraîchissement du taux d'échange : ${jsonFixer.date[8] + jsonFixer.date[9]}/${jsonFixer.date[5] + jsonFixer.date[6]}/${jsonFixer.date[0] + jsonFixer.date[1] + jsonFixer.date[2] + jsonFixer.date[3]}`);
|
||||
}
|
||||
catch (error) {
|
||||
$('.results').html(messageError);
|
||||
@ -172,7 +238,13 @@ function convertCurrency(value, currency, url) {
|
||||
}
|
||||
|
||||
// Convertis des nombres de différentes bases et convertis en UTF-8. (source : http://jsfiddle.net/47zwb41o)
|
||||
// DecimalToBinary
|
||||
/**
|
||||
* @function decimalToBinary
|
||||
* @description Convertis un nombre décimal en binaire.
|
||||
* @param {string} value - Le nombre à convertir en string
|
||||
* @returns {string} - Le nombre en binaire
|
||||
* @example decimalToBinary('2') → '10'
|
||||
*/
|
||||
function decimalToBinary(value) {
|
||||
value = value.replace(" ", "");
|
||||
value = Number(value);
|
||||
@ -181,18 +253,32 @@ function decimalToBinary(value) {
|
||||
} else {
|
||||
return value.toString(2);
|
||||
}
|
||||
}
|
||||
// BinaryToDecimal
|
||||
}
|
||||
|
||||
/**
|
||||
* @function binaryToDecimal
|
||||
* @description Convertis un nombre binaire en décimal.
|
||||
* @requires {@link fonctions_annexes.js: formatNumberResult}
|
||||
* @param {string} value - Le nombre à convertir
|
||||
* @returns {(number|string)} - Le nombre en décimal soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
|
||||
* @example binaryToDecimal('10') → 2
|
||||
*/
|
||||
function binaryToDecimal(value) {
|
||||
value = Number(value);
|
||||
const result = formatNumberResult(parseInt(value, 2));
|
||||
const result = parseInt(Number(value), 2);
|
||||
if (isNaN(result)) {
|
||||
return messageError;
|
||||
} else {
|
||||
return result
|
||||
return formatNumberResult(result);
|
||||
}
|
||||
}
|
||||
// DecimalToHexadecimal
|
||||
}
|
||||
|
||||
/**
|
||||
* @function decimalToHexadecimal
|
||||
* @description Convertis un nombre décimal en hexadécimal.
|
||||
* @param {string} value - Le nombre à convertir
|
||||
* @returns {string} - Le nombre en hexadécimal
|
||||
* @example decimalToHexadecimal('15') → 'F'
|
||||
*/
|
||||
function decimalToHexadecimal(value) {
|
||||
value = value.replace(" ", "");
|
||||
value = Number(value);
|
||||
@ -201,17 +287,32 @@ function decimalToHexadecimal(value) {
|
||||
} else {
|
||||
return value.toString(16).toUpperCase();
|
||||
}
|
||||
}
|
||||
// HexadecimalToDecimal
|
||||
}
|
||||
|
||||
/**
|
||||
* @function hexadecimalToDecimal
|
||||
* @description Convertis un nombre hexadécimal en décimal.
|
||||
* @requires {@link fonctions_annexes.js: formatNumberResult}
|
||||
* @param {string} value - Le nombre à convertir
|
||||
* @returns {(number|string)} - Le nombre en décimal soit en nombre ou soit en string si supérieur à 1000 car pour 1000 par exemple formatNumberResult renvoie '1 000'
|
||||
* @example hexadecimalToDecimal('F') → 15
|
||||
*/
|
||||
function hexadecimalToDecimal(value) {
|
||||
const result = formatNumberResult(parseInt(value, 16));
|
||||
const result = parseInt(value, 16);
|
||||
if (isNaN(result)) {
|
||||
return messageError;
|
||||
} else {
|
||||
return result;
|
||||
return formatNumberResult(result);
|
||||
}
|
||||
}
|
||||
// BinaryToHexadecimal
|
||||
}
|
||||
|
||||
/**
|
||||
* @function binaryToHexadecimal
|
||||
* @description Convertis un nombre binaire en hexadécimal.
|
||||
* @param {string} value - Le nombre à convertir
|
||||
* @returns {string} - Le nombre en hexadécimal
|
||||
* @example binaryToHexadecimal('1111') → 'F'
|
||||
*/
|
||||
function binaryToHexadecimal(value) {
|
||||
value = Number(value);
|
||||
value = parseInt(value, 2);
|
||||
@ -221,17 +322,30 @@ function binaryToHexadecimal(value) {
|
||||
return parseInt(value).toString(16).toUpperCase();
|
||||
}
|
||||
}
|
||||
// HexadecimalToBinary
|
||||
|
||||
/**
|
||||
* @function hexadecimalToBinary
|
||||
* @description Convertis un nombre hexadécimal en binaire.
|
||||
* @param {string} value - Le nombre à convertir
|
||||
* @returns {string} - Le nombre en binaire
|
||||
* @example hexadecimalToBinary('F') → '1111'
|
||||
*/
|
||||
function hexadecimalToBinary(value) {
|
||||
value = Number(value);
|
||||
value = parseInt(value, 16);
|
||||
if (isNaN(value)) {
|
||||
return messageError;
|
||||
} else {
|
||||
return parseInt(value).toString(2);
|
||||
}
|
||||
}
|
||||
// Each letters has its own codePoint (Unicode Code)
|
||||
}
|
||||
|
||||
/**
|
||||
* @function textToNumberUnicode
|
||||
* @description Convertis chaque caractère d'une string en codePoint Unicode.
|
||||
* @param {string} value - La chaîne de caractère à convertir
|
||||
* @returns {string}
|
||||
* @example textToNumberUnicode('abc') → '97 98 99'
|
||||
*/
|
||||
function textToNumberUnicode(string) {
|
||||
try {
|
||||
let resultat = "";
|
||||
@ -244,7 +358,14 @@ function textToNumberUnicode(string) {
|
||||
return messageError;
|
||||
}
|
||||
}
|
||||
// Each codePoint has its own letter
|
||||
|
||||
/**
|
||||
* @function numberUnicodeToText
|
||||
* @description Convertis chaque codePoint Unicode en caractère.
|
||||
* @param {string} string - Nombre Unicode à convertir espacé par un espace à chaque fois
|
||||
* @returns {string}
|
||||
* @example numberUnicodeToText('97 98 99') → 'abc'
|
||||
*/
|
||||
function numberUnicodeToText(string) {
|
||||
try {
|
||||
const array = string.split(" ");
|
||||
@ -258,7 +379,14 @@ function numberUnicodeToText(string) {
|
||||
return messageError;
|
||||
}
|
||||
}
|
||||
// Texte en Binaire (UTF-8)
|
||||
|
||||
/**
|
||||
* @function textToBinary
|
||||
* @description Convertis un Texte en Binaire (UTF-8).
|
||||
* @param {string} s - La chaîne de caractère à convertir
|
||||
* @returns {string}
|
||||
* @example textToBinary('abc') → '01100001 01100010 01100011'
|
||||
*/
|
||||
function textToBinary(s) {
|
||||
try {
|
||||
s = unescape( encodeURIComponent(s));
|
||||
@ -273,7 +401,14 @@ function textToBinary(s) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
// Binaire (UTF-8) en Texte
|
||||
|
||||
/**
|
||||
* @function binaryToText
|
||||
* @description Convertis du Binaire (UTF-8) en Texte.
|
||||
* @param {string} s - La chaîne de caractère contenant tous les octets à convertir
|
||||
* @returns {string}
|
||||
* @example binaryToText('01100001 01100010 01100011') → 'abc'
|
||||
*/
|
||||
function binaryToText(s){
|
||||
try {
|
||||
s = s.replace(/\s/g,'')
|
||||
@ -286,8 +421,16 @@ function binaryToText(s){
|
||||
} catch (error) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
// Texte en Hexadécimal (UTF-8)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @function textToHexadecimal
|
||||
* @description Convertis un Texte en Hexadécimal (UTF-8).
|
||||
* @param {string} s - La chaîne de caractère à convertir
|
||||
* @returns {string}
|
||||
* @example textToHexadecimal('abc') → '61 62 63'
|
||||
*/
|
||||
function textToHexadecimal (s) {
|
||||
try {
|
||||
s = unescape( encodeURIComponent( s ) );
|
||||
@ -303,7 +446,14 @@ function textToHexadecimal (s) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
// Hexadécimal (UTF-8) en Texte
|
||||
|
||||
/**
|
||||
* @function hexadecimalToText
|
||||
* @description Convertis de l'Hexadécimal (UTF-8) en Texte.
|
||||
* @param {string} s - La chaîne de caractère contenant tous les nombres Hexadécimal à convertir
|
||||
* @returns {string}
|
||||
* @example hexadecimalToText('61 62 63') → 'abc'
|
||||
*/
|
||||
function hexadecimalToText (s) {
|
||||
try {
|
||||
s = s.replace(/\s/g,'');
|
||||
@ -314,7 +464,14 @@ function hexadecimalToText (s) {
|
||||
}
|
||||
}
|
||||
|
||||
// Convertis un nombre arabe en nombre romain
|
||||
/**
|
||||
* @function convertArabicToRoman
|
||||
* @description Convertis un nombre arabe en nombre romain.
|
||||
* @requires {@link variables.js: correspondancesRomainArabe}
|
||||
* @param {number} nombre - Le nombre arabe à convertir
|
||||
* @returns {string}
|
||||
* @example convertArabicToRoman(24) → 'XXIV'
|
||||
*/
|
||||
function convertArabicToRoman(nombre) {
|
||||
// Initialisation de la variable qui va contenir le résultat de la conversion
|
||||
let chiffresRomains = "";
|
||||
@ -342,16 +499,23 @@ function convertArabicToRoman(nombre) {
|
||||
|
||||
correspondancesRomainArabe.forEach(correspondance => {
|
||||
extraireChiffreRomain(correspondance[0], correspondance[1]);
|
||||
})
|
||||
});
|
||||
|
||||
if (chiffresRomains === '') {
|
||||
return messageError;
|
||||
} else {
|
||||
return chiffresRomains;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Convertis un nombre romain en nombre arabe
|
||||
/**
|
||||
* @function convertRomanToArabic
|
||||
* @description Convertis un nombre romain en nombre arabe.
|
||||
* @requires {@link variables.js: correspondancesRomainArabe}
|
||||
* @param {string} str - Le nombre romain à convertir
|
||||
* @returns {number}
|
||||
* @example convertRomanToArabic('XXIV') → 24
|
||||
*/
|
||||
function convertRomanToArabic(str) {
|
||||
let result = 0;
|
||||
for (let i = 0;i < correspondancesRomainArabe.length; i++) {
|
||||
@ -366,9 +530,15 @@ function convertRomanToArabic(str) {
|
||||
result = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// Vérifie si un nombre fait partie des nombres d'Armstrong
|
||||
/**
|
||||
* @function armstrongNumber
|
||||
* @description Vérifie si un nombre fait partie des nombres d'Armstrong.
|
||||
* @param {number} number - Le nombre à tester
|
||||
* @returns {string}
|
||||
* @example armstrongNumber(153) → 153 est un nombre d'Armstrong, car 1<sup>3</sup> + 5<sup>3</sup> + 3<sup>3</sup> = 153.
|
||||
*/
|
||||
function armstrongNumber(number) {
|
||||
let numberString = number.toString();
|
||||
let numberStringLength = numberString.length;
|
||||
@ -386,9 +556,15 @@ function armstrongNumber(number) {
|
||||
} else {
|
||||
return `${number} n'est pas un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot
|
||||
/**
|
||||
* @function stringPermutations
|
||||
* @description Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot.
|
||||
* @param {string} string - La chaîne de caractère à permuter
|
||||
* @returns {array}
|
||||
* @example stringPermutations('abc') → ["abc", "acb", "bac", "bca", "cab", "cba"]
|
||||
*/
|
||||
function stringPermutations(string) {
|
||||
let results = [];
|
||||
|
||||
@ -406,4 +582,4 @@ function stringPermutations(string) {
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user