Sha256: 1fe4955da6b9b22d6672b81a8b17b20f931c16910d1f8ce92d4b7202d3c168d2

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

module RipperRubyParser
  module SexpHandlers
    module Conditionals
      def process_if exp
        _, cond, truepart, falsepart = exp.shift 4
        s(:if,
          process(cond),
          handle_statement_list(truepart),
          process(falsepart))
      end

      def process_elsif exp
        process_if exp
      end

      def process_if_mod exp
        _, cond, truepart = exp.shift 3
        s(:if, process(cond), process(truepart), nil)
      end

      def process_unless_mod exp
        _, cond, truepart = exp.shift 3
        s(:if, process(cond), nil, process(truepart))
      end

      def process_unless exp
        _, cond, truepart, falsepart = exp.shift 4
        s(:if,
          process(cond),
          process(falsepart),
          handle_statement_list(truepart))
      end

      def process_case exp
        _, expr, clauses = exp.shift 3
        s(:case, process(expr), *process(clauses))
      end

      def process_when exp
        _, values, truepart, falsepart = exp.shift 4

        if falsepart.nil?
          falsepart = [nil]
        else
          falsepart = process(falsepart)
          if falsepart.first.is_a? Symbol
            falsepart = s(falsepart)
          end
        end

        s(s(:when,
            process(s(:array, values)),
            handle_statement_list(truepart)),
          *falsepart)
      end

      def process_else exp
        _, body = exp.shift 2
        handle_statement_list body
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ripper_ruby_parser-0.0.3 lib/ripper_ruby_parser/sexp_handlers/conditionals.rb
ripper_ruby_parser-0.0.2 lib/ripper_ruby_parser/sexp_handlers/conditionals.rb
ripper_ruby_parser-0.0.1 lib/ripper_ruby_parser/sexp_handlers/conditionals.rb