Sha256: 9834605fdbc74248be2ab2d226bc2491a07dbc44aace84cc6238d91501528727
Contents?: true
Size: 1.98 KB
Versions: 2
Compression:
Stored size: 1.98 KB
Contents
require 'highline' module Hobo class << self attr_accessor :ui end class Ui attr_accessor :interactive def initialize out = $stdout, error = $stderr colors = HighLine::ColorScheme.new do |cs| cs[:debug] = [ ] cs[:info] = [ ] cs[:warning] = [ :yellow ] cs[:error] = [ :red ] cs[:success] = [ :green ] cs[:opt] = [ :green ] cs[:command] = [:green ] cs[:special] = [ :blue ] cs[:title] = [ :green ] cs[:help_title] = [ :yellow ] cs[:description] = [ :bold ] end HighLine.color_scheme = colors @out = ::HighLine.new $stdin, out @error = ::HighLine.new $stdin, error end def color_scheme scheme = nil HighLine.color_scheme = scheme if scheme HighLine.color_scheme end def ask question, opts = {} unless Hobo.ui.interactive raise Hobo::NonInteractive.new(question) if opts[:default].nil? return opts[:default] end question = "#{question} [#{opts[:default]}]" if opts[:default] question += ": " begin answer = @out.ask(question) do |q| q.validate = opts[:validate] if opts[:validate] q.readline end answer.strip.empty? ? opts[:default] : answer.strip rescue EOFError Hobo.ui.info "" "" end end def separator info "" end def color *args @out.color *args end def debug message say @out, message, :debug end def info message say @out, message, :info end def warning message say @error, message, :warning end def error message say @error, message, :error end def success message say @out, message, :success end def title message say @out, message, :title end private def say channel, message, color return if message.nil? channel.say(color ? channel.color(message, color) : message) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hobo-inviqa-0.0.3 | lib/hobo/ui.rb |
hobo-inviqa-0.0.2 | lib/hobo/ui.rb |