Fix up Rubinius specific library specs.
[rbx.git] / lib / irb / output-method.rb
blob8a20c8d2f9f782da62929530ce635a5a06fc88ab
2 #   output-method.rb - optput methods used by irb 
3 #       $Release Version: 0.9.5$
4 #       $Revision: 11708 $
5 #       $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
6 #       by Keiju ISHITSUKA(keiju@ruby-lang.org)
8 # --
10 #   
13 require "e2mmap"
15 module IRB
16   # OutputMethod
17   #   StdioOutputMethod
19   class OutputMethod
20     @RCS_ID='-$Id: output-method.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
22     def print(*opts)
23       IRB.fail NotImplementError, "print"
24     end
26     def printn(*opts)
27       print opts.join(" "), "\n"
28     end
30     # extend printf
31     def printf(format, *opts)
32       if /(%*)%I/ =~ format
33         format, opts = parse_printf_format(format, opts)
34       end
35       print sprintf(format, *opts)
36     end
38     # %
39     # <¥Õ¥é¥°>  [#0- +]
40     # <ºÇ¾®¥Õ¥£¡¼¥ë¥ÉÉý> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
41     # <ÀºÅÙ>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
42     # #<Ťµ½¤ÀµÊ¸»ú>(hh|h|l|ll|L|q|j|z|t)
43     # <ÊÑ´¹½¤ÀµÊ¸»ú>[diouxXeEfgGcsb%] 
44     def parse_printf_format(format, opts)
45       return format, opts if $1.size % 2 == 1
46     end
48     def puts(*objs)
49       for obj in objs
50         print(*obj)
51         print "\n"
52       end
53     end
55     def pp(*objs)
56       puts(*objs.collect{|obj| obj.inspect})
57     end
59     def ppx(prefix, *objs)
60       puts(*objs.collect{|obj| prefix+obj.inspect})
61     end
63   end
65   class StdioOutputMethod<OutputMethod
66     def print(*opts)
67       STDOUT.print(*opts)
68     end
69   end
70 end