Module: Peruby::Node::SExpression

Defined in:
lib/peruby/node.rb

Overview

Recursive S-expression conversion shared by all immutable nodes.

Instance Method Summary collapse

Instance Method Details

#to_sexpObject



8
9
10
11
12
13
# File 'lib/peruby/node.rb', line 8

def to_sexp
  name = self.class.name.split('::').last.gsub(/([A-Z]+)([A-Z][a-z])/, '\\1_\\2')
             .gsub(/([a-z\d])([A-Z])/, '\\1_\\2').downcase.to_sym
  values = members.reject { |member| %i[file line].include?(member) }.map { |member| sexp(public_send(member)) }
  [name, *values]
end