Sha256: e8458f961586d3b94bc0d2e5af75f7e3dbe7cac262b53651b53564524749683a

Contents?: true

Size: 1.07 KB

Versions: 13

Compression:

Stored size: 1.07 KB

Contents

class Servel::Index
  extend Servel::Instrumentation
  RENDER_CACHE = LruRedux::ThreadSafeCache.new(100)

  def initialize(url_root:, url_path:, fs_path:)
    @url_root = url_root
    @url_path = url_path
    @fs_path = fs_path
  end

  def render
    RENDER_CACHE.getset(render_cache_key) { Servel::HamlContext.render('index.haml', locals) }
  end

  def render_cache_key
    @render_cache_key ||= [@fs_path.to_s, @fs_path.mtime.to_i].join("-")
  end

  def locals
    children = @fs_path.children.map { |path| Servel::EntryFactory.for(path) }.compact

    {
      url_root: @url_root,
      url_path: @url_path,
      special_entries: special_entries.to_json,
      directory_entries: children.select(&:directory?).to_json,
      file_entries: children.select(&:file?).to_json
    }
  end

  def special_entries
    list = []
    list << Servel::EntryFactory.home("/") if @url_root != ""

    unless @url_path == "/"
      list << Servel::EntryFactory.top(@url_root == "" ? "/" : @url_root)
      list << Servel::EntryFactory.parent("../")
    end

    list
  end

  instrument :render, :locals
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
servel-0.33.0 lib/servel/index.rb
servel-0.32.0 lib/servel/index.rb
servel-0.31.0 lib/servel/index.rb
servel-0.30.0 lib/servel/index.rb
servel-0.29.0 lib/servel/index.rb
servel-0.28.0 lib/servel/index.rb
servel-0.27.0 lib/servel/index.rb
servel-0.26.0 lib/servel/index.rb
servel-0.25.0 lib/servel/index.rb
servel-0.24.0 lib/servel/index.rb
servel-0.23.0 lib/servel/index.rb
servel-0.22.0 lib/servel/index.rb
servel-0.21.0 lib/servel/index.rb