Method: Sexp#array_values

Defined in:
lib/code_analyzer/sexp.rb

#array_valuesArray

Get the array values.

s(:array,
  s(:args_add,
    s(:args_add, s(:args_new), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "first_name", s(1, 2))))),
    s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "last_name", s(1, 16))))
  )
)
    => [
         s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "first_name", s(1, 2)))),
         s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "last_name", s(1, 16))))
       ]

Returns:

  • (Array)

    array values



759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
# File 'lib/code_analyzer/sexp.rb', line 759

def array_values
  case sexp_type
  when :array
    if nil == self[1] || i[words_new qwords_new symbols_new qsymbols_new].include?(self[1].sexp_type)
      []
    elsif i[words_add qwords_add symbols_add qsymbols_add].include? self[1].sexp_type
      self[1].array_values
    else
      arguments.all
    end
  when :words_add, :qwords_add, :symbols_add, :qsymbols_add
    values = []
    node = self
    while true
      if i[words_add qwords_add symbols_add qsymbols_add].include? node.sexp_type
        values.unshift node[2]
        node = node[1]
      elsif i[words_new qwords_new symbols_new qsymbols_new].include? node.sexp_type
        break
      end
    end
    values
  else
    []
  end
end