Read then write to same file for code (text file) formatting

DaveMacMahon taught me I need seekstart(io) and truncate(io, position(io)) before TOML.print.

using TOML
using OrderedCollections

function sortfile(filename)
    open(filename, "r+") do io
        unordered = TOML.parse(io)
        OrderedDict(unordered)
        ordered = OrderedDict(sort!(collect(unordered), by=first))
        seekstart(io)
        truncate(io, position(io))
        TOML.print(io, ordered)
    end
end

# sort by keys
sortfile("sample.toml")
1 Like