From: kazuyoshi tlacaelel Date: Fri, 2 Mar 2012 21:11:54 +0000 (-0600) Subject: initial X-Git-Url: https://git.r.bdr.sh/rbdr/cologne/commitdiff_plain/9db887a8c8036f19337719b6e4e581d22eab79a4?ds=inline;hp=2d483d86519423a7834a6c8a4d1ae68a95f1f967 initial --- diff --git a/Rakefile b/Rakefile index fc46068..bfac738 100644 --- a/Rakefile +++ b/Rakefile @@ -4,18 +4,18 @@ require 'rake' begin require 'jeweler' Jeweler::Tasks.new do |gem| - gem.name = "cobalt" - gem.summary = %Q{TODO: one-line summary of your gem} - gem.description = %Q{TODO: longer description of your gem} - gem.email = "kazu.dev@gmail.com" - gem.homepage = "http://github.com/ktlacaelel/cobalt" - gem.authors = ["kazuyoshi tlacaelel"] - gem.add_development_dependency "thoughtbot-shoulda", ">= 0" - # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings + gem.name = 'cobalt' + gem.summary = %Q{Console for ruby.} + gem.description = %Q{Colored, Nesting, Multiple logging management.} + gem.email = 'kazu.dev@gmail.com' + gem.homepage = 'http://github.com/ktlacaelel/cobalt' + gem.authors = ['Fernando Trasviña', 'Pablo Antonio Gonzalez Cervantes', 'kazuyoshi tlacaelel'] + gem.add_development_dependency 'thoughtbot-shoulda', '>= 0' + gem.add_development_dependency 'isna', '>= 0' end Jeweler::GemcutterTasks.new rescue LoadError - puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler" + puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler' end require 'rake/testtask' @@ -34,7 +34,7 @@ begin end rescue LoadError task :rcov do - abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov" + abort 'RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov' end end @@ -44,7 +44,7 @@ task :default => :test require 'rake/rdoctask' Rake::RDocTask.new do |rdoc| - version = File.exist?('VERSION') ? File.read('VERSION') : "" + version = File.exist?('VERSION') ? File.read('VERSION') : '' rdoc.rdoc_dir = 'rdoc' rdoc.title = "cobalt #{version}" diff --git a/VERSION b/VERSION index 77d6f4c..8acdd82 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.0 +0.0.1 diff --git a/lib/cobalt.rb b/lib/cobalt.rb index e69de29..a85409f 100644 --- a/lib/cobalt.rb +++ b/lib/cobalt.rb @@ -0,0 +1,117 @@ +require 'rubygems' +require 'isna' +require 'logger' + +module Cobalt + + class Console + + attr_accessor :keep_in_buffer, :separator_length + + def initialize( options = {} ) + @indent = 0 + @loggers = options[:loggers] || [::Logger.new(STDOUT)] + @keep_in_buffer = false + @temporal_buffer = [] + @separator_length = 120 + @color = :white + end + + def add_logger logger + @loggers << logger + end + + def remove_logger logger + @loggers = @loggers - [logger] + end + + def release_buffer + @keep_in_buffer = false + @temporal_buffer.each do |line| + @loggers.each { |logger| logger.info(line) } + end + @temporal_buffer = [] + nil + end + + def log(*objects) + objects.each do |object| + + the_string = object.to_s + the_string = the_string.to_ansi.send(@color).to_s + the_string = the_string.gsub(/^/, ' ' * @indent) + + @loggers.each do |logger| + if @keep_in_buffer + @temporal_buffer << the_string + next + end + logger.info the_string + end + + end + self + end + + def pp(*objects) + dump = "" + if objects.size > 1 + PP.pp(objects, dump) + else + PP.pp(objects.first, dump) + end + log(dump) + end + + def notice(*objects) + color(:cyan) { log(*objects) } + end + + def warn(*objects) + color(:yellow) { log(*objects) } + end + + def error(*objects) + color(:red) { log(*objects) } + end + + def separator(type = '-') + log((type * (@separator_length - @indent))) + end + + def space(lines = 1) + lines.times { self.log('') } + self + end + + def indent + if block_given? + @indent = @indent + 2 + yield + @indent = @indent - 2 + else + @indent = @indent + 2 + end + self + end + + def outdent + @indent = @indent - 2 + self + end + + def color(symbol) + if block_given? + old = @color + @color = symbol + yield + @color = old + else + @color = symbol + end + self + end + + end + +end