Sha256: 9c504ebaa84bcf64991728630e80b54a22952b0206260c0befbd0dcc030c0914

Contents?: true

Size: 793 Bytes

Versions: 3

Compression:

Stored size: 793 Bytes

Contents

# -*- coding: utf-8 -*-

require 'gren/common/string_snip'

class GrenSnip
  MAX_LINE_SIZE = 256
  HEADER_SIZE = 32
  MARGIN_SIZE = 32
  DELIMITER = '<<snip>>'

  def self.snip(str, match_datas)
    return str if (str.size <= MAX_LINE_SIZE)

    ranges = []
    ranges << (0..HEADER_SIZE-1)
    ranges << (-HEADER_SIZE..-1)

    match_datas.each do |m|
      ranges << (m.begin(0)-MARGIN_SIZE..m.end(0)+MARGIN_SIZE)
    end

    snipper = StringSnip.new(MAX_LINE_SIZE, DELIMITER)
    return snipper.snip(str, ranges)
  end

  def self.coloring(line, match_datas)
    match_datas.each do |m|
      line = line.split(m[0]).join(HighLine::ON_GREEN + m[0] + HighLine::CLEAR)
    end
    
    line = line.split(DELIMITER).join(HighLine::ON_CYAN + DELIMITER + HighLine::CLEAR)

    line
  end
end


Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gren-1.0.2 lib/gren/common/grensnip.rb
gren-1.0.1 lib/gren/common/grensnip.rb
gren-1.0.0 lib/gren/common/grensnip.rb