Method: BetterHtml::TestHelper::RubyNode#return_values

Defined in:
lib/better_html/test_helper/ruby_node.rb

#return_valuesObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/better_html/test_helper/ruby_node.rb', line 51

def return_values
  Enumerator.new do |yielder|
    case type
    when :send, :csend, :ivar, *STATIC_TYPES
      yielder.yield(self)
    when :if, :masgn, :lvasgn
      # first child is ignored as it does not contain return values
      # for example, in `foo ? x : y` we only care about x and y, not foo
      children[1..-1].each do |child|
        child.return_values.each { |v| yielder.yield(v) } if node?(child)
      end
    else
      child_nodes.each do |child|
        child.return_values.each { |v| yielder.yield(v) }
      end
    end
  end
end