| /* Copyright (c) 1999, 2000 by Kevin Forchione. All Rights Reserved. */ | |
| /* | |
| * TADS ADV.T/STD.T LIBRARY EXTENSION | |
| * PARSEWORD.T | |
| * version 1.0 | |
| * | |
| * This TADS file is intended to assist in the conversion of | |
| * player input strings into a list of words for easier use by | |
| * preparse routines. | |
| * | |
| *---------------------------------------------------------------------- | |
| * REQUIREMENTS | |
| * | |
| * + HTML TADS 2.2.6 or later | |
| * + Requires ADV.T and STD.T | |
| * + Should be #included after ADV.T and STD.T. | |
| * | |
| *---------------------------------------------------------------------- | |
| * IMPORTANT LIBRARY INTERFACE AND MODIFICATION | |
| * | |
| * None. | |
| * | |
| *---------------------------------------------------------------------- | |
| * COPYRIGHT NOTICE | |
| * | |
| * You may modify and use this file in any way you want, provided that | |
| * if you redistribute modified copies of this file in source form, the | |
| * copies must include the original copyright notice (including this | |
| * paragraph), and must be clearly marked as modified from the original | |
| * version. | |
| * | |
| *------------------------------------------------------------------------------ | |
| * REVISION HISTORY | |
| * | |
| * 99-03-10 programming begun. | |
| */ | |
| #define __PARSEWORD_MODULE_ | |
| parseWord: function; | |
| parsePunct: function; | |
| /* | |
| * parseWord: function | |
| * | |
| * This function takes in a player's input stream | |
| * and returns a list consisting of 'words' (the player's | |
| * input as separated by spaces, but not separating | |
| * out punctuation.) It then goes on to call parsePunct() | |
| * which creates a list consisting of words and punctuation | |
| * marks. | |
| */ | |
| parseWord: function( inline ) | |
| { | |
| local istr := lower( inline ), j, len, pos, w, wlst := [], fstr := [ ',' '.' ';' '?' '!' ]; | |
| len := length( istr ); | |
| while ( len ) | |
| { | |
| pos := find( istr, ' ' ); | |
| if ( pos = nil ) | |
| pos := length( istr ) + 1; | |
| w := substr( istr, 1, pos-1 ); | |
| wlst += [ w ]; | |
| istr := substr( istr, pos+1, len ); | |
| len := length( istr ); | |
| } | |
| for ( j := 1; j <= length( fstr ); j++ ) | |
| { | |
| wlst := parsePunct( wlst, fstr[ j ] ); | |
| } | |
| return wlst; | |
| } | |
| /* | |
| * parsePunct: function | |
| * | |
| * This function is called by parseWord and separates | |
| * out the punctuation marks in the word list. For instance | |
| * the statement <Doctor, give me the book.> will result in the | |
| * following word list from parseWord: [ 'doctor,' 'give' 'me' 'the' 'book.'] | |
| * parsePunct will return the following list: | |
| * [ 'doctor' ',' 'give' 'me' 'the' 'book' '.' ] | |
| */ | |
| parsePunct: function( lst, fstr ) | |
| { | |
| local i, lenstr, lenword, pos, w, wlst := []; | |
| lenstr := length( lst ); | |
| for ( i := 1; i <= lenstr; i++ ) | |
| { | |
| pos := find( lst[ i ], fstr ); | |
| if ( pos = nil ) | |
| { | |
| wlst += lst[ i ]; | |
| continue; | |
| } | |
| lenword := length( lst[ i ] ); | |
| w := substr( lst[ i ], 1, pos-1 ); | |
| wlst += [ w ]; | |
| w := substr( lst[ i ], pos, 1 ); | |
| wlst += [ w ]; | |
| if ( pos < lenword ) | |
| { | |
| w := substr( lst[ i ], pos+1, lenword-pos ); | |
| wlst += [ w ]; | |
| } | |
| } | |
| return wlst; | |
| } | |
Xet Storage Details
- Size:
- 2.98 kB
- Xet hash:
- 98c73b2b24f0b3d80533b8f1ef54f30f249b4f12f76a894026a478d2fc025fc7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.