denon-client
Version:
A handy denon avr client. Allows controlling the AVR and listen to events. May work with Marantz devices too.
111 lines (87 loc) • 2.38 kB
JavaScript
module.exports = {
volumeToHumanTransform: function volumeToHumanTransform(volume) {
const digits = (volume).toString(10)
.split('')
.map(Number);
let transformed = '';
transformed += digits[0] + '';
transformed += digits[1] + '';
if (digits.length > 2) {
transformed += '.';
for(let i = 2; i < digits.length; i++) {
transformed += digits[i] + '';
}
}
return parseFloat(transformed);
},
volumeToAvrTransform: function volumeToAvrTransform(volume) {
// Case: 1.5
// 22.5
// 22
// 1
function createDigitArray(volume) {
return (volume).toString(10)
.replace('.', '')
.replace(',', '')
.split('')
.map(Number);
}
const matcher = [
{
match: (volume) => {
const regex = /(?:(^\d\.\d)$)/;
if (volume.toString().match(regex)) {
const digits = createDigitArray(volume);
let result = `0${digits[0]}${digits[1]}`;
return result;
}
return false;
}, // 1.5
},
{
match: (volume) => {
const regex = /(?:(^\d$))/; // 1
if (volume.toString().match(regex)) {
const digits = createDigitArray(volume);
let result = `0${digits[0]}`;
return result;
}
return false;
}
},
{
match: (volume) => {
const regex = /(?:(^\d\d$))/; // 22
if (volume.toString().match(regex)) {
const digits = createDigitArray(volume);
let result = `${digits[0]}${digits[1]}0`;
return result;
}
return false;
}
},
{
match: (volume) => {
const regex = /(?:(^\d\d\.\d$))/; // 22.5
if (volume.toString().match(regex)) {
const digits = createDigitArray(volume);
let result = `${digits[0]}${digits[1]}${digits[2]}`;
return result;
}
return false;
}
}
]
let formattedVolume;
matcher.forEach((match) => {
let volumeMatch = match.match(volume);
if (volumeMatch) {
formattedVolume = volumeMatch;
}
});
if (!formattedVolume) {
formattedVolume = volume;
}
return formattedVolume;
}
}