DIRECTORY Rope USING [ROPE]; TextReplace: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; RopeMap: TYPE = REF RopeMapRep; RopeMapRep: TYPE = RECORD [ Map: PROC [REF ANY, ROPE] RETURNS [ROPE], data: REF ANY ¬ NIL ]; Apply: PROC [s: RopeMap, r: ROPE] RETURNS [mapped: ROPE]; id: RopeMap; addBrackets: RopeMap; Constant: PROC [result: ROPE] RETURNS [rm: RopeMap]; Cat: PROC [first, second: RopeMap] RETURNS [catted: RopeMap]; Layer: PROC [first, later: RopeMap] RETURNS [layered: RopeMap]; Pair: TYPE = RECORD [match, replace: ROPE, literal, word, ignoreCase: BOOL ¬ FALSE]; PairList: TYPE = LIST OF Pair; RopeMapFromPairs: PROC [PairList] RETURNS [RopeMap]; END. β TextReplace.mesa Copyright Σ 1986, 1992 by Xerox Corporation. All rights reserved. Last Edited by: Spreitzer, January 10, 1986 10:17:05 pm PST Last tweaked by Mike Spreitzer on August 18, 1988 12:35:03 pm PDT Doug Wyatt, September 25, 1992 1:58 pm PDT = {mapped _ s.Map[s.data, r]}; Map through first, then second. IF first declines (i.e., returns NIL), later is consulted. Returns a RopeMap that replaces every occurence of a match by its corresponding replace. ΚΌ–"cedarcode" style•NewlineDelimiter ™code™K™BJ™;K™AK™*—K˜KšΟk œœœ˜K˜šΟn œœ œ˜&K™—šœœœ˜K™—Kšœ œœ ˜šœ œœ˜Kšžœœœœœœœ˜)Kšœœœ˜K˜K™—š žœœœœ œ˜9Kšœ™K™—K˜ ˜K™—šžœœ œœ˜4K™—šžœœœ˜=K™K™—šžœœœ˜?K™:K™—Kš œœœœœœ˜Tšœ œœœ˜K™—šžœœ œ ˜4K™XK™—Kšœ˜—…—š8