Sha256: 9090af1bc6d7a82efcb740d9749b098f7bf8f8b2bbeb88a829e8a3478084e78a

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require_relative 'difference'
require_relative '../ui/color'

module GitCrecord
  module Diff
    class Line < Difference
      attr_reader :selected

      def initialize(line)
        @line = line
        @selected = true
        super()
      end

      def to_s
        @to_s ||= @line.include?("\t") ? @line.gsub(/\t/, Git.tab) : @line
      end

      def x_offset
        6
      end

      def add?
        @line.start_with?('+')
      end

      def del?
        @line.start_with?('-')
      end

      def selectable?
        add? || del?
      end

      def selected=(value)
        @selected = selectable? ? value : selected
      end

      def expanded
        false
      end

      def generate_diff
        return " #{@line[1..-1]}" if !selected && del?
        return @line if selected
        nil
      end

      def style(is_highlighted)
        return UI::Color.hl if is_highlighted
        return UI::Color.green if add?
        return UI::Color.red if del?
        UI::Color.normal
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
git-crecord-1.0.5 lib/git_crecord/diff/line.rb