class Estreet::SwitchStatement

Public Class Methods

new(discriminant, kases) click to toggle source

kases is an array of 2-element arrays, or 1 for the default case

# File lib/estreet/switch_statement.rb, line 4
def initialize(discriminant, kases)
  @kases = kases.map do |kase|
    raise TypeError, "Invalid case: #{kase}" unless kase.is_a? Array

    case kase.length
    when 2 then SwitchCase.new(*kase)
    when 1 then SwitchCase.default(kase.first)
    else raise TypeError, "Invalid case: #{kase}"
    end
  end
  
  @discriminant = discriminant.to_expression
end

Public Instance Methods

attributes() click to toggle source
Calls superclass method Estreet::Node#attributes
# File lib/estreet/switch_statement.rb, line 18
def attributes
  super.merge(
    discriminant: @discriminant,
    cases: @kases,
    lexical: false, # TODO: an ES6 thing?
  )
end