yuescript-src 0.13.6

Sources of Yuescript and logic to build them.
Documentation

switch value
	when "cool"
		print "hello world"


switch value
	when "cool"
		print "hello world"
	else
		print "okay rad"


switch value
	when "cool"
		print "hello world"
	when "yeah"
		_ = [[FFFF]] + [[MMMM]]
	when 2323 + 32434
		print "okay"
	else
		print "okay rad"

out = switch value
	when "cool" then print "hello world"
	else print "okay rad"

out = switch value
	when "cool" then xxxx
	when "umm" then 34340
	else error "this failed big time"

with something
	switch \value!
		when .okay
			_ = "world"
		else
			_ = "yesh"

fix this
call_func switch something
	when 1 then "yes"
	else "no"

--

switch hi
	when hello or world
		_ = greene

--

switch hi
	when "one", "two"
		print "cool"
	when "dad"
		_ = no

switch hi
	when 3+1, hello!, (-> 4)!
		_ = yello
	else
		print "cool"

do
	dict = {
		{}
		{1, 2, 3}
		a: b: c: 1
		x: y: z: 1
	}

	switch dict
		when {
				first
				{one, two, three}
				a: b: :c
				x: y: :z
			}
			print first, one, two, three, c, z

do
	items =
		* x: 100
			y: 200
		* width: 300
			height: 400
		* false

	for item in *items
		switch item
			when :x, :y
				print "Vec2 #{x}, #{y}"
			when :width, :height
				print "Size #{width}, #{height}"
			when false
				print "None"
			when __class: cls
				switch cls
					when ClassA
						print "Object A"
					when ClassB
						print "Object B"
			when #: mt
				print "A table with metatable"
			else
				print "item not accepted!"

do
	tb = {}

	switch tb
		when {:a = 1, :b = 2}
			print a, b

	switch tb
		when {:a, :b = 2}
			print "partially matched", a, b

	switch tb
		when {:a, :b}
			print a, b
		else
			print "not matched"
do
	tb = x: "abc"
	switch tb
		when :x, :y
			print "x: #{x} with y: #{y}"
		when :x
			print "x: #{x} only"

do
	matched = switch tb
		when 1
			"1"
		when :x
			x
		when false
			"false"
		else
			nil

do
	return switch tb
		when nil
			"invalid"
		when :a, :b
			"#{a + b}"
		when 1, 2, 3, 4, 5
			"number 1 - 5"
		when {:matchAnyTable = "fallback"}
			matchAnyTable
		else
			"should not reach here unless it is not a table"

do
	switch y
		when {x: #: mt}
			print mt

nil