Sha256: ea27b07bd55a35d246faa7c703de993edb3a3d66ebe290e03efdd4d14a77ba4a

Contents?: true

Size: 1.35 KB

Versions: 18

Compression:

Stored size: 1.35 KB

Contents

module XCPretty
  module ANSI
    
    attr_accessor :colorize

    FORMATTED_MATCHER = %r{\e\[(\d+)[;]?(\d+)?m(.*)\e\[0m}

    EFFECT = {
      :reset     => '0',
      :bold      => '1',
      :underline => '4'
    }

    COLORS = {
      :black  => '30',
      :red    => '31',
      :green  => '32',
      :yellow => '33',
      :blue   => '34',
      :cyan   => '36',
      :white  => '37',
      :plain  => '39'
    }

    def colorize?
      !!@colorize
    end

    def white(text)
      ansi_parse(text, :plain, :bold)
    end

    def red(text)
      ansi_parse(text, :red)
    end

    def green(text)
      ansi_parse(text, :green, :bold)
    end

    def cyan(text)
      ansi_parse(text, :cyan)
    end

    def yellow(text)
      ansi_parse(text, :yellow)
    end

    def applied_effects(text)
      effects = []
      if text =~ FORMATTED_MATCHER
        colors = COLORS.invert[$1]
        effect = EFFECT.invert[$2]
        effects << colors if colors
        effects << effect if effect
      end
      effects
    end

    def strip(text)
      text =~ FORMATTED_MATCHER ? $3 : text
    end

    def ansi_parse(text, color, effect=nil)
      return text unless colorize?
      colors_code = COLORS[color]  || ''
      effect_code = EFFECT[effect] ? ';' + EFFECT[effect] : ''
      "\e[#{colors_code}#{effect_code}m#{text}\e[#{EFFECT[:reset]}m"
    end
  end
end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
learn-xcpretty-0.1.12 lib/xcpretty/ansi.rb
xcpretty-0.1.12 lib/xcpretty/ansi.rb
xcpretty-0.1.11 lib/xcpretty/ansi.rb
xcpretty-0.1.10 lib/xcpretty/ansi.rb
learn-xcpretty-0.1.11 lib/xcpretty/ansi.rb
xcpretty-0.1.9 lib/xcpretty/ansi.rb
xcpretty-0.1.8 lib/xcpretty/ansi.rb
xcpretty-0.1.7 lib/xcpretty/ansi.rb
xcpretty-0.1.6 lib/xcpretty/ansi.rb
xcpretty-0.1.5 lib/xcpretty/ansi.rb
xcpretty-0.1.4 lib/xcpretty/ansi.rb
xcpretty-0.1.3 lib/xcpretty/ansi.rb
xcpretty-0.1.2 lib/xcpretty/ansi.rb
xcpretty-0.1.1 lib/xcpretty/ansi.rb
xcpretty-0.1.0 lib/xcpretty/ansi.rb
xcpretty-0.0.9 lib/xcpretty/ansi.rb
xcpretty-0.0.8 lib/xcpretty/ansi.rb
xcpretty-0.0.7 lib/xcpretty/ansi.rb