Sha256: 69554f17beeab393121962070e0b4d18dc4443d3e5ca5d9a3213c1c555dae185

Contents?: true

Size: 1.74 KB

Versions: 22

Compression:

Stored size: 1.74 KB

Contents

module Lookbook
  class PreviewExample
    include Utils

    attr_reader :name, :preview
    delegate :params, :position, :group, :notes, :hidden?, :source, to: :@example_inspector

    def initialize(name, preview)
      @name = name
      @preview = preview
      @example_inspector = CodeInspector.new("#{@preview.name}##{name}")
    end

    def id
      generate_id(@preview.id, name)
    end

    def path
      "#{@preview.path}/#{name}"
    end

    def label
      @example_inspector.label.presence || name.titleize
    end

    def display_params
      @preview.display_params.merge(@example_inspector.display_params)
    end

    def method_source
      @example_inspector.source.split("\n")[1..-2].join("\n").strip_heredoc
    end

    def source_lang
      Lookbook::Lang.find(:ruby)
    end

    def template_source(template_path)
      File.read(full_template_path(template_path))
    end

    def template_lang(template_path)
      Lookbook::Lang.guess(full_template_path(template_path)) || Lookbook::Lang.find(:html)
    end

    def type
      :example
    end

    def matchers
      normalize_matchers(@preview.label, label)
    end

    def hierarchy_depth
      @preview.hierarchy_depth + 1
    end

    protected

    def full_template_path(template_path)
      base_path = Array(Lookbook.config.preview_paths).detect do |p|
        Dir["#{p}/#{template_path}.html.*"].first
      end
      Pathname.new(Dir["#{base_path}/#{template_path}.html.*"].first)
    end

    class << self
      def all
        Preview.all.map { |preview| preview.examples }.flatten
      end

      def find(path)
        all.find { |p| p.lookup_path == path }
      end

      def exists?(path)
        !!find(path)
      end
    end

    alias_method :lookup_path, :path
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
lookbook-0.9.8 lib/lookbook/preview_example.rb
lookbook-0.9.7 lib/lookbook/preview_example.rb
lookbook-0.9.6 lib/lookbook/preview_example.rb
lookbook-0.9.5 lib/lookbook/preview_example.rb
lookbook-0.9.4 lib/lookbook/preview_example.rb
lookbook-0.9.3 lib/lookbook/preview_example.rb
lookbook-0.9.2 lib/lookbook/preview_example.rb
lookbook-0.9.1 lib/lookbook/preview_example.rb
lookbook-0.9.0 lib/lookbook/preview_example.rb
lookbook-0.8.3 lib/lookbook/preview_example.rb
lookbook-0.8.2 lib/lookbook/preview_example.rb
lookbook-0.8.1 lib/lookbook/preview_example.rb
lookbook-0.8.0 lib/lookbook/preview_example.rb
lookbook-0.8.0.beta.0 lib/lookbook/preview_example.rb
lookbook-0.7.4 lib/lookbook/preview_example.rb
lookbook-0.7.3 lib/lookbook/preview_example.rb
lookbook-0.7.2 lib/lookbook/preview_example.rb
lookbook-0.7.2.beta.5 lib/lookbook/preview_example.rb
lookbook-0.7.2.beta.4 lib/lookbook/preview_example.rb
lookbook-0.7.2.beta.3 lib/lookbook/preview_example.rb