1 2 3 4 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 |
self[ ( self ) ] end end str, sleeptime=0 $stdout str $stdout sleep sleeptime unless sleeptime end text = ARGV(" ") + " " so_far = "" text do |i| lower = ?\s upper = ?\z loop do b = text[ i ] c = [*lower..upper] out c, 0.1 out "\010" lower = c if c < b upper = c if c > b next unless c == b out "\010" * so_far out so_far so_far << c break end end |

