Compare commits
6 Commits
6e7e24be49
...
254eb3beda
Author | SHA1 | Date |
---|---|---|
|
254eb3beda | |
|
e0a28b434e | |
|
9d334161bc | |
|
38709c789e | |
|
942dc7b38a | |
|
10093659b4 |
40
index.js
40
index.js
|
@ -4,6 +4,7 @@ var fs = require('fs');
|
||||||
var sfs = require('safe-replace').create();
|
var sfs = require('safe-replace').create();
|
||||||
|
|
||||||
function snakeCase(key) {
|
function snakeCase(key) {
|
||||||
|
// TODO let user supply list of exceptions
|
||||||
if ('tlsSni01Port' === key) {
|
if ('tlsSni01Port' === key) {
|
||||||
return 'tls_sni_01_port';
|
return 'tls_sni_01_port';
|
||||||
}
|
}
|
||||||
|
@ -35,7 +36,7 @@ function parsePythonConf(str, cb) {
|
||||||
|
|
||||||
if (!line) { return; }
|
if (!line) { return; }
|
||||||
|
|
||||||
var parts = line.trim().split('=');
|
var parts = line.split('=');
|
||||||
var pykey = parts.shift().trim();
|
var pykey = parts.shift().trim();
|
||||||
var key = camelCase(pykey);
|
var key = camelCase(pykey);
|
||||||
var val = parts.join('=').trim();
|
var val = parts.join('=').trim();
|
||||||
|
@ -46,13 +47,13 @@ function parsePythonConf(str, cb) {
|
||||||
else if ('False' === val) {
|
else if ('False' === val) {
|
||||||
val = false;
|
val = false;
|
||||||
}
|
}
|
||||||
else if ('None' === val) {
|
else if ('None' === val || '' === val) {
|
||||||
val = null;
|
val = null;
|
||||||
}
|
}
|
||||||
else if (/,/.test(val) && !/^"[^"]*"$/.test(val)) {
|
else if (/,/.test(val) && !/^"[^"]*"$/.test(val)) {
|
||||||
val = val.split(',');
|
val = val.split(',').map(function(x) { return x.trim(); });
|
||||||
}
|
}
|
||||||
else if (/^[0-9]+$/.test(val)) {
|
else if (/^-?[0-9]+$/.test(val)) {
|
||||||
val = parseInt(val, 10);
|
val = parseInt(val, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +73,7 @@ function parsePythonConf(str, cb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toPyVal(val) {
|
function toPyVal(val) {
|
||||||
if (null === val) {
|
if (null === val || '' === val) {
|
||||||
return 'None';
|
return 'None';
|
||||||
}
|
}
|
||||||
else if (true === val) {
|
else if (true === val) {
|
||||||
|
@ -90,9 +91,9 @@ function toPyVal(val) {
|
||||||
else if (Array.isArray(val)) {
|
else if (Array.isArray(val)) {
|
||||||
val = val.join(',');
|
val = val.join(',');
|
||||||
if (-1 === val.indexOf(',')) {
|
if (-1 === val.indexOf(',')) {
|
||||||
val += ','; // disambguates value from array with one element
|
val += ','; // disambiguates value from array with one element
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
return val && JSON.stringify(val);
|
return val && JSON.stringify(val);
|
||||||
|
@ -116,6 +117,13 @@ function stringifyPythonConf(obj, cb) {
|
||||||
var num = obj.__keys[key];
|
var num = obj.__keys[key];
|
||||||
var comment = '';
|
var comment = '';
|
||||||
|
|
||||||
|
if ('undefined' === typeof pyval) {
|
||||||
|
if ('number' === typeof num) {
|
||||||
|
pyval = 'None';
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ('number' !== typeof num) {
|
if ('number' !== typeof num) {
|
||||||
obj.__lines.push(pykey + ' = ' + pyval);
|
obj.__lines.push(pykey + ' = ' + pyval);
|
||||||
|
@ -127,22 +135,18 @@ function stringifyPythonConf(obj, cb) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!obj.__lines[num] || !obj.__lines[num].indexOf) {
|
||||||
|
console.warn('[pyconf] WARN index past array length:');
|
||||||
|
console.log(obj.__lines.length, num, obj.__lines[num]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// restore comments
|
// restore comments
|
||||||
if (-1 !== obj.__lines[num].indexOf('#')) {
|
if (-1 !== obj.__lines[num].indexOf('#')) {
|
||||||
comment = obj.__lines[num].replace(/.*?(\s*#.*)/, '$1');
|
comment = obj.__lines[num].replace(/.*?(\s*#.*)/, '$1');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('undefined' === typeof pyval) {
|
obj.__lines[num] = pykey + ' = ' + pyval + comment;
|
||||||
obj.__lines[num] = "___DELETE_ME___";
|
|
||||||
} else {
|
|
||||||
obj.__lines[num] = pykey + ' = ' + pyval + comment;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
obj.__lines = obj.__lines.filter(function (line) {
|
|
||||||
if ("___DELETE_ME___" !== line) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if ('string' === typeof endline) {
|
if ('string' === typeof endline) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "pyconf",
|
"name": "pyconf",
|
||||||
"version": "1.1.0",
|
"version": "1.1.2",
|
||||||
"description": "Read and write python config files non-destructively (preserves comments)",
|
"description": "Read and write python config files non-destructively (preserves comments)",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
Loading…
Reference in New Issue