npm
Version:
a package manager for JavaScript
50 lines (45 loc) • 1.56 kB
JavaScript
exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair
exports.convertToSetCommand = convertToSetCommand
exports.convertToSetCommands = convertToSetCommands
function convertToSetCommand (key, value) {
var line = ''
key = key || ''
key = key.trim()
value = value || ''
value = value.trim()
if (key && value && value.length > 0) {
line = '@SET ' + key + '=' + replaceDollarWithPercentPair(value) + '\r\n'
}
return line
}
function extractVariableValuePairs (declarations) {
var pairs = {}
declarations.map(function (declaration) {
var split = declaration.split('=')
pairs[split[0]] = split[1]
})
return pairs
}
function convertToSetCommands (variableString) {
var variableValuePairs = extractVariableValuePairs(variableString.split(' '))
var variableDeclarationsAsBatch = ''
Object.keys(variableValuePairs).forEach(function (key) {
variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key])
})
return variableDeclarationsAsBatch
}
function replaceDollarWithPercentPair (value) {
var dollarExpressions = /\$\{?([^$@#?\- \t{}:]+)\}?/g
var result = ''
var startIndex = 0
do {
var match = dollarExpressions.exec(value)
if (match) {
var betweenMatches = value.substring(startIndex, match.index) || ''
result += betweenMatches + '%' + match[1] + '%'
startIndex = dollarExpressions.lastIndex
}
} while (dollarExpressions.lastIndex > 0)
result += value.slice(startIndex)
return result
}