This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.

Generating a Succession of Strings
CodeExpectedActual
('aa'..'ag').each { |x| puts x }
aa
ab
ac
ad
ae
af
ag
aa
ab
ac
ad
ae
af
ag
def endless_string_succession(start)
  while true
    yield start 
    start = start.succ
  end
end
endless_string_succession('fol') do |x|
  puts x
  break if x[-1] == x[-2]    
end
fol
fom
fon
foo
fol
fom
fon
foo
'89999'.succ
"90000" "90000"
'nzzzz'.succ
"oaaaa" "oaaaa"
'Zzz'.succ
"AAaa" "AAaa"
'z'.succ
"aa" "aa"
'aa'.succ
"ab" "ab"
'zz'.succ
"aaa" "aaa"
'AA'.succ
"AB" "AB"
'AZ'.succ
"BA" "BA"
'ZZ'.succ
"AAA" "AAA"
'aZ'.succ
"bA" "bA"
'Zz'.succ
"AAa" "AAa"
'foo19'.succ
"foo20" "foo20"
'foo99'.succ
"fop00" "fop00"
'99'.succ
"100" "100"
'9Z99'.succ
"10A00" "10A00"
'10-99'.succ
"11-00" "11-00"
'a-a'.succ
"a-b" "a-b"
'z-z'.succ
"aa-a" "aa-a"
'Hello!'.succ
"Hellp!" "Hellp!"
%q{'zz'}.succ
"'aaa'" "'aaa'"
%q{z'zz'}.succ
"aa'aa'" "aa'aa'"
'$$$$'.succ
"$$$%" "$$$%"
s = '!@-'
13.times { puts s = s.succ }
!@.
!@/
!@0
!@1
!@2
...
!@8
!@9
!@10
!@.
!@/
!@0
!@1
!@2
!@3
!@4
!@5
!@6
!@7
!@8
!@9
!@10
("a".."e").to_a.reverse_each { |x| puts x }
e
d
c
b
a
e
d
c
b
a