Have a look at https://github.com/one-more-minute/Requires.jl
On Tue, May 5, 2015 at 12:04 PM, Kristoffer Carlsson <[email protected]> wrote: > I have a package where some functionality should always be loaded when > writing the normal "using MyPackage" and some functionality needs to be > explicitly loaded. The use case for me is that I have a library of > different things (let's call them books) and it is likely that only a few > books from this library are used and I want to reduce the loading time of > the package. > > To make it concrete let's assume I currently have the following > file/module structure: > # MyPackage.jl > module MyPackage > export foo > include("required.jl") > include("library.jl") > end > > # required.jl > abstract AbstractBook > foo(a::AbstractBook) = print(a) > > # library.jl > > include("book1.jl") > include("book2.jl") > > # book1.jl > type Book1 <: AbstractBook > > # book2.jl (oh boy...) > using Gadfly > using Winston > using Images > using PyCall > type Book2 <: AbstractBook > > Now, I want my usage of the package to look something like this: > using MyPackage # Loads everything required > using MyPackage.Library.Book1 # Only loads book1.jl, book2.jl is not > touched, fast loading > > Foo(Book1()) > > I guess I have to put my books into their own separate modules, akin: > > # MyPackage.jl > module MyPackage > export foo > include("required.jl") > end > > # required.jl > abstract AbstractBook > foo(a::AbstractBook) = print(a) > > # book1.jl > module BookModule1 > using MyPackage > export Book1 > type Book1 <: AbstractBook > end > > # book2.jl > module BookModule2 > using MyPackage > export Book2 > type Book2 <: AbstractBook > end > > But now there is no convenient way to load the book modules? > > Can anyone help me how to properly structure this? A link to a package > that does this will likely work just fine. > > Best regards, > Kristoffer Carlsson >
