old_contents: module.exports = {
    stringifyPart: function(part) {
      switch(typeof part) {
        case 'boolean':
        case 'number':
          return String(part)
        case 'string':
          return '"' + part.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"'
        case 'undefined':
          return 'NULL'
        default:
          if (part === null)
            return 'NULL'
          else
            return '"' + JSON.stringify(part).replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"'
      }
    },
    stringify: function(data) {
      var self = this
  
      return Object.keys(data).map(function(key) {
        return self.stringifyPart(key) + '=>' + self.stringifyPart(data[key])
      }).join(',')
    },
    parsePart: function(part) {
      part = part.replace(/\\\\/g, '\\').replace(/\\"/g, '"')
  
      switch(part[0]) {
        case '{':
        case '[':
          return JSON.parse(part)
        default:
          return part
      }
    },
    parse: function(string) {
      var self = this
      const rx = /\"((?:\\\"|[^"])*)\"\s*\=\>\s*((?:true|false|NULL|\d+|\d+\.\d+|\"((?:\\\"|[^"])*)\"))/g
      var object = { }
  
      string.replace(rx, function(match, key, value, innerValue) {
        switch(value) {
          case 'true':
            object[self.parsePart(key)] = true
            break
          case 'false':
            object[self.parsePart(key)] = false
            break
          case 'NULL':
            object[self.parsePart(key)] = null
            break
          default:
            object[self.parsePart(key)] = self.parsePart(innerValue || value)
            break
        }
      })
  
      return object;
    }
  }
  
new_contents: module.exports = {
    stringifyPart: function(part) {
      switch(typeof part) {
        case 'boolean':
        case 'number':
          return String(part)
        case 'string':
          return '"' + part.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"'
        case 'undefined':
          return 'NULL'
        default:
          if (part === null)
            return 'NULL'
          else
            return '"' + JSON.stringify(part).replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"'
      }
    },
    stringify: function(data) {
      var self = this
  
      return Object.keys(data).map(function(key) {
        return self.stringifyPart(key) + '=>' + self.stringifyPart(data[key])
      }).join(',')
    },
    parsePart: function(part) {
      part = part.replace(/\\\\/g, '\\').replace(/\\"/g, '"')
  
      switch(part[0]) {
        case '{':
        case '[':
          return JSON.parse(part)
        default:
          return part
      }
    },
    parse: function(string) {
      var self = this,
          object = { }
  
      if (('string' !== typeof string) || (0 === string.length)) {
        return object;
      }
      
      const rx = /\"((?:\\\"|[^"])*)\"\s*\=\>\s*((?:true|false|NULL|\d+|\d+\.\d+|\"((?:\\\"|[^"])*)\"))/g
  
      string.replace(rx, function(match, key, value, innerValue) {
        switch(value) {
          case 'true':
            object[self.parsePart(key)] = true
            break
          case 'false':
            object[self.parsePart(key)] = false
            break
          case 'NULL':
            object[self.parsePart(key)] = null
            break
          default:
            object[self.parsePart(key)] = self.parsePart(innerValue || value)
            break
        }
      })
  
      return object;
    }
  }
  
subject: check string before parsing