| /* Copyright (c) 2000 by Kevin Forchione. All Rights Reserved. */ | |
| /* | |
| * TADS ADV.T/STD.T LIBRARY EXTENSION | |
| * REPLACEWITH.T | |
| * version 1.0 | |
| * | |
| * ReplaceWith provides an easy way to replace string search values | |
| * with target values using regular expression searches. | |
| * | |
| *---------------------------------------------------------------------- | |
| * REQUIREMENTS | |
| * | |
| * + HTML TADS 2.3.0 or later | |
| * | |
| *---------------------------------------------------------------------- | |
| * 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 | |
| * | |
| * 09-Feb-2000: Creation. | |
| */ | |
| #define __REPLACEWITH_MODULE_ | |
| #pragma C+ | |
| #define RW_REPLACE_ONCE 1 | |
| #define RW_MATCH_WORD 2 | |
| #define RW_MATCH_CASE 4 | |
| #define RW_RET_NIL 8 | |
| /* | |
| * replaceWith(value, target, replacement, flags) | |
| * | |
| * The function searches the value string, replacing the target string | |
| * with the replacement string. | |
| * | |
| * Bit-flags can be passed to control the search. | |
| * | |
| * RW_REPLACE_ONCE replace only one occurrence of the target in the | |
| * value string. | |
| * | |
| * The default for replaceWith() is to replace all occurrences | |
| * of the target in the value string. | |
| * | |
| * RW_MATCH_WORD target must match whole words. For example: | |
| * | |
| * target 'get in' will search for '%<get>% *%<in%>' | |
| * which will match 'get in the chair', but not | |
| * 'get into the chair' | |
| * | |
| * RW_MATCH_CASE target must match the case in value. | |
| * | |
| * The default for replaceWith() is case-insensitive. A target | |
| * string of 'get into' will match on 'GET INTO THE CAR' as | |
| * well as 'Get into the car' unless RW_MATCH_CASE is used. | |
| * | |
| * RW_RET_NIL function returns nil if no match for the target found | |
| * | |
| * The default for replaceWith() returns the value unchanged. | |
| * Using RW_RET_NIL will return the value only if replacement | |
| * occurred; otherwise the function will return nil. | |
| */ | |
| replaceWith: function(value, target, replacement, ...) | |
| { | |
| local ret, new_value = ''; | |
| local valuesave, targetsave, replacementsave; | |
| local flags = 0; | |
| if (argcount > 3) flags = getarg(4); | |
| if ((flags & RW_MATCH_WORD)!= 0) | |
| { | |
| local tmptarget = '%<'; | |
| tmptarget += replaceWith(target, ' ', '%> *%<'); | |
| tmptarget += '%>'; | |
| target = tmptarget; | |
| } | |
| do | |
| { | |
| if ((flags & RW_MATCH_CASE) == 0) | |
| { | |
| valuesave = value; | |
| targetsave = target; | |
| replacementsave = replacement; | |
| value = lower(value); | |
| target = lower(target); | |
| replacement = lower(replacement); | |
| } | |
| ret = reSearch(target, value); | |
| if ((flags & RW_MATCH_CASE) == 0) | |
| { | |
| value = valuesave; | |
| target = targetsave; | |
| replacement = replacementsave; | |
| } | |
| if (ret) | |
| { | |
| local len, tmp = ''; | |
| len = length(value) + 1; | |
| if (ret[1] - 1) | |
| tmp += substr(value, 1, ret[1]-1); | |
| tmp += replacement; | |
| new_value += tmp; | |
| if (len - (ret[1]+ret[2])) | |
| value = substr(value, ret[1]+ret[2], len - (ret[1]+ret[2])); | |
| else | |
| value = ''; | |
| if ((flags & RW_REPLACE_ONCE) != 0) break; | |
| } | |
| else if ((flags & RW_RET_NIL)!= 0 | |
| && new_value == '') | |
| return nil; | |
| } | |
| while( ret != nil); | |
| new_value += value; | |
| return new_value; | |
| } | |
Xet Storage Details
- Size:
- 4.07 kB
- Xet hash:
- 44a2ca602f9ce6326997b72a73b48693f4e7bf823c9ecdd5e192e9c8b9769dab
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.