lib/alf/command/show.rb in alf-0.10.0 vs lib/alf/command/show.rb in alf-0.10.1

- old
+ new

@@ -2,21 +2,53 @@ module Command class Show < Alf::Command() include Command options do |opt| - @renderer = nil + @renderer_class = nil Renderer.each_renderer do |name,descr,clazz| opt.on("--#{name}", "Render output #{descr}"){ - @renderer = clazz.new + @renderer_class = clazz } end + + @pretty = nil + opt.on("--[no-]pretty", + "Enable/disable pretty print best effort") do |val| + @pretty = val + end + + @ff = nil + opt.on("--ff=FORMAT", + "Specify the floating point format") do |val| + @ff = val + end end - def execute(args) - requester.renderer = (@renderer || requester.renderer || Text::Renderer.new) + def run(argv, requester) + # set requester and parse options + @requester = requester + argv = parse_options(argv, :split) + + # Set options on the requester + requester.pretty = @pretty unless @pretty.nil? + requester.rendering_options[:float_format] = @ff unless @ff.nil? + requester.renderer_class = (@renderer_class || + requester.renderer_class || + Text::Renderer) + + # normalize args + args = argv.first args = [ stdin_reader ] if args.empty? - args.first + chain = args.first + + # put a sorter + if argv[1] + sorter = Alf::Operator::NonRelational::Sort.new(argv[1]) + chain = sorter.pipe(chain, requester.environment) + end + + chain end private def stdin_reader