Method: Sexp#array_values
- Defined in:
- lib/code_analyzer/sexp.rb
#array_values ⇒ Array
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))))
]
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 |