vtally
Version:
An affordable and reliable Tally Light that works via WiFi based on NodeMCU / ESP8266. Supports multiple video mixers.
98 lines (97 loc) • 2.73 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const escape_string_regexp_1 = __importDefault(require("escape-string-regexp"));
class TallySettingsIni {
constructor(data = "") {
this.lines = data.split("\n").reverse();
if (this.lines[0] === '') {
this.lines.shift();
}
}
/**
* returns the line number where this setting is in the current file
*
* @param name name of the setting
*/
findSetting(name) {
const matcher = new RegExp(`^${(0, escape_string_regexp_1.default)(name)}\\s*=`);
const lineIdx = this.lines.findIndex(line => line.match(matcher));
if (lineIdx !== -1) {
return lineIdx;
}
else {
return null;
}
}
readSetting(name) {
const lineIdx = this.findSetting(name);
if (lineIdx !== null) {
const line = this.lines[lineIdx];
const idx = line.indexOf("=");
const value = line.substr(idx + 1);
return value;
}
else {
return null;
}
}
writeSetting(name, value) {
const line = `${name}=${value}`;
const lineIdx = this.findSetting(name);
if (lineIdx !== null) {
this.lines[lineIdx] = line;
}
else {
this.lines.unshift(line);
}
}
getStationSsid() {
return this.readSetting("station.ssid");
}
setStationSsid(ssid) {
this.writeSetting("station.ssid", ssid);
}
getStationPassword() {
return this.readSetting("station.password");
}
setStationPassword(password) {
this.writeSetting("station.password", password);
}
getHubIp() {
return this.readSetting("hub.ip");
}
setHubIp(ip) {
this.writeSetting("hub.ip", ip);
}
getHubPort() {
const port = this.readSetting("hub.port");
if (port !== null) {
return parseInt(port, 10);
}
else {
return null;
}
}
setHubPort(port) {
this.writeSetting("hub.port", port.toString());
}
getTallyName() {
return this.readSetting("tally.name");
}
setTallyName(name) {
this.writeSetting("tally.name", name);
}
toString() {
const lines = Array.from(this.lines);
lines.reverse();
lines.push(''); // newline at end
return lines.join("\n");
}
clone() {
return new TallySettingsIni(this.toString());
}
}
exports.default = TallySettingsIni;