UNPKG

@autocodingsystems/gateway-client

Version:

Library and commandline utility to control the acs gateway - device drivers for the most common industrial production line devices

64 lines (53 loc) 1.88 kB
var digits = /\d+/ function splitname(name) { var basename = name; var copy = 0; var priority = 0; var priorityopen = basename.lastIndexOf('['); var priorityclose = basename.lastIndexOf(']'); var prioritycontent = basename.slice(priorityopen+1, priorityclose) if (priorityclose === (basename.length-1) && priorityopen > 0 && priorityopen < priorityclose && digits.test(prioritycontent)) { basename = basename.slice(0, priorityopen).trimRight(); priority = parseInt(prioritycontent); } var copyopen = name.lastIndexOf('(copy '); var copyclose = name.lastIndexOf(')'); var copycontent = basename.slice(copyopen + 6, copyclose); if (copyclose === (basename.length-1) && copyopen > 0 && copyopen < copyclose && digits.test(copycontent)) { basename = basename.slice(0, copyopen).trimRight(); copy = parseInt(copycontent); } return {basename, copy, priority}; } function joinname(name, copy, priority) { var joinedname = name.trimRight(); if (copy) { joinedname = `${joinedname} (copy ${copy})`; } if (priority) { joinedname = `${joinedname} [${priority}]`; } return joinedname; } module.exports = { duplicate: (name, existingdevices) => { return name; }, rename: (name, existingdevices) => { var {basename, copy, priority} = splitname(name); var newname = joinname(basename, copy, priority); while (existingdevices.some(e => e.Name === newname)) { copy += 1; newname = joinname(basename, copy, priority); } existingdevices.push({Name: newname}); return newname; }, skip: (name, existingdevices) => { if (existingdevices.some(e => e.Name === name)) { return null; } else { return name; } }, };