Index: bin/Formatter.rb =================================================================== --- bin/Formatter.rb (revision 817883) +++ bin/Formatter.rb (working copy) @@ -2,12 +2,20 @@ module Formatter # Base abstract class for results formatting. class Formatter + def is_kernel?(obj) + obj.kind_of?(Module) and obj.name == "Kernel" + end + # Takes an output stream and a print width. - def initialize(o, w = 100) - raise TypeError.new("Type %s of parameter %s is not IO" % [o.class, o]) \ - unless o.instance_of? IO - @out = o - @maxWidth = w + def initialize(opts={}) + defaults = {:output_stream => Kernel, :format_width => 100} + options = defaults.merge(opts) + + @out = options[:output_stream] + raise TypeError.new("Type %s of parameter %s is not IO" % [@out.class, @out]) \ + unless @out.instance_of? IO or is_kernel?(@out) + + @maxWidth = options[:format_width] @rowCount = 0 end @@ -27,7 +35,7 @@ end if args.class == String output(@maxWidth, args) - puts + @out.puts return end # TODO: Look at the type. Is it RowResult? @@ -35,7 +43,7 @@ splits = split(@maxWidth, dump(args[0])) for l in splits output(@maxWidth, l) - puts + @out.puts end elsif args.length == 2 col1width = (not widths or widths.length == 0) ? @maxWidth / 4 : @maxWidth * widths[0] / 100 @@ -57,7 +65,7 @@ @out.print(" ") output(col2width, splits2[index]) index += 1 - puts + @out.puts end else # Print a space to set off multi-column rows Index: bin/hirb.rb =================================================================== --- bin/hirb.rb (revision 817883) +++ bin/hirb.rb (working copy) @@ -71,7 +71,8 @@ ARGV.delete(arg) end # Presume console format. -@formatter = Formatter::Console.new(STDOUT, format_width) +# Formatter takes an :output_stream parameter, if you don't want STDOUT. +@formatter = Formatter::Console.new(:format_width => format_width) # TODO, etc. @formatter = Formatter::XHTML.new(STDOUT) # Setup the HBase module. Create a configuration. @@ -100,9 +101,6 @@ promoteConstants(org.apache.hadoop.hbase.HTableDescriptor.constants) promoteConstants(HBase.constants) -# If script2run, try running it. Will go on to run the shell unless -# script calls 'exit' or 'exit 0' or 'exit errcode'. -load(script2run) if script2run # Start of the hbase shell commands. @@ -428,6 +426,12 @@ admin().split(tableNameOrRegionName) end + +# If script2run, try running it. Will go on to run the shell unless +# script calls 'exit' or 'exit 0' or 'exit errcode'. +load(script2run) if script2run + + # Output a banner message that tells users where to go for help puts <' for list of supported commands.