class Jekyll::AlbumGenerator

Public Instance Methods

generate(site) click to toggle source
# File _plugins/albums.rb, line 99
def generate(site)
    # If all albums should be served from under common path…
    base_path = site.config["albums_base_path"] || ""

    site.data["albums"].each do |album_data|
        album = album_data[1]
        album_name = album["about"]["name"]

        path = File.join(base_path, album_name)
        album["url"] = path

        symbol_static_file = AlbumSymbol.new(site, album)
        album["symbol_path"] = symbol_static_file.url
        site.static_files << symbol_static_file

        artwork_root = File.join(
            site.source,
            "_data",
            get_album_source_path(album_name),
            "artwork")

        album["artwork"].each do |artwork_name, artwork_data|
            artwork_item_root = File.join(artwork_root, artwork_name)
            next unless File.directory?(artwork_item_root)
            artwork_items = []

            Dir["#{artwork_item_root}/*"].each do |artwork_item|
                next if (File.directory?(artwork_item) or !IMAGE_EXTS.include?(File.extname(artwork_item)))
                item_filename = File.basename(artwork_item)

                artwork_item_static_file = ArtworkItem.new(
                    site,
                    album,
                    artwork_name,
                    item_filename)
                artwork_items.push({
                    "name" => File.basename(item_filename, ".*"),
                    "path" => artwork_item_static_file.url,
                    "source_path" => artwork_item_static_file.path,
                })
                site.static_files << artwork_item_static_file
            end

            album["artwork"][artwork_name]["items"] = artwork_items
        end

        site.pages << AlbumPage.new(site, site.source, path, album)
    end
end