项目文件夹

文件
2026-07-13 12:48:55 +08:00

107 行
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()
})