21 lines
579 B
OCaml
21 lines
579 B
OCaml
|
{ open Import }
|
||
|
|
||
|
rule iter src repl oc = parse
|
||
|
| ("# " ['0'-'9']+ " \"" as before) ([^'"' '\n']* as name) ('"' '\r'? '\n' as after)
|
||
|
{ output_string oc before;
|
||
|
output_string oc (if name = src then repl else name);
|
||
|
output_string oc after;
|
||
|
iter src repl oc lexbuf }
|
||
|
| [^'\n']* '\n' as s
|
||
|
{ output_string oc s;
|
||
|
iter src repl oc lexbuf }
|
||
|
| [^'\n']* eof as s
|
||
|
{ output_string oc s }
|
||
|
|
||
|
{
|
||
|
let rewrite ~src ~dst ~repl =
|
||
|
with_file_in src ~f:(fun ic ->
|
||
|
with_file_out dst ~f:(fun oc ->
|
||
|
iter src repl oc (Lexing.from_channel ic)))
|
||
|
}
|