codekingpro/portable-devtools
115k
1exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair
2exports.convertToSetCommand = convertToSetCommand
3exports.convertToSetCommands = convertToSetCommands
4
5function convertToSetCommand (key, value) {
6 var line = ''
7 key = key || ''
8 key = key.trim()
9 value = value || ''
10 value = value.trim()
11 if (key && value && value.length > 0) {
12 line = '@SET ' + key + '=' + replaceDollarWithPercentPair(value) + '\r\n'
13 }
14 return line
15}
16
17function extractVariableValuePairs (declarations) {
18 var pairs = {}
19 declarations.map(function (declaration) {
20 var split = declaration.split('=')
21 pairs[split[0]] = split[1]
22 })
23 return pairs
24}
25
26function convertToSetCommands (variableString) {
27 var variableValuePairs = extractVariableValuePairs(variableString.split(' '))
28 var variableDeclarationsAsBatch = ''
29 Object.keys(variableValuePairs).forEach(function (key) {
30 variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key])
31 })
32 return variableDeclarationsAsBatch
33}
34
35function replaceDollarWithPercentPair (value) {
36 var dollarExpressions = /\$\{?([^$@#?\- \t{}:]+)\}?/g
37 var result = ''
38 var startIndex = 0
39 do {
40 var match = dollarExpressions.exec(value)
41 if (match) {
42 var betweenMatches = value.substring(startIndex, match.index) || ''
43 result += betweenMatches + '%' + match[1] + '%'
44 startIndex = dollarExpressions.lastIndex
45 }
46 } while (dollarExpressions.lastIndex > 0)
47 result += value.slice(startIndex)
48 return result
49}
50 