2222List of accepted export compression formats. `AUTOMATIC_FILE_COMPRESSION`
2323corresponds to a detection from the file name.
2424"""
25- @enum (FileCompression, NO_FILE_COMPRESSION, GZIP, AUTOMATIC_FILE_COMPRESSION)
25+ @enum (FileCompression, NO_FILE_COMPRESSION, BZIP2, GZIP, XZ , AUTOMATIC_FILE_COMPRESSION)
2626
2727function _filename_to_compression (filename:: String )
28- return if endswith (filename, " .gz" )
28+ return if endswith (filename, " .bz2" )
29+ BZIP2
30+ elseif endswith (filename, " .gz" )
2931 GZIP
32+ elseif endswith (filename, " .xz" )
33+ XZ
3034 else
3135 NO_FILE_COMPRESSION
3236 end
@@ -37,8 +41,14 @@ function _open(f::Function, filename::String, mode::String; compression::FileCom
3741 compression = _filename_to_compression (filename)
3842 end
3943
40- if compression == GZIP
41- stream = (mode == " r" ) ? CodecZlib. GzipDecompressorStream : CodecZlib. GzipCompressorStream
44+ if compression == BZIP2 || compression == GZIP || compression == XZ
45+ stream = if compression == BZIP2
46+ (mode == " r" ) ? CodecBzip2. Bzip2DecompressorStream : CodecBzip2. Bzip2CompressorStream
47+ elseif compression == GZIP
48+ (mode == " r" ) ? CodecZlib. GzipDecompressorStream : CodecZlib. GzipCompressorStream
49+ else # compression == XZ
50+ (mode == " r" ) ? CodecXz. XzDecompressorStream : CodecXz. XzCompressorStream
51+ end
4252 return open (f, stream, filename, mode)
4353 else
4454 return open (f, filename, mode)
@@ -77,8 +87,6 @@ function write_to_file(model::Model, filename::String; format::FileFormat=AUTOMA
7787 format = _filename_to_format (filename)
7888 end
7989
80- # println((filename, "w", compression))
81-
8290 _open (filename, " w" , compression= compression) do io
8391 write_to_file (model, io, format; kwargs... )
8492 end
0 commit comments