diff --git a/src/loadsave.jl b/src/loadsave.jl index 3107c100..9553de3c 100755 --- a/src/loadsave.jl +++ b/src/loadsave.jl @@ -50,9 +50,22 @@ for (applicable_, add_, dict_) in ( end -"`add_loader(fmt, :Package)` triggers `using Package` before loading format `fmt`" +""" + add_loader(fmt, :Package) + add_loader(fmt, [:Package, specifiers...]) + +Declare that format `fmt` can be loaded with package `:Package`. +Specifiers include `OSX`, `Unix`, `Windows` and `Linux` to restrict usage to particular operating systems. +""" add_loader -"`add_saver(fmt, :Package)` triggers `using Package` before saving format `fmt`" + +""" + add_saver(fmt, :Package) + add_saver(fmt, [:Package, specifiers...]) + +Declare that format `fmt` can be saved with package `:Package`. +Specifiers include `OSX`, `Unix`, `Windows` and `Linux` to restrict usage to particular operating systems. +""" add_saver """ diff --git a/src/registry_setup.jl b/src/registry_setup.jl index 7c07c308..85923c40 100644 --- a/src/registry_setup.jl +++ b/src/registry_setup.jl @@ -78,7 +78,7 @@ function add_format(fmt, magic, extension, load_save_libraries...) end """ -`add_format(fmt, magic, extention)` registers a new `DataFormat`. +`add_format(fmt, magic, extension)` registers a new `DataFormat`. For example: add_format(format"TIFF", (UInt8[0x4d,0x4d,0x00,0x2b], UInt8[0x49,0x49,0x2a,0x00]), [".tiff", ".tif"]) @@ -86,6 +86,16 @@ For example: add_format(format"NRRD", "NRRD", [".nrrd",".nhdr"]) Note that extensions, magic numbers, and format-identifiers are case-sensitive. + +You can also specify particular packages that support the format with `add_format(fmt, magic, extension, pkgspecifiers...)`, +where example `pkgspecifiers` are: + + add_format(fmt, magic, extension, [:PkgA]) # only PkgA supports the format (load & save) + add_format(fmt, magic, extension, [:PkgA], [:PkgB]) # try PkgA first, but if it fails try PkgB + add_format(fmt, magic, extension, [:PkgA, LOAD], [:PkgB]) # try PkgA first for `load`, otherwise use PkgB + add_format(fmt, magic, extension, [:PkgA, OSX], [:PkgB]) # use PkgA on OSX, and PkgB otherwise + +You can combine `LOAD`, `SAVE`, `OSX`, `Unix`, `Windows` and `Linux` arbitrarily to narrow `pkgspecifiers`. """ function add_format(fmt::Type{DataFormat{sym}}, magic::Union{Tuple,AbstractVector,String}, extension) where sym haskey(sym2info, sym) && error("format ", fmt, " is already registered")