Module: Lolcode::Translator
- Included in:
- VM
- Defined in:
- lib/lolcode/translator.rb
Instance Method Summary collapse
-
#translate(line) ⇒ Object
Translate to Ruby.
Instance Method Details
#translate(line) ⇒ Object
Translate to Ruby
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/lolcode/translator.rb', line 5 def translate(line) line = line.dup line.gsub!(/\bBTW\b/, ' # ') # BTW comments # line.gsub!(/\bOBTW\b/, '\n=begin\n') # multiline comments begin # multiline comments begin line.gsub!(/\bOBTW\b/) do |s| self.block_level += 1 "\n=begin\n" end # multiline comments end line.gsub!(/\bTLDR\b/) do |s| self.block_level -= 1 "\n=end\n" end line.gsub!(/\bVISIBLE\s+([\"\w]+)/) do |s| m = /\bVISIBLE\s+([\"\w]+)/.match s case type_of(m[1]) when :symbol "puts @#{m[1]}" else "puts #{m[1]}" end end line.gsub!(/\bINVISIBLE\s+([\"\w]+)/) do |s| m = /\bINVISIBLE\s+([\"\w]+)/.match s case type_of(m[1]) when :symbol "warn @#{m[1]}" else "warn #{m[1]}" end end # Varible assignment line.gsub!(/\bI\s+HAS\s+A\s+(\w+)\s+ITZ\s+([\"\w]+)/) do |s| m = /\bI\s+HAS\s+A\s+(\w+)\s+ITZ\s+([\"\w]+)/.match s case type_of(m[2]) when :symbol "@#{m[1]} = @#{m[2]}" else "@#{m[1]} = #{m[2]}" end end line.gsub!(/\bI\s+HAS\s+A\s+(\w+)/, '@\1 = nil') # TODO: Library line.gsub!(/\bCAN\s+HAS\s+(\w+)/, '# require \'\1\'') return line end |