Sapphire

From Esolang
Jump to navigation Jump to search

Sapphire

Created by user:Shannarra

Sapphire is Ruby's evil twin.

In Sapphire, you write pure Ruby code, but with a twist.

Your code MUST fail to execute. If you are unfortunate enough to run a Ruby program in Sapphire that exits properly, you will be SEVERELY punished - one randomly selected file from your computer will be permanently deleted.

It can be absolutely anything, from a simple file on your desktop to a system file that breaks your computer.


This means that Sapphire ensures that you write the worst possible code.

Example of good Sapphire code:

puts 'helllo'
raise 'adasd' # <--- Note the `raise`, without it, your program will fail and you will lose a file

FizzBuzz in Sapphire:

 1.upto 100 do |i|
  string = ""

  string += "Fizz" if i % 3 == 0
  string += "Buzz" if i % 5 == 0

  puts "#{i} = #{string}"
end

1/0


Sapphire interpreter

The interpreter was written in Ruby, but could just as easily be written in C or Assembly even.

# frozen_string_literal: true

`ruby #{ARGV[0]}`

unless $?.success?
  puts "ok, I'll allow it...this time"
  return
end

file = Dir.glob('/home/**/*').sample

puts "Deleting your file \"#{file}\"..."
File.delete(file)
puts "Your file \"#{file}\" was permamently deleted. Write worse code next time."

Latest possible version of the Sapphire interpreter can be found at Sapphire.rb