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

- old
+ new

@@ -51,28 +51,32 @@ # The reader to use when stdin is used as operand attr_accessor :stdin_reader # Output renderer - attr_accessor :renderer - + attr_accessor :renderer_class + + # Rendering options + attr_reader :rendering_options + # Creates a command instance def initialize(env = Environment.default) @environment = env + @rendering_options = {} end # Install options options do |opt| @execute = false opt.on("-e", "--execute", "Execute one line of script (Lispy API)") do @execute = true end - @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 opt.on('--env=ENV', "Set the environment to use") do |value| @@ -95,10 +99,15 @@ opt.on('-rlibrary', "Require the library, before executing alf") do |value| require(value) end + opt.on("--[no-]pretty", + "Enable/disable pretty print best effort") do |val| + self.pretty = val + end + opt.on_tail('-h', "--help", "Show help") do raise Quickl::Help end opt.on_tail('-v', "--version", "Show version") do @@ -132,14 +141,37 @@ end # 3) if there is a requester, then we do the job (assuming bin/alf) # with the renderer to use. Otherwise, we simply return built operator if operator && requester - renderer = self.renderer ||= Renderer::Rash.new + renderer_class = self.renderer_class ||= Renderer::Rash + renderer = renderer_class.new(rendering_options) renderer.pipe(operator, environment).execute($stdout) else operator end + end + + # + # Returns rendering options + # + def pretty=(val) + @rendering_options[:pretty] = val + if val && (hl = highline) + @rendering_options[:trim_at] = hl.output_cols + @rendering_options[:page_at] = hl.output_rows + end + val + end + + # + # Returns a highline instance + # + def highline + require 'highline' + HighLine.new($stdin, $stdout) + rescue LoadError => ex + nil end end # class Main end # module Command end # module Alf