helper.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. var debug = require('debug')('regedit')
  2. var DOUBLY_ESCAPED_WIN_EOL = module.exports.DOUBLY_ESCAPED_WIN_EOL = '\\\\r\\\\n'
  3. var DOUBLY_ESCAPED_WIN_EOL_MATCHER = module.exports.DOUBLY_ESCAPED_WIN_EOL_MATCHER = /\\\\r\\\\n/g
  4. var ESCAPED_WIN_EOL = module.exports.ESCAPED_WIN_EOL = '\\r\\n'
  5. var WIN_EOL = module.exports.WIN_EOL = '\r\n'
  6. module.exports.encode = function(str) {
  7. return escape(str) + WIN_EOL
  8. }
  9. /*
  10. * Write an array to a stream, taking backpressure into consideration
  11. */
  12. module.exports.writeArrayToStream = function (arr, stream, optionalCallback) {
  13. var encoding = 'utf8'
  14. var member = arr.pop()
  15. function write(m) {
  16. if (m !== undefined) {
  17. var b = module.exports.encode(m)
  18. debug(b)
  19. return stream.write(b)
  20. }
  21. return false
  22. }
  23. while (write(member)) {
  24. member = arr.pop()
  25. }
  26. if (arr.length === 0) {
  27. stream.write(WIN_EOL, optionalCallback)
  28. return
  29. }
  30. stream.once('drain', function () {
  31. module.exports.writeArrayToStream(arr, stream, optionalCallback)
  32. })
  33. }
  34. module.exports.vbsOutputTransform = function (chunk, enc, callback) {
  35. try {
  36. if (enc === 'buffer') {
  37. chunk = chunk.toString()
  38. }
  39. else {
  40. chunk = chunk.toString(enc)
  41. }
  42. this.push(JSON.parse(chunk))
  43. }
  44. catch (e) {
  45. return callback(e)
  46. }
  47. return callback()
  48. }