Changeset 3533

Show
Ignore:
Timestamp:
12/24/07 16:53:33 (5 years ago)
Author:
ujihisa
Message:

lang/ruby/misc/yhara/new-harizon.rb: DRYize Speaker

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/misc/yhara/new-harizon.rb

    r3528 r3533  
    1717  def voice(context = []) 
    1818    @name 
     19  end 
     20 
     21  def self.curry_new(argument) 
     22    @@argument = argument 
     23    Class.new(Speaker) do 
     24      class << self 
     25        define_method :'new' do 
     26          Speaker.new(@@argument) 
     27        end 
     28      end 
     29    end 
     30  end 
     31end 
     32 
     33class Module 
     34  def const_missing(name) 
     35    Speaker.curry_new(name.to_s) 
    1936  end 
    2037end 
     
    8097end 
    8198 
    82 speakers = [Alex.new, Speaker.new('Vicki')] 
     99speakers = [Alex.new, Vicki.new] 
    83100lesson = 0 
    84101 
     
    132149 
    133150  puts 
    134   puts "EXERCISE" 
    135   `say exercise` 
    136   (1..5).each do |num| 
    137     i = rand(context.size) 
    138     text = context[i] 
    139     context.delete_at i 
     151  unless ARGV.include? '--no-exercise' 
     152    puts "EXERCISE" 
     153    `say exercise` 
     154    (1..5).each do |num| 
     155      i = rand(context.size) 
     156      text = context[i] 
     157      context.delete_at i 
    140158 
    141     `say #{num}`  
    142     puts "#{num}. #{text.words.gsub(/[yhar]/,'_')} #{text.eos}" 
    143     print "   " 
    144     text.say 
     159      `say #{num}`  
     160      puts "#{num}. #{text.words.gsub(/[yhar]/, '_')} #{text.eos}" 
     161      print "   " 
     162      text.say 
    145163 
    146     answer = readline.chomp 
    147     if text.correct?(answer) 
    148       `say y` 
    149     else 
    150       `say hara` 
     164      answer = readline.chomp 
     165      if text.correct?(answer) 
     166        if num == 5 
     167          `say y!` 
     168        else 
     169          `say y` 
     170        end 
     171      else 
     172        `say hara` 
     173      end 
    151174    end 
     175 
     176    sleep 1 
     177    puts 
    152178  end 
    153  
    154   sleep 1 
    155  
    156   puts 
    157179end