progress with conversion functionality

This commit is contained in:
2025-08-26 14:27:39 +01:00
parent 868e066295
commit 2080118568
3 changed files with 48 additions and 1 deletions

View File

@@ -73,4 +73,6 @@ imperative-shell/file-thread.sml
imperative-shell/draw-thread.sml
imperative-shell/init-glfw.sml
imperative-shell/converter.sml
imperative-shell/shell.sml

View File

@@ -0,0 +1,45 @@
structure Converter =
struct
fun endsWithDsc str =
if String.size str >= 4 then
let
val size = String.size str
val expectedExtension = String.substring (str, size - 4, 4)
in
expectedExtension = ".dsc"
end
else
false
fun convertFile path = ()
fun loop (dir, rootPath) =
case OS.FileSys.readDir dir of
SOME path =>
let
val folderPath = String.concat [rootPath, "/", path]
in
if OS.FileSys.isDir folderPath then
(* handle folder *)
let val newDir = OS.fileSys.openDir folderPath
in loop (newDir, folderPath)
end
else if OS.FileSys.isLink folderPath then
(* continue looping and ignore *)
loop (dir, rootPath)
else
(* handle file, if file has ".dsc" at the end *)
let val () = if endsWithDsc path then convertFile folderPath else ()
in loop (dir, rootPath)
end
end
| NONE => OS.FileSys.closeDir dir
fun main () =
let
val path = OS.FileSys.getDir ()
val dir = OS.FileSys.openDir path
in
loop (dir, path)
end
end

View File

@@ -2,7 +2,7 @@ structure Shell =
struct
fun main () =
case CommandLine.arguments () of
["-r"] => (print "todo: convert dsc files to sml file\n")
["-r"] => Converter.main ()
| [] => InitGlfw.main ()
| args =>
let