Sha256: 45388f6a5c4ffb1f08c157349cb99f0228e5c758b033549b73f01641593eb652

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

require "ostruct"

require "guard/rspec"

module Guard
  class RSpec < Plugin
    class Dsl
      def initialize(dsl)
        @dsl = dsl
      end

      def watch_spec_files_for(expr)
        @dsl.send(:watch, expr) { |m| rspec.spec.(m[1]) }
      end

      def rspec
        @rspec ||= OpenStruct.new(to_s: "spec").tap do |rspec|
          rspec.spec_dir = "spec"
          rspec.spec = ->(m) { "#{rspec.spec_dir}/#{m}_spec.rb" }
          rspec.spec_helper = "#{rspec.spec_dir}/spec_helper.rb"
          rspec.spec_files = %r{^#{rspec.spec_dir}/.+_spec\.rb$}
          rspec.spec_support = %r{^#{rspec.spec_dir}/support/(.+)\.rb$}
        end
      end

      def ruby
        # Ruby apps
        @ruby || OpenStruct.new.tap do |ruby|
          ruby.lib_files = %r{^(lib/.+)\.rb$}
        end
      end

      def rails(options = {})
        # Rails example
        @rails ||= OpenStruct.new.tap do |rails|
          exts = _view_extensions(options) * "|"

          rails.app_files = %r{^app/(.+)\.rb$}

          rails.views = %r{^app/(views/.+/[^/]*\.(?:#{exts}))$}
          rails.view_dirs = %r{^app/views/(.+)/[^/]*\.(?:#{exts})$}
          rails.layouts = %r{^app/layouts/(.+)/[^/]*\.(?:#{exts})$}

          rails.controllers = %r{^app/controllers/(.+)_controller\.rb$}
          rails.routes = "config/routes.rb"
          rails.app_controller = "app/controllers/application_controller.rb"
          rails.spec_helper = "#{rspec.spec_dir}/rails_helper.rb"
        end
      end

      private

      def _view_extensions(options)
        options.dup.delete(:view_extensions) || %w(erb haml slim)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
guard-rspec-4.5.1 lib/guard/rspec/dsl.rb