53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
"use strict";
|
|
|
|
var fs = require ("fs");
|
|
var stringify = require ("./stringify");
|
|
|
|
module.exports = function (stringifier, options, cb){
|
|
if (typeof options === "function"){
|
|
cb = options;
|
|
options = {};
|
|
}
|
|
|
|
options = options || {};
|
|
var code;
|
|
|
|
if (options.comment){
|
|
code = options.comment.charCodeAt (0);
|
|
if (options.comment.length > 1 || code < 33 || code > 126){
|
|
throw new Error ("The comment token must be a single printable ASCII " +
|
|
"character");
|
|
}
|
|
options._comment = options.comment;
|
|
}else{
|
|
options._comment = "#";
|
|
}
|
|
|
|
options._comment += " ";
|
|
|
|
if (options.separator){
|
|
code = options.separator.charCodeAt (0);
|
|
if (options.separator.length > 1 || code < 33 || code > 126){
|
|
throw new Error ("The separator token must be a single printable ASCII " +
|
|
"character");
|
|
}
|
|
options._separator = options.separator;
|
|
}else{
|
|
options._separator = "=";
|
|
}
|
|
|
|
options._separator = " " + options._separator + " ";
|
|
|
|
var data = stringify (stringifier, options);
|
|
|
|
if (options.path){
|
|
if (!cb) throw new TypeError ("A callback must be passed if the data is " +
|
|
"stored into a file");
|
|
fs.writeFile (options.path, data, function (error){
|
|
if (error) return cb (error);
|
|
cb (null, data);
|
|
});
|
|
}else{
|
|
return data;
|
|
}
|
|
}; |