From: Alex Wayne <alex@beautifulpixel.com>
Date: November 20, 2006 7:15:26 PM CST
To: submission@rubyquiz.com
Subject: Please Forward: Ruby Quiz SubmissionMy first ruby quiz entry, since it seems to be an easy week. Not as complicated as some of the other solutions, but gets the job done without much fuss.
Although I didn't peek, it ended up being very similar to http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/225745, but I would like to think mine is a bit easier to read an understand.
Keep up the great quizzes,
-Alex WayneUsage:
ruby lrb.rb some_fileProgram code:
# Get filename
filename = ARGV.first
filename += '.lrb' unless filename =~ /\.\w+$/# load source
source = File.read(filename)# Initialize variables for loop
inside_block = false
executable_lines =# Process file, line by line
source.each do |line|
# Look for the start of a code block
if !inside_block && line =~ (/^\\begin\{(\w+)\}/)
inside_block = Regexp.last_match[1]
next
end
# Look for the end of a code block, with the same identifier that opened it
if inside_block && line =~ /^\\end\{#{inside_block}\}/
inside_block = false
next
end
if inside_block
# Inside a code block so simply add the lines to the stack
executable_lines << line
else
# Trim off the '>' and add the line to the stack
executable_lines << line.gsub(/^>\s/, '') if line =~ /^>\s/
end
end# Convert array of lines into a single string executable_lines = executable_lines.join("\n")
# Execute the resulting code
eval(executable_lines)
ยทยทยท
Begin forwarded message: