Back to Compromise

README

plugins/payload/README.md

14.15.02.0 KB
Original Source
<div align="center"> <div>An ad-hoc datastore for <a href="https://github.com/spencermountain/compromise/">compromise</a></div> <!-- npm version --> <a href="https://npmjs.org/package/compromise-payload"> </a> <!-- file size --> <a href="https://unpkg.com/compromise-payload/builds/compromise-payload.min.js"> </a> <div align="center"> <code>npm install compromise-payload</code> </div> </div> <!-- spacer -->

This plugin provides a facilty for storing a retreiving more complex data than tags, for compromise documents and matches.

Payload

js
import plg from 'compromise-payload'
nlp.extend(plg)

let doc = nlp('i saw John Lennon in Manchester, and Bob Dylan in Southhampton')

// markup metadata
doc.match('(john lennon|bob dylan)').addPayload({ instrument: 'guitar' })

// add more
doc.people().forEach(m => {
  if (m.has('lennon')) {
    m.addPayload({ height: `5'11` })
  }
  if (m.has('ringo')) {
    m.addPayload({ height: `5'8` })
  }
})

// retrieve specific payloads
doc.match('john lennon').getPayloads()
doc.match('bob dylabn').getPayloads()

// retrieve them all
doc.getPayloads()

// inspect given payloads:
doc.debug('payload')

You can also pass a callback into .addPayload():

js
let doc = nlp('i saw John Lennon, and john smith and bob dylan')
doc.people().addPayload(m => {
  return { lastName: m.terms().last().text() }
})

You can remove all, or selected payloads with .clearPayload():

js
doc.match('bob .').clearPayloads()
doc.getPayloads().length // now 2

doc.clearPayloads()
doc.getPayloads().length // now 0

MIT