nl_tokens: Get a list of values close in edit distance to words .
pl_tokens: function generate ( context , memory , words , edits ) { var characters = context . flags . TRY var characterLength = characters . length var data = context . data var flags = context . flags var result = [ ] var upper var length var index var word var <mask> var count var before var after var nextAfter var nextNextAfter var character var nextCharacter var inject var offset // Check the pre-generated edits. length = edits && edits . length index = - 1 while ( ++ index < length ) { check ( edits [ index ] , true ) } // Iterate over given word. length = words . length index = - 1 while ( ++ index < length ) { word = words [ index ] before = '' character = '' nextAfter = word nextNextAfter = word . slice ( 1 ) nextCharacter = word . charAt ( 0 ) position = - 1 count = word . length + 1 // Iterate over every character (including the end). while ( ++ position < count ) { before += character after = nextAfter nextAfter = nextNextAfter nextNextAfter = nextAfter . slice ( 1 ) character = nextCharacter nextCharacter = word . charAt ( position + 1 ) upper = character . toLowerCase ( ) !== character // Remove. check ( before + nextAfter ) // Switch. if ( nextAfter ) { check ( before + nextCharacter + character + nextNextAfter ) } // Iterate over all possible letters. offset = - 1 while ( ++ offset < characterLength ) { inject = characters [ offset ] // Add and replace. check ( before + inject + after ) check ( before + inject + nextAfter ) // Try upper-case if the original character was upper-cased. if ( upper ) { inject = inject . toUpperCase ( ) check ( before + inject + after ) check ( before + inject + nextAfter ) } } } } // Return the list of generated words. return result // Check and handle a generated value. function check ( value , double ) { var state = memory . state [ value ] var corrected if ( state !== Boolean ( state ) ) { result . push ( value ) corrected = form ( context , value ) state = corrected && ! flag ( flags , noSuggestType , data [ corrected ] ) memory . state [ value ] = state if ( state ) { memory . weighted [ value ] = double ? 10 : 0 memory . suggestions . push ( value ) } } if ( state ) { memory . weighted [ value ] ++ } } }