-
Notifications
You must be signed in to change notification settings - Fork 126
/
Copy pathConvert temperatures.js
32 lines (27 loc) · 1.31 KB
/
Convert temperatures.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
activation_example:30c or 30 degrees fahrenheit
regex:(?:^|\s)(-?\d{1,3}\.?\d{0,2})°?\s?(?:degrees)?\s?(?:c(?:elsius)?|f(?:ahrenheit)?)\b
flags:gmi
*/
const formatNumber = num => Number(num).toFixed(2).replace(/\.00$/, '');
const conversions = [];
// convert C to F
const celsiusRegex = /(-?\d{1,3}(?:\.\d{1,2})?)°?\s?(?:degrees?)?\s?c(?:elsius)?\b/gi;
const celsiusToFahrenheit = c => ((c * 9 / 5) + 32).toFixed(2);
let cMatch;
while ((cMatch = celsiusRegex.exec(current.text)) !== null) {
const celsius = parseFloat(cMatch);
const fahrenheit = celsiusToFahrenheit(celsius);
conversions.push(`${formatNumber(celsius)}°C is ${formatNumber(fahrenheit)} degrees in freedom units (Fahrenheit).`);
}
// convert F to C
const fahrenheitRegex = /(-?\d{1,3}(?:\.\d{1,2})?)°?\s?(?:degrees?)?\s?f(?:ahrenheit)?\b/gi;
const fahrenheitToCelsius = f => ((f - 32) * 5 / 9).toFixed(2);
let fMatch;
while ((fMatch = fahrenheitRegex.exec(current.text)) !== null) {
const fahrenheit = parseFloat(fMatch);
const celsius = fahrenheitToCelsius(fahrenheit);
conversions.push(`${formatNumber(fahrenheit)}°F is ${formatNumber(celsius)} degrees in sane units (Celsius).`);
}
const conversionMessage = conversions.join('\n');
new x_snc_slackerbot.Slacker().send_chat(current, conversionMessage);