Sha256: 1ac27157a477beea533de8a587fd5695cce6e5b628193ea55bbe339a119013bf

Contents?: true

Size: 1.63 KB

Versions: 5

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

module Pastel
  # A class representing detached color
  class Detached
    # Initialize a detached object
    #
    # @param [Pastel::Color] color
    #   the color instance
    # @param [Array[Symbol]] styles
    #   the styles to be applied
    #
    # @api private
    def initialize(color, *styles)
      @color  = color
      @styles = styles.dup
      freeze
    end

    # Decorate the values corresponding to styles
    #
    # @example
    #   Detached(Color.new, :red, :bold).call("hello")
    #   # => "\e[31mhello\e[0m"
    #
    # @param [String] value
    #   the stirng to decorate with styles
    #
    # @return [String]
    #
    # @api public
    def call(*args)
      value = args.join
      @color.decorate(value, *styles)
    end
    alias [] call

    # @api public
    def to_proc
      self
    end

    # Compare detached objects for equality of attributes
    #
    # @return [Boolean]
    #
    # @api public
    def eql?(other)
      instance_of?(other.class) && styles.eql?(other.styles)
    end

    # Compare detached objects for equivalence of attributes
    #
    # @return [Boolean]
    #
    # @api public
    def ==(other)
      other.is_a?(self.class) && styles == other.styles
    end

    # Inspect this instance attributes
    #
    # @return [String]
    #
    # @api public
    def inspect
      "#<#{self.class.name} styles=#{styles.inspect}>"
    end

    # Hash for this instance and its attributes
    #
    # @return [Numeric]
    #
    # @api public
    def hash
      [self.class, styles].hash
    end

    protected

    # @api private
    attr_reader :styles
  end # Detached
end # Pastel

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
lotrd-0.1.9 vendor/cache/ruby/2.6.0/gems/pastel-0.8.0/lib/pastel/detached.rb
lotrd-0.1.8 vendor/cache/ruby/2.6.0/gems/pastel-0.8.0/lib/pastel/detached.rb
lotrd-0.1.6 vendor/cache/ruby/2.6.0/gems/pastel-0.8.0/lib/pastel/detached.rb
lotrd-0.1.5 vendor/cache/ruby/2.6.0/gems/pastel-0.8.0/lib/pastel/detached.rb
pastel-0.8.0 lib/pastel/detached.rb