Sha256: 4fba5bf5086a47cc0734d6344cce11967629ecca3e3b4125ac0c6624fead2957

Contents?: true

Size: 1023 Bytes

Versions: 12

Compression:

Stored size: 1023 Bytes

Contents

module Lookbook
  module Inspectable
    extend ActiveSupport::Concern

    included do
      def source
        source_code = if custom_source?
          File.read(source_file_path)
        else
          src = CodeIndenter.call(code_object.source)
          begin
            send(:format_source, src)
          rescue NoMethodError
            src
          end
        end

        source_code.strip_heredoc.strip
      end

      def source_lang
        custom_source? ? Lang.guess(source_file_path, :ruby) : Lang.find(:ruby)
      end

      def custom_source?
        source_file_path.present?
      end

      protected

      attr_reader :code_object

      def source_file_path
        @_source_path ||= if code_object.has_tag?(:source)
          source_path = code_object.tag(:source).value
          unless source_path.present? && File.exist?(source_path)
            raise LookbookError, "Could not find source file '#{source_path}'"
          end
          source_path
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
lookbook-1.5.5 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.5.4 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.5.3 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.5.2 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.5.1 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.5.0 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.4.5 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.4.4 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.4.3 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.4.2 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.4.1 lib/lookbook/entities/concerns/inspectable.rb
lookbook-1.4.0 lib/lookbook/entities/concerns/inspectable.rb