[macruby-changes] [4677] DietRB/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Oct 8 03:58:19 PDT 2010


Revision: 4677
          http://trac.macosforge.org/projects/ruby/changeset/4677
Author:   eloy.de.enige at gmail.com
Date:     2010-10-08 03:58:18 -0700 (Fri, 08 Oct 2010)
Log Message:
-----------
Add IRB::ColoredFormatter#color_scheme= which allows you to change scheme, which are now default and fresh from Wirble.

Some cleanups.

From: Eloy Duran <eloy.de.enige at gmail.com>

Modified Paths:
--------------
    DietRB/trunk/lib/irb/ext/colorize.rb
    DietRB/trunk/lib/irb/formatter.rb
    DietRB/trunk/spec/colorize_spec.rb

Modified: DietRB/trunk/lib/irb/ext/colorize.rb
===================================================================
--- DietRB/trunk/lib/irb/ext/colorize.rb	2010-10-08 10:58:08 UTC (rev 4676)
+++ DietRB/trunk/lib/irb/ext/colorize.rb	2010-10-08 10:58:18 UTC (rev 4677)
@@ -27,78 +27,73 @@
       #
       # Return the escape code for a given color.
       #
-      def self.escape(key)
-        COLORS.key?(key) && "\e[#{COLORS[key]}m"
+      def self.escape(name)
+        COLORS.key?(name) && "\e[#{COLORS[name]}m"
       end
       
       CLEAR = escape(:nothing)
     end
     
-    #
-    # Default Wirble color scheme.
-    # 
-    DEFAULT_COLOR_SCHEME = {
-      :prompt             => :green,
-      :result_prefix      => :light_purple,
-      
-      # delimiter colors
-      :on_comma           => :blue,
-      :on_op              => :blue,
-      
-      # container colors (hash and array)
-      :on_lbrace          => :green,
-      :on_rbrace          => :green,
-      :on_lbracket        => :green,
-      :on_rbracket        => :green,
-      
-      # symbol colors
-      :on_ident           => :yellow, # hmm ident...
-      :on_symbeg          => :yellow,
-      
-      # string colors
-      :on_tstring_beg     => :red,
-      :on_tstring_content => :cyan,
-      :on_tstring_end     => :red,
-      
-      # misc colors
-      :on_int             => :cyan,
-      :keyword            => :green,
-      :on_const           => :light_green,
-      
-      # object colors
-      # :open_object        => :light_red,
-      # :object_class       => :white,
-      # :object_addr_prefix => :blue,
-      # :object_line_prefix => :blue,
-      # :close_object       => :light_red,
+    COLOR_SCHEMES = {
+      :default => {
+        # :prompt             => :green,
+        # :result_prefix      => :light_purple,
+        
+        # delimiter colors
+        :on_comma           => :blue,
+        :on_op              => :blue,
+        
+        # container colors (hash and array)
+        :on_lbrace          => :green,
+        :on_rbrace          => :green,
+        :on_lbracket        => :green,
+        :on_rbracket        => :green,
+        
+        # symbol colors
+        :on_ident           => :yellow, # hmm ident...
+        :on_symbeg          => :yellow,
+        
+        # string colors
+        :on_tstring_beg     => :red,
+        :on_tstring_content => :cyan,
+        :on_tstring_end     => :red,
+        
+        # misc colors
+        :on_int             => :cyan,
+        :on_kw              => :yellow,
+        :on_const           => :light_green
+      },
+      :fresh => {
+        :prompt             => :green,
+        :result_prefix      => :light_purple,
+        
+        :on_comma           => :red,
+        :on_op              => :red,
+        
+        :on_lbrace          => :blue,
+        :on_rbrace          => :blue,
+        :on_lbracket        => :green,
+        :on_rbracket        => :green,
+        
+        :on_ident           => :yellow,
+        :on_symbeg          => :yellow,
+        
+        :on_int             => :cyan,
+        :on_tstring_content => :cyan,
+        :on_kw              => :white,
+      }
     }
     
-    #
-    # Fruity testing colors.
-    # 
-    TESTING_COLOR_SCHEME = {
-      :comma            => :red,
-      :refers           => :red,
-      :open_hash        => :blue,
-      :close_hash       => :blue,
-      :open_array       => :green,
-      :close_array      => :green,
-      :open_object      => :light_red,
-      :object_class     => :light_green,
-      :object_addr      => :purple,
-      :object_line      => :light_purple,
-      :close_object     => :light_red,
-      :symbol           => :yellow,
-      :symbol_prefix    => :yellow,
-      :number           => :cyan,
-      :string           => :cyan,
-      :keyword          => :white,
-    }
+    attr_reader :colors, :color_scheme
     
-    attr_reader :colors
+    def initialize
+      super
+      self.color_scheme = :default
+    end
     
-    def colors
-      @colors ||= {}.update(DEFAULT_COLOR_SCHEME)
+    def color_scheme=(scheme)
+      @colors = COLOR_SCHEMES[scheme].dup
+      @color_scheme = scheme
     end
     
     def colorize_token(type, token)
@@ -118,7 +113,7 @@
     end
     
     def result_prefix
-      colorize_token(:result_prefix, "=>")
+      colorize_token(:result_prefix, Formatter::RESULT_PREFIX)
     end
     
     def result(object)

Modified: DietRB/trunk/lib/irb/formatter.rb
===================================================================
--- DietRB/trunk/lib/irb/formatter.rb	2010-10-08 10:58:08 UTC (rev 4676)
+++ DietRB/trunk/lib/irb/formatter.rb	2010-10-08 10:58:18 UTC (rev 4677)
@@ -7,6 +7,7 @@
     DEFAULT_PROMPT = "irb(%s):%03d:%d> "
     SIMPLE_PROMPT  = ">> "
     NO_PROMPT      = ""
+    RESULT_PREFIX  = "=>"
     SYNTAX_ERROR   = "SyntaxError: compile error\n(irb):%d: %s"
     SOURCE_ROOT    = /^#{File.expand_path('../../../', __FILE__)}/
     
@@ -32,7 +33,7 @@
     end
     
     def result(object)
-      "=> #{inspect_object(object)}"
+      "#{RESULT_PREFIX} #{inspect_object(object)}"
     end
     
     def syntax_error(line, message)

Modified: DietRB/trunk/spec/colorize_spec.rb
===================================================================
--- DietRB/trunk/spec/colorize_spec.rb	2010-10-08 10:58:08 UTC (rev 4676)
+++ DietRB/trunk/spec/colorize_spec.rb	2010-10-08 10:58:18 UTC (rev 4677)
@@ -6,7 +6,6 @@
 describe "IRB::ColoredFormatter" do
   before do
     @formatter = IRB::ColoredFormatter.new
-    @formatter.colors.delete(:result_prefix)
     @context = IRB::Context.new(main)
   end
   
@@ -41,4 +40,14 @@
     @formatter.colors[:result_prefix] = :light_red
     @formatter.result("").should == "\e[1;31m=>\e[0;0m \e[0;31m\"\e[0;0m\e[0;31m\"\e[0;0m"
   end
+  
+  it "uses the default color scheme by default" do
+    @formatter.color_scheme.should == :default
+  end
+  
+  it "changes color scheme" do
+    @formatter.color_scheme = :fresh
+    @formatter.color_scheme.should == :fresh
+    @formatter.colors[:result_prefix].should == :light_purple
+  end
 end
\ No newline at end of file
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101008/b94f4f1b/attachment.html>


More information about the macruby-changes mailing list