Class: ConvenientService::RSpec::PrimitiveMatchers::Classes::IncludeInOrder

Inherits:
Object
  • Object
show all
Defined in:
lib/convenient_service/rspec/primitive_matchers/classes/include_in_order.rb

Instance Method Summary collapse

Constructor Details

#initialize(keywords) ⇒ void

Parameters:

  • keywords (Array<String, Regexp>)


17
18
19
# File 'lib/convenient_service/rspec/primitive_matchers/classes/include_in_order.rb', line 17

def initialize(keywords)
  @keywords = keywords
end

Instance Method Details

#descriptionString

Returns:

  • (String)


46
47
48
# File 'lib/convenient_service/rspec/primitive_matchers/classes/include_in_order.rb', line 46

def description
  "include in order #{printable_keywords}"
end

#failure_messageString

Returns:

  • (String)


53
54
55
# File 'lib/convenient_service/rspec/primitive_matchers/classes/include_in_order.rb', line 53

def failure_message
  "expected `#{string.inspect}` include in order #{printable_keywords}"
end

#failure_message_when_negatedString

Returns:

  • (String)


60
61
62
# File 'lib/convenient_service/rspec/primitive_matchers/classes/include_in_order.rb', line 60

def failure_message_when_negated
  "expected `#{string.inspect}` NOT include in order #{printable_keywords}"
end

#matches?(string) ⇒ Boolean

Parameters:

  • string (String)

Returns:

  • (Boolean)


31
32
33
34
35
36
37
38
39
40
41
# File 'lib/convenient_service/rspec/primitive_matchers/classes/include_in_order.rb', line 31

def matches?(string)
  @string = string

  return false if keywords.empty?

  scanner = ::StringScanner.new(string)

  keywords
    .map { |keyword| keyword.instance_of?(::String) ? ::Regexp.new(::Regexp.escape(keyword)) : keyword }
    .all? { |keyword| scanner.scan_until(keyword) }
end