nthmail / lib / parse-fetch-parts.js
all-in-one smtp+imap with minimal setup
git clone http://git.nthia.dev/nthmail

module.exports = function parseFetchParts(str) {
  return str.replace(/^\(|\)$/g,'')
    .match(/[^\s\[]+(?:\[[^\]]*\])?\s*(?:<[^>]*>)?/g)
    .map(w => {
      let m = /^([^\s\[]*)\s*(?:\[([^\]]*)\])?(?:<([^>]*)>)?/.exec(w)
      let r = { name: m[1] }
      if (m[2]) {
        r.sections = m[2].match(/[^\s\(]+\s*(?:\(([^\)]*)\))?/g)
          .map(s => {
            let m = /(\S+)\s*(?:\(([^\)]*)\))?/.exec(s)
            let x = { name: m[1] }
            if (m[2]) x.fields = m[2].split(/\s+/)
            return x
          })
      }
      if (m[3]) r.partials = m[3].split(/\s*\.\s*/).map(Number)
      return r
    })
}