aboutsummaryrefslogtreecommitdiff
path: root/portToNewSyntax/rmPreprop.icl
diff options
context:
space:
mode:
Diffstat (limited to 'portToNewSyntax/rmPreprop.icl')
-rw-r--r--portToNewSyntax/rmPreprop.icl190
1 files changed, 0 insertions, 190 deletions
diff --git a/portToNewSyntax/rmPreprop.icl b/portToNewSyntax/rmPreprop.icl
deleted file mode 100644
index 1be1eef..0000000
--- a/portToNewSyntax/rmPreprop.icl
+++ /dev/null
@@ -1,190 +0,0 @@
-module rmPreprop
-
-import StdEnv, Directory, StdLib, StdDebug
-
-one_three =: "1.3"
-two_zero =: "2.0"
-
-intro_text current_dir_string =
- [ "This program can be used to remove the preprocessor statements\n"
- , "from your Clean sources. Consult the documentation about\n"
- , "differences between Clean 1.3 and Clean 2.0 to get more information\n"
- , "about the Clean preprocessor.\n"
- , "\n"
- , "This program will perform it's task on all .icl and .dcl files\n"
- , "in the current folder only. To process several folders you can move\n"
- , "this executable.\n"
- , "\n"
- , "This program will not alter the files in the current folder, but will\n"
- , "rather create two subfolders with the resulting 1.3 and 2.0 sources.\n"
- , "The subfolders are called \"", one_three, "\" and \"", two_zero, "\".\n"
- , "\n"
- , "Current directory:", current_dir_string, "\n"
- , "\n"
- , "Should I start? (y/n):"
- ]
-
-
-appStdio f w
- #! (io, w)
- = stdio w
- (x, io, w)
- = f io w
- (_, w)
- = fclose io w
- = (x, w)
-
-appStdio1 f w
- #! (_, w)
- = appStdio (\io w -> let io2 = f io in (0, io2, w)) w
- = w
-
-intro io w
- #! (current_dir_path, w)
- = getCurrentDirectory w
- (current_dir_string, w)
- = pathToPD_String current_dir_path w
- io
- = foldlSt fwrites (intro_text current_dir_string) io
- (answer, io)
- = freadline io
- io
- = fwrites "\n" io
- = (size answer>0 && (answer.[0]=='y' || answer.[0]=='Y'), io, w)
-
-perform w
- #! (filenames, w)
- = getFilenames w
- | isEmpty filenames
- = (False, w)
- #! (ok, w)
- = makeSubfolders w
- | not ok
- = (ok, w)
- = loop filenames w
- where
- getFilenames w
- #! ((err, dir_entries), w)
- = getDirectoryContents (RelativePath []) w
- | err<>NoDirError
- #! w
- = appStdio1 (fwrites "Error:can't retrieve contents of current directory\n\n") w
- = ([], w)
- = ([fileName \\ {fileName}<-dir_entries | endsWith fileName ".dcl" || endsWith fileName ".icl"], w)
- endsWith s suffix
- #! size_s = size s
- = s % (size_s-size suffix, size_s-1)==suffix
- makeSubfolders w
- #! (ok1, w)
- = makeSubfolder one_three w
- (ok2, w)
- = makeSubfolder two_zero w
- = (ok1 && ok2, w)
- makeSubfolder name w
- #! (err, w)
- = createDirectory (RelativePath [PathDown name]) w
- = (err==NoDirError || err==AlreadyExists, w)
- loop [] w
- = (True, w)
- loop [filename:filenames] w
- #! (ok, w)
- = performOnFile filename w
- | not ok
- = (ok, w)
- = loop filenames w
- performOnFile filename w
- #! (ok, input, w)
- = fopen filename FReadData w
- | not ok
- = (ok, w)
- #! (ok1, out13, w)
- = openOutputfile one_three filename w
- (ok2, out20, w)
- = openOutputfile two_zero filename w
- | not ok1 || not ok2
- = (False, w)
- #! (input, out13, out20)
- = fileLoop input out13 out20
- (_, w)
- = fclose input w
- (_, w)
- = fclose out13 w
- (_, w)
- = fclose out20 w
- = (True, w)
- where
- fileLoop :: !*File !*File !*File -> (!*File, !*File, !*File)
- fileLoop input out13 out20
- #! (isEof, input)
- = fend input
- | isEof
- = (input, out13, out20)
- #! (line, input)
- = freadline input
- | beginsWith "//1.3" line
- = oneThree input out13 out20
- | beginsWith "/*2.0" line
- = twoZero input out13 out20
- #! out13
- = fwrites line out13
- out20
- = fwrites line out20
- = fileLoop input out13 out20
- oneThree :: !*File !*File !*File -> (!*File, !*File, !*File)
- oneThree input out13 out20
- #! (isEof, input)
- = fend input
- | isEof
- = (input, out13, out20)
- #! (line, input)
- = freadline input
- | beginsWith "//3.1" line
- = fileLoop input out13 out20
- #! out13
- = fwrites line out13
- = oneThree input out13 out20
- twoZero :: !*File !*File !*File -> (!*File, !*File, !*File)
- twoZero input out13 out20
- #! (isEof, input)
- = fend input
- | isEof
- = (input, out13, out20)
- #! (line, input)
- = freadline input
- | beginsWith "0.2*/" line
- = fileLoop input out13 out20
- #! out20
- = fwrites line out20
- = twoZero input out13 out20
- beginsWith praefix line
- = line % (0, size praefix-1) == praefix
- openOutputfile subdir_name filename w
- #! (pd_path, w)
- = pathToPD_String (RelativePath [PathDown subdir_name, PathDown filename]) w
- (ok, file, w)
- = fopen pd_path FWriteData w
- | not ok
- #! w
- = appStdio1 (fwrites ("Error:can't open "+++pd_path+++".\n\n")) w
- = (ok, file, w)
- = (ok, file, w)
-
-byebye ok io
- #! io
- = fwrites (if ok "Work done.\n\n" "Couldn't finish work.\n\n") io
- io
- = fwrites "Push enter to quit" io
- (_, io)
- = freadline io
- = io
-
-Start w
- #! (do_it, w)
- = appStdio intro w
- | not do_it
- = w
- #! (ok, w)
- = perform w
- w
- = appStdio1 (byebye ok) w
- = w \ No newline at end of file