Module: Transpec::Syntax::Mixin::Metadata

Extended by:
ActiveSupport::Concern
Includes:
Send
Included in:
Example, ExampleGroup
Defined in:
lib/transpec/syntax/mixin/metadata.rb

Instance Method Summary collapse

Methods included from Send

#arg_node, #arg_nodes, #arg_range, #args_range, #method_name, #parentheses_range, #range_after_arg, #range_in_between_receiver_and_selector, #range_in_between_selector_and_arg, #receiver_node, #receiver_range, #selector_range

Methods included from Send::TargetDetection

#conversion_target?, #dynamic_analysis_target?

Instance Method Details

#metadata_key_nodesObject



26
27
28
29
30
31
32
33
34
# File 'lib/transpec/syntax/mixin/metadata.rb', line 26

def 
  .each_with_object([]) do |node, key_nodes|
    if node.hash_type?
      key_nodes.concat(node.children.map { |pair_node| pair_node.children.first })
    else
      key_nodes << node
    end
  end
end

#metadata_nodesObject



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/transpec/syntax/mixin/metadata.rb', line 13

def 
  return arg_nodes if arg_nodes.empty?

  # The first argument must be always description.
  non_description_arg_nodes = arg_nodes.drop(1)

  non_description_arg_nodes.drop_while do |node|
    # Possibly there still may be descriptions after the first arg.
    #   describe 'something', '#some_method', :foo, bar: true { }
    ![:hash, :sym].include?(node.type)
  end
end