Sha256: c9dbf9a8146ed23b7b1b61c84870cfda6315c11120bf9560fdedb0182cb3ec44

Contents?: true

Size: 1.52 KB

Versions: 4

Compression:

Stored size: 1.52 KB

Contents

module VueCK
    class FileManager
        def initialize(filename)
            @filename  = filename
            @js_cache  = "#{DIRS[:cache]}#{FILES[:javascript]}"
            @css_cache = "#{DIRS[:cache]}#{FILES[:style]}"
        end

        def serve
            return render unless cachedir_exists?
            return render unless cachefiles_exist?
            return render unless cachefiles_fresh?
            read_file
        end

        private

        def render
            renders = BatchRenderer.new.render
            File.write(@js_cache,  renders[:components])
            File.write(@css_cache, renders[:style])
            read_file
        end

        def read_file
            cache_file = @js_cache if @filename == FILES[:javascript]
            cache_file = @css_cache if @filename == FILES[:style]
            File.read(cache_file)
        end

        def cachedir_exists?
            return true if File.exists? DIRS[:cache]
            Dir.mkdir DIRS[:cache]
            false
        end

        def cachefiles_exist?
            return File.exists?(@js_cache) && File.exists?(@css_cache)
        end

        def cachefiles_fresh?
            cache_mtime  = newest_file_in_dir(DIRS[:cache])
            source_mtime = newest_file_in_dir(DIRS[:components])
            return cache_mtime > source_mtime
        end

        def newest_file_in_dir(path)
            Dir.glob(File.join(path, '*.*')).max { |a,b| File.mtime(a) <=> File.mtime(b) }
        end

    end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vueck-1.0.3 lib/filemanager.rb
vueck-1.0.2 lib/filemanager.rb
vueck-1.0.1 lib/filemanager.rb
vueck-1.0.0 lib/filemanager.rb