Initial import
[ruby-io-mixins.git] / test / rot13_filter.rb
1 require 'io/mixins'
2
3 class Rot13Filter
4   include IO::Readable
5   include IO::Writable
6   include IO::Seekable
7   extend  IO::Openable
8
9   def initialize(ios)
10     @ios = ios
11   end
12
13   def sysread(length)
14     rot13(@ios.sysread(length))
15   end
16   def syswrite(string)
17     @ios.syswrite(rot13(string))
18   end
19   def sysseek(*args)
20     if @ios.respond_to?(:sysseek)
21       @ios.sysseek(*args)
22     else
23       # StringIO is missing sysseek
24       @ios.seek(*args)
25       @ios.tell
26     end
27   end
28   def close_read()  @ios.close_read  end
29   def close_write() @ios.close_write end
30   def close()       @ios.close       end
31
32   private
33   def rot13(string)
34     string.tr("A-Za-z","N-ZA-Mn-za-m")
35   end
36 end
37