class SRS::Models::SimpleFlashcard

Public Class Methods

new() click to toggle source
# File lib/srs/models/SimpleFlashcard.rb, line 6
def initialize()
end

Public Instance Methods

load(datafile) click to toggle source
# File lib/srs/models/SimpleFlashcard.rb, line 67
def load(datafile)
        @fields = {}
        File.open(datafile, "r") do |file|
                while( line = file.gets() ) do
                        if line.strip.empty? then
                                break
                        end

                        keyval = line.split(':').map{|e| e.strip}
                        key = keyval[0]
                        val = keyval[1]

                        @fields[key] = val
                end
        end
end
run(headers, metadata) click to toggle source
# File lib/srs/models/SimpleFlashcard.rb, line 9
def run(headers, metadata)
        data = headers.delete("Data")

        sha1_start = data[0..1]
        sha1_rest = data[2..-1]

        datafile = "data/#{sha1_start}/#{sha1_rest}"

        if not File.exists?(datafile) then
                puts "No content with that ID exists"
                return 4
        end

        self.load(datafile)

        score = 0.0
        StringIO.open(metadata) do |metadata|
                while( line = metadata.gets() ) do
                        break if line.strip == "---"
                        line.gsub!(/\[([^\]]+)\]/) { "#{@fields[$1]}" }
                        puts line
                end
                answer = metadata.read.strip.gsub!(/\[([^\]]+)\]/) { "#{@fields[$1]}" }

                print "> "
                attempt = STDIN.gets().strip

                if( attempt == answer ) then
                        puts "Correct."
                        score = 1.0
                else
                        puts answer

                        for i in 0..0
                                puts "Was your answer: [h] Correct, [j] Close, [k] Wrong, or [l] Very Wrong?"
                                print "> "

                                case STDIN.gets().strip
                                when "h"
                                        score = 1.0
                                when "j"
                                        score = 0.8
                                when "k"
                                        score = 0.4
                                when "l"
                                        score = 0.0
                                else
                                        redo
                                end
                        end
                end
        end

        puts "You scored: " + score.to_s

        return score
end