[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Fwd: Please Forward: Ruby Quiz Submission

James Gray

11/21/2006 1:48:00 AM

Begin forwarded message:

> From: Alex Wayne <alex@beautifulpixel.com>
> Date: November 20, 2006 7:15:26 PM CST
> To: submission@rubyquiz.com
> Subject: Please Forward: Ruby Quiz Submission
>
> My 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 Wayne
>
>
>
> Usage:
> ruby lrb.rb some_file
>
> Program 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)