Sha256: f638a5b7b9a87c220e22f0894e730bb769f8521aff75635d71d51cfbfda79a67

Contents?: true

Size: 1.66 KB

Versions: 17

Compression:

Stored size: 1.66 KB

Contents

# 对Compare信息进行处理
module Aio::Text
  class Compare

    attr_accessor :cmd

    # 比较和被比较的差异值
    def initialize
      @cmd = {}
    end

    # 以每个cmd分类比较信息
    def <<(info)
      cmd_name = info[:e].shift
      
      cmd[cmd_name] ||= CompareDiff.new
      cmd[cmd_name] << info
    end

    def clear
      @cmd = {}
    end

    def size
      res = 0
      cmd.values do |cd|
        res += cd.size
      end
      res
    end

    def empty?
      cmd.empty?
    end

    def each_cmd_with_diff
      @cmd.each_pair do |c, e|
        yield c, e
      end
    end
  end

  class CompareDiff

    # cm1 = [ MatchStringInfo_A, MatchStringInfo_A, .. ]
    attr_accessor :cm1, :cm2

    def initialize
      @cm1 = []
      @cm2 = []
    end

    # info #=> { :cm => :cm1, :e => [cmd, key, match_string_info] }
    def <<(info)
      case info[:cm]
      when :cm1
        @cm1 << info[:e].pop
      when :cm2
        @cm2 << info[:e].pop
      end
    end

    # 两个文本集合
    def content_muster
      { cm1: content, cm2: compare_content }
    end

    # 文本
    def content
      return [""] if cm1.first.nil?
      cm1.first.content
    end

    # 比较的文本 
    def content_compare
      return [""] if cm2.first.nil?
      cm2.first.content
    end

    def size
      cm1.size
    end

    def lines
      res = []
      cm1.each do |e|
        res << e.line
      end

      res.uniq
    end

    def lines_compare
      res = []
      cm2.each do |e|
        res << e.line
      end

      res.uniq
    end

    # 所有不同行的集合
    def lines_muster
      { cm1: lines, cm2: lines_compare }
    end

  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
aio_elin-1.1.8 lib/aio/core/text/compare.rb
aio_elin-1.1.7 lib/aio/core/text/compare.rb
aio_elin-1.1.4 lib/aio/core/text/compare.rb
aio_elin-1.1.3 lib/aio/core/text/compare.rb
aio_elin-1.1.2 lib/aio/core/text/compare.rb
aio_elin-1.1.1 lib/aio/core/text/compare.rb
aio_elin-1.1.0 lib/aio/core/text/compare.rb
aio_elin-1.0.9 lib/aio/core/text/compare.rb
aio_elin-1.0.8 lib/aio/core/text/compare.rb
aio_elin-1.0.7 lib/aio/core/text/compare.rb
aio_elin-1.0.6 lib/aio/core/text/compare.rb
aio_elin-1.0.5 lib/aio/core/text/compare.rb
aio_elin-1.0.4 lib/aio/core/text/compare.rb
aio_elin-1.0.3 lib/aio/core/text/compare.rb
aio_elin-1.0.2 lib/aio/core/text/compare.rb
aio_elin-1.0.1 lib/aio/core/text/compare.rb
aio_elin-1.0.0 lib/aio/core/text/compare.rb