Sha256: 4a99e7f91a96c0ce44b56bde41d52697d36b4f2f2df85b9dadb8bb8f6ca4f3c0

Contents?: true

Size: 1.38 KB

Versions: 24

Compression:

Stored size: 1.38 KB

Contents

module Lookbook
  module InspectableEntity
    extend ActiveSupport::Concern

    included do
      # @!group Source

      # Scenario method source code
      #
      # @return [String] The source code0
      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

      # Source code language info.
      #
      # Returns a Hash with `name`, `ext` & `label` entries.
      #
      # @example :ruby
      #   source_lang_name = entity.lang[:name]
      #
      # @return [Hash] Language info hash
      def source_lang
        custom_source? ? Lang.guess(source_file_path, :ruby) : Lang.find(:ruby)
      end

      # @!endgroup

      # @api private
      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 Lookbook::Error, "Could not find source file '#{source_path}'"
          end
          source_path
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
lookbook-2.3.4 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.3.3 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.3.2 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.3.0 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.2.2 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.2.1 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.2.0 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.1.1 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.1.0 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.5 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.4 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.3 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.2 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.1 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.0 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.0.rc.3 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.0.rc.2 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.0.rc.1 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.0.beta.9 lib/lookbook/entities/concerns/inspectable_entity.rb
lookbook-2.0.0.beta.8 lib/lookbook/entities/concerns/inspectable_entity.rb