home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / sharew / exoten / rec / edit.cnv < prev    next >
Encoding:
Text File  |  1990-08-08  |  5.6 KB  |  163 lines

  1. [EDIT.CNV]
  2. [Gerardo Cisneros, 13.9.89]
  3. [Copyright (c) 1989 - Gerardo Cisneros]
  4. [DERECHOS RESERVADOS]
  5.  
  6. [selector de ordenes]
  7. (()()(0)(
  8.     (<>,(L)):
  9.     ((and,(or,b,d,p),<0>) <--> ,(%t,<0> no lleva mas de 1 argumento)):
  10.     ((and,(or,m,t),<0>) <[1]>,(%t,<0> no lleva argumentos)):
  11.     (b(or, <0>,<><0>),<<
  12.     >>(IF,(8),(S,<0>),(and,(or,<-->:,)(ITR,<-->\),<8>),<<
  13.     >>(O,(until,(%S,(S,(if,<0>,(or,<:g:>,)<>,<=>*.*))),<<
  14.         >>Not Found,<<
  15.             >>(IF,(0),<=>,<[9]><0>,<0>(^@)),<<
  16.         >>(%A),)))):
  17.     (d(or, <0>,<><0>),<<
  18.     >>(if,(until,(%S,(S,(if,<0>,(or,<:g:>,)<>,<=>*.*)),16),<<
  19.         >>Not Found,<<
  20.             >>(IF,(0),<=>,(^P)<[8]><0>,<0>\(^@),<<
  21.                 >><=>,<[9]><0>,<0>(^@)),<<
  22.         >>(%A),),<>,(%t,No se encontraron),(D,<=>))):
  23.     (e<>,(E)):
  24.     (e <0>,(WHILE,(0 1),<0> ,<0> <1>,(E,<0>),<1>)):
  25.     (l <0>,(WHILE,(0 1),<0> ,<0> <1>,<<
  26.     >>(IF,(8),(S,<0>),(and,(or,<-->:,)(ITR,<-->\),<8>),<<
  27.     >>(until,(%S,(S,<0>)),Not Found,<<
  28.             >>(IF,(0),<=>,<[9]><0>,<<
  29.             >>(%t,:::::::::: <8><0> ::::::::::)(T)),<<
  30.         >>(%A),)),<1>)):
  31.     (m,(%t,(if,(%r,ARR:pfx[1]),<>,(%Lr):))):
  32.     (p(or, <0>,<><0>),<<
  33.     >>(if,(&u,<0>),<>,(%W,ARR:pfx[1]),<<
  34.         >><=>,<:g:><>,(X,<=>),<<
  35.         >><=>\,<:g:><>,(X,<=>),<<
  36.         >>(%t,<0> no reconocido como prefijo))):
  37.     (t,Fin);
  38.     (?,(%t,b [arch]        borra archivos(^MJ)<<
  39.          >>d [arch]        lista archivos existentes(^MJ)<<
  40.          >>e [arch ...]    edita uno o mas archivos(^MJ)<<
  41.          >>l [arch ...]    lista contenido de archivos(^MJ)<<
  42.      >>m               muestra prefijo en uso(^MJ)<<
  43.          >>p [dir]         indica prefijo a usar(^MJ)<<
  44.      >>t               termina la corrida(^MJ)<<
  45.      >>?               muestra esta lista)):
  46.     (,(%t,Orden desconocida; ? da instrucciones)):
  47. )) C
  48.  
  49. [verifica directorios]
  50. (()()(0)(
  51.     (<0>,(if,(%Or,<0>X.$$$)(,(%C,<0>X.$$$)),<>,(%W,ARR:pfx[1],<0>),<<
  52.     >>(if,(%Ow,<0>X.$$$)(,(%C,<0>X.$$$)(%D,<0>X.$$$)),<>,<<
  53.         >>(%W,ARR:pfx[1],<0>),(%t,<0>: prefijo ilegal))));
  54. )) X
  55.  
  56. [ejecutor]
  57. (()()()(
  58.     (0,(%Or,MEM:path)<<
  59.     >>(WHILE,(0 1),(%r,MEM:path),(NOT,(^X))<0>;<1>,,<<
  60.         >>(if,(%Or,<0>SCR.REC)(,(%C,<0>SCR.REC)),<>,<<
  61.             >>(^X)(%V,<0>SCR,(Q))(%W,ARR:frst[1],1),<1>),<<
  62.         >>(IF,(0),<=>,(^X)<0>,<0>,(%t,No encuentro SCR.REC))));
  63.     (1,( ,(Q)));
  64. )) V
  65.  
  66. [editor de texto]
  67. (()()()(
  68.     (<>,(IF,(29),(S,(if,(F),<>,(G))),<29>,(%t, ... editando <29>)<<
  69.         >>(if,(if,(%Or,<29>)(K),<[1]>,(%Ow,<29>)(K)(,(%D,<29>))),<>,<<
  70.     >>(if,<29><,>(V,(%r,ARR:frst[1])),<29><,><>,,<<
  71.         >>(,(%W,<=>(,(%D,(B,<29>))(%N,(B,<29>)<,><29>))<<
  72.         >>(nf,(%Ow,<29>),<>,(%t,No puedo escribir <29>))))(K)),<<
  73.     >>(%t,No puedo crear <29>))));
  74.     (<:n:><>,(M,<=>)):
  75.     (,(%t,<=>: nombre ilegal));
  76. )) E
  77.  
  78. [despliega los archivos solicitados]
  79. (()()(0 1 2)(
  80.     ((and,<[60]>    ,<0>)<1>(^@)<2>,(%t,<0><1>)<2>):
  81.     (<0>(^@)<1>,(IF,(0),<0>                ,(and,(ITR,<[16]>),<0>),<0>)<1>):
  82.     (<>,);
  83.     (,(%t,<=>));
  84. )) D
  85.  
  86. [borra, pidiendo confirmacion para cada archivo]
  87. (()()(1 2)(
  88.     (<>,);
  89.     (<1>(^@)<2>,<<
  90.     >>(if,(&l,(%r,TTY:Borro <8><1>? <(>si/no/abandona/muestra<)> )),<<
  91.             >>s,(%D,<8><1>)<2>,<<
  92.         >><=>,a,,<<
  93.         >><=>,m,(%Or,<8><1>)<<
  94.             >>(%t,(&p,(%r,<8><1>,<[70]>)))<<
  95.             >>(%C,<8><1>)<1>(^@)<2>,<<
  96.         >><=>,n,(%t,Conservado)<2>,<<
  97.         >><1>(^@)<2>)):
  98. )) O
  99.  
  100. [programa principal]
  101. ((
  102.     [PATRONES:]
  103.     [Una letra]
  104.     ((or,(IVL/A/Z/),(IVL/a/z/))) l
  105.     [Un caracter valido para nombre de archivo]
  106.     ((or,<:l:>,(IVL/0/9/),$,&,#,%,<'>,<(>,<)>,-,@,^,{,},~,`,!)) h
  107.     [Uno o mas caracteres validos]
  108.     (<:h:>(ITR,<:h:>)) s
  109.     [Nombre valido (con extension, si la hay)]
  110.     ((and,<:s:>,(NOT,<[9]>))(or,.(and,(ITR,<:h:>),(NOT,<[4]>)),)) f
  111.     [Prefijo valido]
  112.     ((or,<:l:>:,)(or,\,)(ITR,(or,..,.,<:f:>)\)) g
  113.     [Trayectoria valida]
  114.     (<:g:><:f:>) n
  115.     [Blancos: espacio o tabulador]
  116.     ((or, ,(^I))) b
  117.     [Uno o mas blancos]
  118.     (<:b:>(ITR,<:b:>)) w
  119. )(
  120.     [ESQUELETOS:]
  121.     [Lee nombre del archivo actual]
  122.     ((%r,ARR:file[1])) F
  123.     [Agrega prefijo si no comienza con \ o x:]
  124.     ((nf,(&u,<=>),(or,<:l:>:,\),(%r,ARR:pfx[1])<=>)) S
  125.     [Lee del teclado un nombre de archivo]
  126.     ((while,,<>,,(if,(&u,(%r,TTY:Nombre del archivo: )),<:n:>,<=>(M,<=>),<<
  127.                 >>(%t,Nombre ilegal)))) G
  128.     [Lee una orden, elimina blancos sobrantes]
  129.     ((WHILE,(0 1),(%r,TTY:edit(>) ),<0><:b:><:w:><1>,<0>(nf,<1>,<>, ),<1>)) L
  130.     [Copia a la pantalla un archivo, linea por linea]
  131.     ((if,(%Or,<8><0>),<>,<<
  132.     >>(until,(%r,<8><0>),(^Z),(%t,<=>),(%r,<8><0>),),)<<
  133.     >>(,(%C,<8><0>))) T
  134.     [Lee un archivo entero, para editarlo]
  135.     ((if,(%Or,<29>),<>,<<
  136.     >>(until,(%r,<29>),(^Z),<=>(^J),(%r,<29>),),)(K)) Q
  137.     [Cierra el archivo de trabajo, no reporta diagnosticos]
  138.     ((,(%C,<29>))) K
  139.     [Cambia a .BAK la extension del nombre de archivo ligado a <29>]
  140.     ((IF,(0),<29>,<<
  141.         >>(and,(or,<:l:>:,)(or,\,)(ITR,<:f:>\)<:s:>,<0>),<<
  142.         >><0>.BAK)) B
  143.     [Registra el nombre del archivo actual]
  144.     ((%W,ARR:file[1],(&u,<=>))) M
  145.     [Agrega \ al final de subdirectorios de PATH]
  146.     ((WHILE,(0 1),<=>,<0>;<1>,(if,<0>,<:g:><>,<=>;,<=>\;),<1>)) Z
  147.     [Guarda la variable del entorno "PATH", crea espacio
  148.      para el nombre actual de archivo y el prefijo a usar]
  149.     ((IF,(0),;AUTLIB\;(IF,(0),<30>,<-->PATH=<0>(^@),(Z,<0>;),)(^M),<0>,<<
  150.     >>(%Ow,MEM:path,(&!,<0>))(%W,MEM:path,<0>))<<
  151.      >>(%Ow,ARR:file,1,100)(%Ow,ARR:pfx,1,100)<<
  152.      >>(%Ow,ARR:frst,1,2)(%W,ARR:frst[1],0)<<
  153.      >>(%t,EDIT.CNV(^MJ)<<
  154.     >>Copyright <(>c<)> 1989 - Gerardo Cisneros(^MJ)<<
  155.     >>DERECHOS RESERVADOS(^MJ))<<
  156.      >>(,(%r,TTY:Oprima (<)return(>) para continuar ))) P
  157. )()(
  158.     (<>,(P)(M)(C,?));
  159.     (,(P)(M)(C,e <=>));
  160. ))
  161.  
  162. [fin]
  163.