/pliant/sample/upgrade_code.pli
 
 1  abstract 
 2    [A small utility I have used to upgrade my programs.] 
 3   
 4  module "/pliant/admin/file.pli" 
 5  module "/pliant/admin/asciifile.pli" 
 6   
 7   
 8  function upgrade_code path 
 9    arg Str path 
 10    var Array:FileInfo files := file_list path standard+recursive 
 11    for (var Int u) 0 files:size-1 
 12      if files:u:extension=".pli" 
 13        (var AsciiFile p) load files:u:name 
 14        for (var Int i) 0 p:size-1 
 15          if (p:i eparse spaces:(var Str s) word:"function" _ word:"create" any:(var Str remain)) 
 16            p i := s+"function build "+remain 
 17          eif (p:i search "create_instance" -1)<>(-1) 
 18            p i := replace p:i "create_instance" "build_instance" 
 19        p store 
 20      eif files:u:extension=".c" 
 21        (var AsciiFile p) load files:u:name 
 22        for (var Int i) 0 p:size-1 
 23          if (p:i search "create" -1)<>(-1) 
 24            p i := replace p:i "create" "build" 
 25        p store 
 26   
 27  export upgrade_code