Sha256: 24f1bf9a211d500ca2f08c96a9794f525175ea43f2139aea1bf37c90f5734cb1

Contents?: true

Size: 887 Bytes

Versions: 5

Compression:

Stored size: 887 Bytes

Contents

require 'cucumber/core/ast/location'
module Cucumber
  class FileSpecs
    FILE_COLON_LINE_PATTERN = /^([\w\W]*?)(?::([\d:]+))?$/ #:nodoc:

    def initialize(file_specs)
      Cucumber.logger.debug("Features:\n")
      @file_specs = file_specs.map { |s| FileSpec.new(s) }
      Cucumber.logger.debug("\n")
    end

    def locations
      @file_specs.map(&:locations).flatten
    end

    def files
      @file_specs.map(&:file)
    end

    class FileSpec
      def initialize(s)
        @file, @lines = *FILE_COLON_LINE_PATTERN.match(s).captures
        Cucumber.logger.debug("  * #{@file}\n")
        @lines = String(@lines).split(':').map { |line| Integer(line) }
      end

      attr_reader :file

      def locations
        return [ Core::Ast::Location.new(@file) ] if @lines.empty?
        @lines.map { |line| Core::Ast::Location.new(@file, line) }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cucumber-2.0.0.beta.5 lib/cucumber/file_specs.rb
cucumber-2.0.0.beta.4 lib/cucumber/file_specs.rb
cucumber-2.0.0.beta.3 lib/cucumber/file_specs.rb
cucumber-2.0.0.beta.2 lib/cucumber/file_specs.rb
cucumber-2.0.0.beta.1 lib/cucumber/file_specs.rb