107 lines
7.3 KiB
JavaScript
107 lines
7.3 KiB
JavaScript
import test from 'tape'
|
||
import nlp from './_lib.js'
|
||
const here = '[three/full-api] '
|
||
|
||
//run every method once, and check against runtime errors
|
||
test('constructor api', function (t) {
|
||
const fns = {
|
||
tokenize: () => { nlp.tokenize("you're sure you haven't just made thousands of mistakes?") },
|
||
plugin: () => { nlp.plugin({ words: { bloobah: 'Yeah' } }) },
|
||
verbose: () => { nlp.verbose(false); nlp('I am the very model of a modern Major-General') },
|
||
version: () => { nlp.version },
|
||
all: () => { nlp('this is yelling').match('#Verb').toTitleCase().all().text() },
|
||
found: () => { nlp('oh say can you see?').match('see').found },
|
||
wordCount: () => { nlp('this is yelling').wordCount() },
|
||
length: () => { nlp('jackie kennedy and aristotle onassis').match('#Person+').length },
|
||
clone: () => { nlp('would somebody please think of the children').clone().toUpperCase().all().text() },
|
||
cache: () => { const doc = nlp("I'm looking for Amanda Hugginkiss").cache({ root: true }); doc.match('~look~') },
|
||
uncache: () => { const doc = nlp("urine-soaked hell-hole").uncache(); doc.tag("Insult") },
|
||
first: () => { nlp('foo').first() },
|
||
last: () => { nlp('foo').last() },
|
||
slice: () => { nlp('Homer, have you been eating that sandwich again?').terms().slice(0, 3).text() },
|
||
eq: () => { nlp('foo').eq(1) },
|
||
firstTerm: () => { nlp('foo').firstTerm() },
|
||
lastTerm: () => { nlp('foo').lastTerm() },
|
||
termList: () => { nlp('foo').termList() },
|
||
match: () => { nlp('we understand, we are from the land of chocolate.').match('land of #Noun').text() },
|
||
not: () => { nlp('wait, there’s a new mexico?').match('#Place').not('new').text() },
|
||
matchOne: () => { nlp('foo').matchOne() },
|
||
if: () => { nlp('We’re here, we’re clear, we don’t want anymore bears.').clauses().if('anymore').text() },
|
||
ifNo: () => { nlp('We’re here, we’re clear, we don’t want anymore bears.').clauses().ifNo('anymore').text() },
|
||
has: () => { nlp('I am the very model of a modern Major-General').has('#Pronoun') },
|
||
lookBehind: () => { nlp('foo').lookBehind() },
|
||
lookAhead: () => { nlp('foo').lookAhead() },
|
||
before: () => { nlp('one two three four five').before('three').text() },
|
||
after: () => { nlp('one two three four five').after('three').text() },
|
||
lookup: () => { nlp('chocolate microscopes? double guitars?').lookup(['double guitars']).length },
|
||
toUpperCase: () => { nlp('Dental plan. Lisa needs braces.').match('dental .').toUpperCase().text() },
|
||
toLowerCase: () => { nlp('Careful! They’re RUFFLED!!').toLowerCase().text() },
|
||
toTitleCase: () => { nlp('jupiter, pluto and mars').match('#Noun').toTitleCase().all().text() },
|
||
toCamelCase: () => { nlp('natural language processing').toCamelCase().text() },
|
||
pre: () => { nlp("we're here. we're clear. we don't want anymore bears.").pre(" ") },
|
||
post: () => { nlp("we're here. we're clear. we don't want anymore bears.").post('!') },
|
||
trim: () => { nlp(' Lenny and Carl ').match('#Person').trim().text() },
|
||
hyphenate: () => { nlp('natural language processing').hyphenate().text() },
|
||
dehyphenate: () => { nlp('natural-language processing').dehyphenate().text() },
|
||
tag: () => { nlp('Michael Apple ate a delicious apple.').match('#FirstName apple').tag('Person').all().match('#Person+').text() },
|
||
tagSafe: () => { nlp('foo').tagSafe() },
|
||
unTag: () => { nlp('they made a catch & scored a run').match('(run|catch)').unTag('#Verb').all().match('#Verb').out('array') },
|
||
canBe: () => { nlp('it’s fusilli jerry!').canBe('Person').text() },
|
||
map: () => { nlp('yahoo serious festival').terms().map((m) => m.toUpperCase()).text() },
|
||
forEach: () => { nlp('Oh, no! Bette Midler!').match('#Person+').forEach((m) => m.text()) },
|
||
filter: () => { nlp('Hey, anymore arboretum’s around here?').terms().filter(m => m.has('#Plural')).length },
|
||
find: () => { nlp('Always do the opposite of what bart says').terms().find(m => m.out('normal').match(/b[ao]rt/)).text() },
|
||
some: () => { nlp('Don’t make me run, I’m full of chocolate!').terms().some(m => m.out('normal') === 'run') },
|
||
random: () => { nlp('one two three four').terms().random(2).out('array') },
|
||
replaceWith: () => { nlp('it was the worst of times').match('worst').replaceWith('blurst', true).all().text() },
|
||
replace: () => { nlp('trust me folks, big league.').replace('big league', 'bigly').all().text() },
|
||
delete: () => { nlp('you don’t win friends with salad').delete('do not').text() },
|
||
append: () => { nlp('i know so many words').insertAfter('bigly').all().text() },
|
||
prepend: () => { nlp('stupid flanders').match('flanders').insertBefore('sexy').all().text() },
|
||
concat: () => { nlp('My name is Otto').concat('and i love to get blotto').all().length },
|
||
sort: () => { nlp('Larry, Curly, Moe').terms().sort('alphabetical').out('array') },
|
||
reverse: () => { nlp('foo').reverse() },
|
||
normalize: () => { nlp(' so... you like DONUTS? have all the donuts in the WORLD!!!').normalize().all().get(0).text() },
|
||
unique: () => { nlp('foo').unique() },
|
||
split: () => { nlp('Monorail...Once again! Monorail... Monorail!').splitOn('monorail').eq(0).text() },
|
||
splitAfter: () => { nlp('Monorail...Once again! Monorail... Monorail!').splitAfter('monorail').eq(0).text() },
|
||
splitBefore: () => { nlp('Monorail...Once again! Monorail... Monorail!').splitBefore('monorail').eq(0).text() },
|
||
text: () => { nlp('you might say there’s a little Uter in all of us').match('#Adjective uter').out('array') },
|
||
out: () => { nlp('foo').out() },
|
||
json: () => { nlp('The stage was set for the Alan Parsons Project! Which I believe was some sort of hovercraft.').data() },
|
||
terms: () => { nlp('we should all be more like little Ruttiger').terms().json() },
|
||
clauses: () => { nlp('All right, Colossus, you’re free to go, but stay away from Death Mountain').clauses().data() },
|
||
hyphenated: () => { nlp('foo').hyphenated() },
|
||
phoneNumbers: () => { nlp('Moe Sizlak. That’s right. I’m a surgeon. (800) 555-0000.').phoneNumbers().json() },
|
||
hashTags: () => { nlp('oh, but where is the #anykey').hashTags().json() },
|
||
emails: () => { nlp('foo').emails() },
|
||
emoticons: () => { nlp('foo').emoticons() },
|
||
emoji: () => { nlp('foo').emoji() },
|
||
atMentions: () => { nlp('foo').atMentions() },
|
||
urls: () => { nlp('thank you http://simpsons.wikia.com').urls().json() },
|
||
adverbs: () => { nlp('foo').adverbs() },
|
||
pronouns: () => { nlp('foo').pronouns() },
|
||
conjunctions: () => { nlp('foo').conjunctions() },
|
||
prepositions: () => { nlp('foo').prepositions() },
|
||
abbreviations: () => { nlp('foo').abbreviations() },
|
||
contractions: () => { nlp('foo').contractions() },
|
||
parentheses: () => { nlp('Use a pointed stick (a pencil) or a similar tool').parentheses().data() },
|
||
possessives: () => { nlp('moe’s tavern').possessives().text() },
|
||
quotations: () => { nlp('the he said "crazy like a fox!".').quotations().data().length },
|
||
acronyms: () => { nlp('foo').acronyms() },
|
||
nouns: () => { nlp('foo').nouns() },
|
||
verbs: () => { nlp('Moe Sizlak. That’s right. I’m a surgeon.').verbs() },
|
||
// debug: () => { nlp('foo').debug() },
|
||
}
|
||
Object.keys(fns).forEach(k => {
|
||
t.doesNotThrow(() => {
|
||
try {
|
||
fns[k]()
|
||
} catch (e) {
|
||
t.fail(here + k + e)
|
||
}
|
||
}, k)
|
||
})
|
||
t.end()
|
||
})
|